From c89ecd8c745db0d82404ab36325e66d3b4e11920 Mon Sep 17 00:00:00 2001 From: rio <> Date: Fri, 10 Feb 2017 17:43:48 +0000 Subject: [PATCH] =?UTF-8?q?mise=20en=20place=20d'un=20test=20sur=20les=20f?= =?UTF-8?q?onctions=20nD=20combin=C3=A9es.=20Comparaison=20avec=20les=20fo?= =?UTF-8?q?rmules=20analytiques.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Test_R_Fonc_scal_combinees_nD/README | 40 ++++ .../Test_R_Fonc_scal_combinees_nD/barre.her | 61 ++++++ .../fct_nD.CVisu1 | 138 +++++++++++++ .../Test_R_Fonc_scal_combinees_nD/fct_nD.info | 182 ++++++++++++++++++ .../fct_nD_princ.maple.ref1 | 101 ++++++++++ .../fonction.pdf | Bin 0 -> 25461 bytes 6 files changed, 522 insertions(+) create mode 100644 Batterie/FONCTION_UNIQUE/FONCTIONS_ET_COURBES/Test_R_Fonc_scal_combinees_nD/README create mode 100644 Batterie/FONCTION_UNIQUE/FONCTIONS_ET_COURBES/Test_R_Fonc_scal_combinees_nD/barre.her create mode 100644 Batterie/FONCTION_UNIQUE/FONCTIONS_ET_COURBES/Test_R_Fonc_scal_combinees_nD/fct_nD.CVisu1 create mode 100644 Batterie/FONCTION_UNIQUE/FONCTIONS_ET_COURBES/Test_R_Fonc_scal_combinees_nD/fct_nD.info create mode 100644 Batterie/FONCTION_UNIQUE/FONCTIONS_ET_COURBES/Test_R_Fonc_scal_combinees_nD/fct_nD_princ.maple.ref1 create mode 100644 Batterie/FONCTION_UNIQUE/FONCTIONS_ET_COURBES/Test_R_Fonc_scal_combinees_nD/fonction.pdf diff --git a/Batterie/FONCTION_UNIQUE/FONCTIONS_ET_COURBES/Test_R_Fonc_scal_combinees_nD/README b/Batterie/FONCTION_UNIQUE/FONCTIONS_ET_COURBES/Test_R_Fonc_scal_combinees_nD/README new file mode 100644 index 0000000..d75dd99 --- /dev/null +++ b/Batterie/FONCTION_UNIQUE/FONCTIONS_ET_COURBES/Test_R_Fonc_scal_combinees_nD/README @@ -0,0 +1,40 @@ +------------------------------------------------------ +Auteur +------------------------------------------------------ +Gerard Rio (gerard.rio@univ-ubs.fr) + +------------------------------------------------------ +Mots-cles +------------------------------------------------------ +FONC_SCAL_COMBINEES_ND +COURBE_EXPRESSION_LITTERALE_1D +FONCTION_COURBE1D +temps_courant + + +------------------------------------------------------------ +But du test +------------------------------------------------------------ +Test de bon fonctionnement : vérification du fonctionnement d'une fonction utilisateur complexe correspond à un ensemble de fonctions de base combinées dans une expression analytique globale de type FONC_SCAL_COMBINEES_ND. + +TYPE_DE_CALCUL +non_dynamique + +------------------------------------------------------------ +Description du calcul +------------------------------------------------------------ +Le calcul s'effectue ici en 1D. Le maillage est constitué d'une seule barre dont une extrémité est bloquée et l'autre chargée. +Le chargement s'effectue à l'aide d'une fonction nD de type "FONC_SCAL_COMBINEES_ND" dépendante du temps courant. +La fonction combinée correspond à : fct= temps_courant * f_1 + exp(-temps_courant) * f_2 + 0.5*f_3 +où : + f_1(temps_courant) = une courbe poly-linéaire simple (une droite) + f_2(temps_cournat) = une FONCTION_COURBE1D qui correspond à : f(x)= (sin(1.5708*x)) + f_3(temps_cournat) = une FONCTION_COURBE1D qui correspond à : f(x)= (sin(1.5708*x))^4 + + +\figures: fonction.pdf \legende: Évolution de la réaction au noeud bloqué c'est-à-dire - le chargement, en fonction du temps. On compare le résultat calculé par Herezh avec la solution théorique calculée par une expression analytique \fin_legende + +------------------------------------------------------------ +Grandeurs de comparaison +------------------------------------------------------------ +On vérifie le déplacement du noeud chargé pour un incrément arbitraire, ainsi que la contrainte, la déformation et la réaction. diff --git a/Batterie/FONCTION_UNIQUE/FONCTIONS_ET_COURBES/Test_R_Fonc_scal_combinees_nD/barre.her b/Batterie/FONCTION_UNIQUE/FONCTIONS_ET_COURBES/Test_R_Fonc_scal_combinees_nD/barre.her new file mode 100644 index 0000000..bbed128 --- /dev/null +++ b/Batterie/FONCTION_UNIQUE/FONCTIONS_ET_COURBES/Test_R_Fonc_scal_combinees_nD/barre.her @@ -0,0 +1,61 @@ + + + nom_maillage barre +############################################################################# +# # +# STAMM # +# (maillage automatique de pieces simples) # +############################################################################# +# Copyright © 1997-2013 Gerard Rio, gerard.rio@univ-ubs.fr # +# All rights reserved. http://www-lg2m.univ-ubs.fr/~rio # +# # +############################################################################# +# version 03.29 , compatible avec la version Herezh++6.576 + + + # ------------------------------------------------------------------ + # | construction automatique d'un maillage d'element lineaire 1D | + # | pour une utilisation par herezh++ | + # ------------------------------------------------------------------ + + # barre de dimension : 100 ( 1 elements ) + + noeuds ------------ + 2 NOEUDS + + +#--------------------------------------------------------------- +#|NO DU| X | Y | Z | +#|NOEUD| | | | +#--------------------------------------------------------------- + 1 0 0 0 + 2 100 0 0 + + # references des noeuds + + N_deb 1 + N_fi 2 + N_to 1 2 + + + # les elements + + elements ---------- + 1 ELEMENTS + #-------------------------------------------------------------------- + #| NO | | | + #|ELTS | type element | Noeuds | + #-------------------------------------------------------------------- + 1 POUT BIE1 1 2 + + + + # references des arretes + + A_to 1 1 + + + # references des elements + + E_to 1 + diff --git a/Batterie/FONCTION_UNIQUE/FONCTIONS_ET_COURBES/Test_R_Fonc_scal_combinees_nD/fct_nD.CVisu1 b/Batterie/FONCTION_UNIQUE/FONCTIONS_ET_COURBES/Test_R_Fonc_scal_combinees_nD/fct_nD.CVisu1 new file mode 100644 index 0000000..dace0bc --- /dev/null +++ b/Batterie/FONCTION_UNIQUE/FONCTIONS_ET_COURBES/Test_R_Fonc_scal_combinees_nD/fct_nD.CVisu1 @@ -0,0 +1,138 @@ +############################################################################################### +# Fichier de commande pour la visualisation elements finis # +# Herezh++ V6.785 # +# Copyright (c) 1997-2016, Gerard Rio (gerard.rio@univ-ubs.fr) http://kleger.univ-ubs.fr/Herezh/ # +# http://www-lg2m.univ-ubs.fr # +############################################################################################### + + + + debut_fichier_commande_visu # >>>>>> le mot cle: + # permet au programme de se positionner au debut du fichier, il est indispensable + + + # ================================================================================= + # || ***** demande d'une visualisation maple: ***** || + # ================================================================================= + # un mot cle de debut (debut_visualisation_maple) + # un mot cle de fin ( fin_visualisation_maple) + # la seule presence de ces deux mots cle suffit a activer la visualisation maple + debut_visualisation_maple + + # ----------------------------- definition de la liste des increments a balayer: ---------------- + debut_list_increment # un mot cle de debut de liste + actif 1 # <0 ou 1> indique si l'ordre est actif ou non + # une liste d'entier separee par des blancs, ou le mot cle (tous_les_increments) + # un mot cle de fin de liste ( fin_list_increment) +781 fin_list_increment + + # ----------------------------- choix des maillages a visualiser: ---------------- + # la liste est facultative, par defaut la visualisation concerne le premier maillage + debut_choix_maillage # un mot cle de debut, + actif 0 # <0 ou 1> indique si l'ordre est actif ou non + # une liste d'entiers , puis , sur une meme ligne + 1 fin_choix_maillage + + # ----------------------------- definition des grandeurs a visualiser (maple): ---------------- + debut_grandeurs_maple # un mot cle de debut (debut_grandeurs_maple), + actif 1 # <0 ou 1> indique si l'ordre est actif ou non + # les grandeurs globales (energie, puissance ....) un mot cle de debut, le nom des grandeurs puis un mot de fin + debut_grandeurs_globales fin_grandeurs_globales + # ensuite pour chaque maillage:, + # le numero du maillage , + # les infos pour la visualisation eventuelle des torseurs de reaction, + # les infos pour la visualisation eventuelle aux noeud, + # - tout d'abord les ddl principaux (position, deplacements, temperature etc.) + # - puis les ddl etendus et particulieres qui peuvent representer des grandeurs diverses + # les infos pour la visualisation eventuelle aux elements, + # - tout d'abord les grandeurs generiques (deformations, contraintes etc.) + # - puis les grandeurs particulieres, par exemple specifique a une loi de comp ou une mesure de def + # enfin un mot cle de fin ( fin_grandeurs_maple) + 1 # le numero de maillage + # les torseurs de reaction: un mot cle de debut: debut_list_torseur_reaction + # une liste de nom , puis + debut_list_torseur_reaction fin_list_torseur_reaction + # les sommes, moyennes etc. sur ref de noeuds: un mot cle de debut: debut_list_SM_sur_refN + # une liste de nom de ref , puis + debut_list_SM_sur_refN fin_list__SM_sur_refN + # debut de la liste des ddl a considerer , (une liste de ddl), puis + deb_list_ddl_SM_sur_refN fin_list_ddl_SM_sur_refN + # debut de la liste des ddl etendus a considerer, (une liste de ddl), puis + deb_list_ddl_etendu__SM_sur_refN fin_list_ddl_etendu__SM_sur_refN # fin des ddl etendu pour _SM_sur_refNs + # debut de la liste des grandeurs particulieres a considerer, (une liste de string), puis + deb_list_GrandParticuliere__SM_sur_refN fin_list_GrandParticuliere__SM_sur_refN # fin des grandeurs particulieres aux _SM_sur_refNs + # les SM sur ref d'elements: un mot cle de debut: debut_list_SM_sur_refE + # une liste de nom de ref d'elements , le pti associe + # puis + debut_list_SM_sur_refE fin_list__SM_sur_refE + # les SMs sur ref de pti: un mot cle de debut: debut_list_SM_sur_refpti + # une liste de nom de ref , puis + debut_list_SM_sur_refpti fin_list__SM_sur_refpti + # debut de la liste des ddl a considerer , (une liste de ddl), puis + deb_list_ddl__SM_sur_refEpti fin_list_ddl__SM_sur_refEpti # fin de la liste de ddl a considerer pour les elements + # debut de la liste des grandeurs particulieres a considerer pour les _SM_sur_refEptis, (une liste de string), puis + deb_list_GrandParticuliere__SM_sur_refEpti fin_list_GrandParticuliere__SM_sur_refEpti # fin des grandeurs particulieres aux _SM_sur_refEptis + # tableau de grandeurs evoluees aux _SM_sur_refEptis a visualiser, un par maillage + deb_list_GrandEvoluee__SM_sur_refEpti fin_list_GrandEvoluee__SM_sur_refEpti + debut_liste_ddl_et_noeud # ** debut des ddl principaux aux noeuds + # debut de la liste de noeuds, puis une liste de numero de noeud , puis + deb_list_noeud fin_list_noeud + # debut de la liste des ref de noeuds, puis une liste de nom , puis + deb_list_ref_noeud N_deb N_fi fin_list_ref_noeud + # debut de la liste des ddl a considerer aux noeuds, (une liste de ddl), puis + deb_list_ddl_noeud X1 R_X1 fin_list_ddl_noeud + type_sortie_ddl_retenue= 1 + # debut de la liste des ddl etendus a considerer aux noeuds, (une liste de ddl), puis + deb_list_ddl_etendu_noeud fin_list_ddl_etendu_noeud # fin des ddl etendu aux noeuds + # debut de la liste des grandeurs particulieres a considerer aux noeuds, (une liste de string), puis + deb_list_GrandParticuliere_noeud fin_list_GrandParticuliere_noeud # fin des grandeurs particulieres aux noeuds + fin_liste_ddl_et_noeud # fin des grandeurs aux noeuds + debut_liste_ddl_ptinteg # ** debut des grandeurs aux elements + # debut de la liste des elements et points d'integration, une liste de (un element, un numero de pt d'integ), puis + deb_list_NbElement_NbPtInteg 1 1 fin_list_NbElement_NbPtInteg + # debut de la liste des ref d'elements, puis une liste de: nom + numero d'integ, puis + deb_list_ref_element fin_list_ref_element + # debut de la liste des ref de ptinteg d'elements, puis une liste de: nom puis + deb_list_ref_ptinteg_element fin_list_ref_ptinteg_element + # debut de la liste des ddl a considerer pour les elements, (une liste de ddl), puis + deb_list_ddl_element SIG11 EPS11 fin_list_ddl_element # fin de la liste de ddl a considerer pour les elements + # debut de la liste des grandeurs particulieres a considerer pour les elements, (une liste de string), puis + deb_list_GrandParticuliere_element fin_list_GrandParticuliere_element # fin des grandeurs particulieres aux elements + # tableau de grandeurs evoluees aux elements a visualiser, un par maillage + deb_list_GrandEvoluee_element fin_list_GrandEvoluee_element + fin_liste_ddl_ptinteg # fin des grandeurs aux elements +# informations particuliere dans le cas ou il y a une animation +# type_xi indique si oui ou non les grandeurs a tracer sont aux noeuds (sinon c'est au elements) +# x1 et x2 indiquent les noms des ddls des grandeurs en x et y. accroi_x1 et accroi_x2 indiquent +# si oui ou non x1 et x2 represente l'accroissement entre 0 et t de la grandeur ou bien la grandeur elle meme. + debut_info_particulier grandeur_au_noeud? 1 x1= NU_DDL x2= NU_DDL accroi_x1= 0 accroi_x2= 1 fin_info_particulier +# un parametre de pilotage du style de sortie + parametre_style_de_sortie 1 +# un parametre indiquant si les tenseurs sont en absolue (rep 1) ou suivant un repere ad hoc +# (tangent pour les coques, suivant la fibre moyenne pour les element 1D ) + tenseur_en_absolue_ 0 + fin_grandeurs_maple # fin des grandeurs a visualiser au format maple + + # ----------------------------- definition des parametres d'animation: ---------------- + debut_animation # un mot cle de debut de liste (debut_animation) + actif 0 # <0 ou 1> indique si l'ordre est actif ou non + # des parametres avec des valeurs: (sur une meme ligne) + cycleInterval 8 # cycleInterval (indique le temps en seconde du cycle de l'animation) + fin_animation # un mot cle de fin + + fin_visualisation_maple + # ================================================================================= + # || fin de la visualisation maple || + # ================================================================================= + + + + + + fin_fichier_commande_visu # <<<<<< le mot cle permet + # l'arret de la lecture des commandes, apres ce mot cle, aucune commande n'est lu, de plus + # sans le mot cle de fin de fichier, le fichier n'est pas valide + + ############################################################################################### + + diff --git a/Batterie/FONCTION_UNIQUE/FONCTIONS_ET_COURBES/Test_R_Fonc_scal_combinees_nD/fct_nD.info b/Batterie/FONCTION_UNIQUE/FONCTIONS_ET_COURBES/Test_R_Fonc_scal_combinees_nD/fct_nD.info new file mode 100644 index 0000000..6b33492 --- /dev/null +++ b/Batterie/FONCTION_UNIQUE/FONCTIONS_ET_COURBES/Test_R_Fonc_scal_combinees_nD/fct_nD.info @@ -0,0 +1,182 @@ + +####################################################################### +# # +# | | ==== === ==== ==== | | | | # +# | | | | | | / | | | | # +# |====| |=== === |=== / |====| ------- ------- # +# | | | | \ | / | | | | # +# | | ==== | \ ==== ==== | | | | # +# # +####################################################################### +# Copyright (c) 1997-2016 Gerard Rio, gerard.rio@univ-ubs.fr # +# All rights reserved. http://http://kleger.univ-ubs.fr/Herezh/ # +# Certification IDDN.FR.010.0106078.000.R.P.2006.035.20600 # +# # +####################################################################### +# (version avec le plus de verifications pendant le calcul et les I/O ) + version 6.785 + + +####################################################################### +# fichier de commande # + + +# --- vérification du fonctionnement de fonctions + + + +#---------------------------------------------------- +# definition de la dimension de l'espace de travail | +#---------------------------------------------------- + dimension 1 + +#--------------------------------------------------------------- +# definition facultative du niveau d'impression (entre 0 et 10)| +#--------------------------------------------------------------- + niveau_commentaire 3 + +#------------------------------- +# definition du type de calcul | +#------------------------------- + TYPE_DE_CALCUL + +non_dynamique avec plus lectureCommandesVisu +#non_dynamique #avec plus visualisation + +#-------------------------------------- +#| definition du (ou des) maillage(s) | +#-------------------------------------- + + # -- def maillage + < barre.her + +#------------------------------------- +# definition facultative de courbe 1D| +#------------------------------------- + + les_courbes_1D #------------ + +#............................................ + courbe_monte COURBE_EXPRESSION_LITTERALE_1D + f(x)= 0.0004*(sin(1.5708*x)) + fin_parametres_courbe_expression_litterale_ + + courbe_charge_monte COURBE_EXPRESSION_LITTERALE_1D + f(x)= (sin(1.5708*x))^4 + fin_parametres_courbe_expression_litterale_ + + +#------------- fin def des courbes 1D ------------------------ + +#---------------------------------------- +# definition facultative de fonction nD| +#---------------------------------------- + + les_fonctions_nD #------------ + +# une fonction qui dépend d'une courbe 1D poly-linéaire définie en interne + f_1 FONCTION_COURBE1D + courbe= COURBEPOLYLINEAIRE_1_D + Debut_des_coordonnees_des_points + Coordonnee dim= 2 0.0 0 + Coordonnee dim= 2 8 1.. + Fin_des_coordonnees_des_points + un_argument= temps_courant + fin_fonction_courbe1D_ + +# une fonction qui dépend d'une courbe 1D analytique définie en interne + f_2 FONCTION_COURBE1D + un_argument= temps_courant + courbe= COURBE_EXPRESSION_LITTERALE_1D + f(x)= (sin(1.5708*x)) + fin_parametres_courbe_expression_litterale_ + fin_fonction_courbe1D_ + +# une fonction qui dépend d'une courbe 1D déjà définie + f_3 FONCTION_COURBE1D + courbe= courbe_charge_monte + un_argument= temps_courant + fin_fonction_courbe1D_ + +# une fonction qui mixte les 3 premières fonctions + force_globale FONC_SCAL_COMBINEES_ND + fct_base= f_1 + fct_base= f_2 + fct_base= f_3 + fin_fcts_interne_fonction_combinee_ + un_argument= temps_courant + fct= temps_courant * f_1 + exp(-temps_courant) * f_2 + 0.5*f_3 + fin_parametres_fonction_combinee_ + + + + + +#------------- fin def des fonctions nD ------------------------ + +#====================================== +#| definition des lois de comportement| +#-------------------------------------- + + choix_materiaux ---------- +#---------------------------------------- +# Elements | Nom Materiau | +#---------------------------------------- +E_tout acier + + materiaux #---------- + +#------------------------------------------ +# Nom Materiau | Type loi | +#------------------------------------------ + acier ISOELAS1D +# ....... loi de comportement isoelastique 1D ........ +# module d'young : + 210000 0.3 + +#--------------------------------------- fin def des lois de comportement ------------------------ + +# --- divers stockages (1) ------- + sections #--------# +E_tout 1 + masse_volumique #--------# +E_tout 1 + + charges #------------# +N_fi PONCTUELLE 1. Fonction_nD_CHARGE: force_globale #TEMPS_MINI= 2. TEMPS_MAXI= 4. + + + + + blocages #------------# +#----------------------------------------------------------- +# nom du maillage | Ref noeud | Blocages +#----------------------------------------------------------- +N_deb UX + + controle #------------ +#--------------------------- +# PARAMETRE | VALEUR | +#--------------------------- + TEMPSFIN 8 + DELTAtMAXI 0.01 + MAXINCRE 99999999 + + + para_affichage #------------ +#--------------------------- +# PARAMETRE | VALEUR | +#--------------------------- + FREQUENCE_AFFICHAGE_INCREMENT 1000 + FREQUENCE_AFFICHAGE_ITERATION 100 +# FREQUENCE_SORTIE_FIL_DU_CALCUL 1 + +# ------------------------------------------------------------------------------------ + resultats pas_de_sortie_finale_ + COPIE 0 +# + + + _fin_point_info_ + + diff --git a/Batterie/FONCTION_UNIQUE/FONCTIONS_ET_COURBES/Test_R_Fonc_scal_combinees_nD/fct_nD_princ.maple.ref1 b/Batterie/FONCTION_UNIQUE/FONCTIONS_ET_COURBES/Test_R_Fonc_scal_combinees_nD/fct_nD_princ.maple.ref1 new file mode 100644 index 0000000..47813e1 --- /dev/null +++ b/Batterie/FONCTION_UNIQUE/FONCTIONS_ET_COURBES/Test_R_Fonc_scal_combinees_nD/fct_nD_princ.maple.ref1 @@ -0,0 +1,101 @@ +#fichier au format maple6 +############################################################################################### +# Visualisation elements finis : Herezh++ V6.785 # +# Copyright (c) 1997-2016, Gerard Rio (gerard.rio@univ-ubs.fr) http://kleger.univ-ubs.fr/Herezh/ # +# http://www-lg2m.univ-ubs.fr # +############################################################################################### + + + + # entete des donnees : informations gererales: on trouve successivement: + # >> le nombre de grandeurs globales (peut etre nul) suivi des identificateurs + # precedes du numero de colonne entre crochet + # >> le nombre de maillages m, et dimension de l'espace de travail + # puis pour chaque maillage, + # >> le nombre de torseurs de reaction (peut etre nul), le nombre total de reel qui va etre ecrit + # correspondant aux composantes des torseurs, puis les noms de ref associee suivi des positions + # des composantes entre crochet accolees a un identificateur: R pour reaction, M pour moment + # ensuite pour les moyennes, sommes, maxi etc. calculees sur des references de noeuds + # >> le nombre de ref de noeuds, nombre total de grandeurs associees + # puis pour chaque maillage + # le numero de maillage puis pour chaque reference de noeuds + # le nom de la reference, le nombre de noeud de la ref, le nombre de grandeurs qui vont etre ecrites + # puis entre crochet la position suivi de la signification de chaque grandeur + # + # ensuite pour les moyennes, sommes, maxi etc. calculees sur des references d'elements ou de pti + # >> le nombre de ref d'element+ref de pti, nombre total de grandeurs associees + # puis pour chaque maillage + # le numero de maillage puis pour chaque reference d'element et de pti + # le nom de la reference, le nombre d'element de la ref, le nombre de grandeurs qui vont etre ecrites + # puis entre crochet la position suivi de la signification de chaque grandeur + # + # puis pour chaque maillage + # >> le nombre de noeud n (peut etre nul) ou il y a des grandeurs en sortie , + # puis le nombre des grandeurs p1 correspondantes, la position entre crochet des coordonnees + # et enfin l'idendificateur de ces grandeurs(p1 chaines de caractere) + # precedes du numero de colonne correspondant entre crochet + # puis pour chaque maillage + # >> le nombre de couples element-pt_integ (peut etre nulle) ou il y a des grandeurs en sortie , + # les grandeurs aux elements sont decomposees en 2 listes: la premiere de quantite P2 correspondant + # a des grandeurs generiques, la seconde de quantite P3 corresponds aux grandeurs specifiques, + # on trouve donc a la suite du nombre d'element: le nombre P2, suivi de P2 identificateurs de ddl + # chacun precedes du numero de colonne entre crochet + # puis le nombre P3, suivi de P3 identificateurs+categorie+type (chaines de caracteres), + # suivi entre crochet, de la plage des numeros de colonnes, correspondant + # chacun sur une ligne differentes + # ==== NB: pour les grandeurs specifique tensorielle: exemple d'ordre en 2D: + # tenseur symetrique, A(1,1) A(2,1) A(2,2), non symetrique A(1,1) A(1,2) A(2,1) A(2,2) + # en 3D c'est: tenseur symetrique, A(1,1) A(2,1) A(2,2) A(3,1) A(3,2) A(3,3) + # non symetrique A(1,1) A(1,2) A(2,1) A(2,2) A(2,3) A(3,1) A(3,2) A(3,3) + # ** dans le cas ou il n'y a qu'un seul increment en sortie, pour les grandeurs aux noeuds et aux elements, + # ** les informations peuvent etre decoupees selon: une ligne = un noeud, et le temps n'est pas indique + # ** ( cf: parametre_style_de_sortie = 0) + +#==================================================================== +#|| recapitulatif des differentes grandeurs par colonne || +#==================================================================== +#---------------------------------- grandeur globales ------------------------------------ +#0 (nombre de grandeurs globales) +#---------------------------------- maillage et dimension -------------------------------- +#1 1 (nombre de maillages et dimension) +#---------------------------------- torseurs de reactions -------------------------------- +#0 0 (nombre de torseurs et nombre total de grandeurs associees) +# +#-------- moyenne, somme, maxi etc. de grandeurs aux noeuds pour des ref --------------- +#0 0 (nombre de ref de noeud et nombre total de grandeurs associees) +# +#-------- moyenne, somme, maxi etc. de grandeurs aux elements pour des ref --------------- +#0 0 (nombre de ref d'element et nombre total de grandeurs associees) +# +#---------------------------------- grandeurs aux noeuds -------------------------------- +#2 2 (nombre de noeuds, nombre total de grandeurs associees) +# reference N_deb : noeud_1 [2]X [3]delta_0_t_X1 [4]delta_0_t_R_X1 ; +# reference N_fi : noeud_2 [5]X [6]delta_0_t_X1 [7]delta_0_t_R_X1 ; +# +#---------------------------------- grandeurs aux elements ------------------------------ +#1 2 00 (nombre total d'elements, nombre totale de grandeurs associees, nombre de grandeurs particulieres, nombre de grandeurs tensorielles) +# element_1 pt_integ_1: [9]X [10] SIG11 [11] EPS11 +# +# +#==================================================================== +#|| fin du recapitulatif des differentes grandeurs || +#==================================================================== + + # ensuite les donnees sont organisees sur differentes lignes, chaques lignes correspondant + # a un calcul (par exemple un pas de temps), sur chaque ligne il y a m enregistrement, chacun + # correspondant a un maillage. On trouve pour chaque enregistrement successivement : + # s'il y a des grandeurs globales: le temps puis les grandeurs globales, + # puis s'il y a des torseurs de reaction : + # de nouveau le temps, les composantes de la resultante puis les composantes du moments + # donc en 1D -> 1 reels (resultante), en 2D -> 3 reels (resultante 2, moment 1) et en 3D 6 reels + # puis s'il y a des grandeurs aux noeuds: de nouveau le temps + # les coordonnees a t du premier noeud suivi des p1 grandeurs correspondant au premier noeud + # puis les coordonnees du second noeud, les p1 grandeurs etc. pour tous les noeuds + # puis s'il y a des grandeur aux elements: + # le temps, puis les coordonnees a t du point d'integration d'un element (pour les grandeurs generiques) + # suivi des p2 grandeurs correspondantes puis les coordonnees a t du point d'integration + # correspondant aux grandeurs specifiques suivi des p3 grandeurs correspondantes + # puis les coordonnees d'un second point d'integration d'un element, les p2 grandeurs + # etc. pour tous les points d'integration - element + + 7.810000000000e+00 0.000000000000e+00 0.000000000000e+00 7.628129284746e+00 1.000036327196e+02 3.632719631952e-03 0.000000000000e+00 7.810000000000e+00 5.000181635982e+01 7.628295552692e+00 3.632521691758e-05 diff --git a/Batterie/FONCTION_UNIQUE/FONCTIONS_ET_COURBES/Test_R_Fonc_scal_combinees_nD/fonction.pdf b/Batterie/FONCTION_UNIQUE/FONCTIONS_ET_COURBES/Test_R_Fonc_scal_combinees_nD/fonction.pdf new file mode 100644 index 0000000000000000000000000000000000000000..005b2507dfb899860509fee4b7da255e1f18879b GIT binary patch literal 25461 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