2
0
Fork 0

mise en place d'un test sur les fonctions nD combinées. Comparaison avec les formules analytiques.

This commit is contained in:
rio 2017-02-10 17:43:48 +00:00
parent 96ce5b10ca
commit c89ecd8c74
6 changed files with 522 additions and 0 deletions

View file

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

View file

@ -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

View file

@ -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: <debut_fichier_commande_visu>
# 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 <fin_choix_maillage>, 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 <un entier>,
# 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 <chaine de caracteres >, puis <fin_list_torseur_reaction>
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 <chaine de caracteres >, puis <fin_list__SM_sur_refN>
debut_list_SM_sur_refN fin_list__SM_sur_refN
# debut de la liste des ddl a considerer <deb_list_ddl_SM_sur_refN>, (une liste de ddl), puis <fin_list_ddl_SM_sur_refN>
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 <fin_list_ddl_etendu__SM_sur_refN>
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 <fin_list_GrandParticuliere__SM_sur_refN>
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 <chaine de caracteres >, le pti associe
# puis <fin_list__SM_sur_refE>
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 <chaine de caracteres >, puis <fin_list__SM_sur_refpti>
debut_list_SM_sur_refpti fin_list__SM_sur_refpti
# debut de la liste des ddl a considerer , (une liste de ddl), puis <fin_list_ddl__SM_sur_refEpti>
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 <fin_list_GrandParticuliere__SM_sur_refEpti>
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 <entier>, puis <fin_list_noeud>
deb_list_noeud fin_list_noeud
# debut de la liste des ref de noeuds, puis une liste de nom <chaine de caracteres >, puis <fin_list_ref_noeud>
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 <fin_list_ddl_noeud>
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 <fin_list_ddl_etendu_noeud>
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 <fin_list_GrandParticuliere_noeud>
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 <fin_list_NbElement_NbPtInteg>
deb_list_NbElement_NbPtInteg 1 1 fin_list_NbElement_NbPtInteg
# debut de la liste des ref d'elements, puis une liste de: nom <chaine de caracteres > + numero d'integ, puis <fin_list_ref_element>
deb_list_ref_element fin_list_ref_element
# debut de la liste des ref de ptinteg d'elements, puis une liste de: nom <chaine de caracteres > puis <fin_list_ref_ptinteg_element>
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 <fin_list_ddl_element>
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 <fin_list_GrandParticuliere_element>
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 <un reel> (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 <fin_fichier_commande_visu> 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
###############################################################################################

View file

@ -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_

View file

@ -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