4. Introduction d’une nouvelle loi non-linéaire#
Une structure de données temporaire sd_nl a été créée afin de pouvoir stocker tous les paramètres nécessaires au calcul.
Plusieurs utilitaires sont mis à disposition:
nlinivec: permet d’initialiser un vecteur à zéro
nlsav: permet de stocker les paramètres de calcul dans la structure de données sd_nl
nlget: permet de récupérer les informations stockées dans sd_nl
togene: projection d’un vecteur sur base réduite
tophys: expansion d’un vecteur généralisé sur base physique
tophys_ms: expansion sur base physique avec prise en compte du mouvement d’entrainement (calcul multi-appui)
Pour introduire une nouvelle loi non-linéaire, le développeur n’a donc besoin que d’écrire la routine de préparation des données: dtmprep_noli_newf .F90 et celle qui réalise le calcul et l’archivage des variables internes: dtmforc_newf .F90 (sans oublier d’écrire les fichiers d’interface dtmprep_noli_newf .h et dtmforc_newf .h).
Par exemple pour la définition de la relation effort – déplacement (RELA_EFFO_DEPL), on a seulement besoin de dtmprep_noli_rede.F90 et de dtmforc_rede.F90. On peut s’en inspirer pour l’écriture d’une nouvelle loi.
On met ensuite à jour:
le fichier nldef.h pour la définition de la non-linéarité – associer un entier au type de la non-linéarité (NL_NEWF ) et définir à priori le nombre de variables internes à stocker (NBVARINT _NEWF ),
le fichier nlinc.h pour la définition des paramètres de calcul (dans le cas où l’ajout de nouveaux paramètres dans la sd_nl s’avère nécessaire),
le catalogue de commande dyna_vibra.capy (mot clé COMPORTEMENT/RELATION).