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).