# # ------------------------------------------------------------------------------------------------- # Définition du champ de transformation géométrique utilisé pour le calcul: ChampGeoLin "ChampGeo" "" scalaire "zero" 0 vectoriel3d "zero3d" [0.,0.,0.] # # ------------------------------------------------------------------------------------------------- # On a un probleme de contact? Si oui on l'indique en donnant ici la surface de contact maximale # chainecar NOM_ENTITE_DE_CONTACT surface_dessous # # est-ce que l'on aura a resoudre un probleme avec des mouvements de corps rigide? # # ATTENTION : il faudra alors indiquer la direction CONNUE des # mouvements de corps rigide booleen CorpsRigideGCP v scalaire DirectionRigide 2 chainecar lNomEntiteControle surface_dessous #==ATTENTION==ATTENTION==ATTENTION==ATTENTION==ATTENTION==ATTENTION # # temps --> seconde # dimension --> mètre # pression --> Gpa # #==ATTENTION==ATTENTION==ATTENTION==ATTENTION==ATTENTION==ATTENTION # Par defaut, le probleme resout un probleme d'humidite # on choisit ensuite les autres types de problemes que l'on veut resoudre # Pour le panneau d'armoire, on veut aussi resoudre la Mecanique booleen Thermique f booleen Mecanique v # Temps de depart: T_0 # Temps final: T_F scalaire T_0 0 scalaire T_F 10368000 # # Si les donnees ont des discontinuites en temps on va forcer une resolution a ces temps particuliers # et on n'aura pas a se soucier des pas de temps, car le solveur fera le travail. Qu'on donne des pas de temps # fixes ou variables. # # # Sert à imposer des temps lors d'un calcul à pas de temps variable. # booleen TempsImpose : sert à activer l'imposition de temps. # scalaire NbTempsImpose : définit les temps que l'on veut imposer. Prends les premiers de la liste. # booleen TempsImpose v scalaire NbTempsImpose 1 scalaire TempsImpose_0 5184000. # # Donnees pour le calcul avec pas de temps variable. # N.B: Si on veut faire un calcul avec un pas de temps fixe, on a seulement besoin d'indiquer le temps initial (T_0 définit plus haut), # d'inscrire le pas de temps (PasDeTemps) et le nombre de pas de temps (NbPasDetemps un peu plus bas) que l'on veut faire. # Il ne faut pas oublier de mettre en commentaire la ligne définissant le pas de temps variable. # # Pas de temps (valeur initiale si variable): PasDeTemps # Pas de temps minimal: PasDeTempsMin # Pas de temps maximal (pas le limite = 0): PasDeTempsMax scalaire PasDeTemps 1.0 scalaire PasDeTempsMin 0.005 scalaire PasDeTempsMax 100000 # Nombre maximal de pas de temps: NbPasDeTemps # frequence du calcul en elasticite (relativement au probleme en M: 0 == pas de calcul): freqCalcul # frequence d'impression des champs (pas d'impression = 0): freqImpression scalaire NbPasDeTemps 1500 scalaire freqCalcul 1 scalaire freqImpression 1 # # valeur specifique au solveurInstNlinPETSc et solveurLinPETSc # # tolerance pour le calcul des pas de temps scalaire TolerancePasVariable 5e-3 # Tolerance pour la convergence des solveurs scalaire ToleranceNlin 1e-9 scalaire ToleranceLin 5e-9 #initialement, a -9 et j'essaie a -8 scalaire ToleranceLinMec 5e-9 scalaire ToleranceLinMecR 5e-40 scalaire Divergence 1e+10 # nombre maximum d'iterations pour les solveur scalaire MaxItNlin 200 scalaire MaxItLin 5000 scalaire MaxItLinMec 5000 # # on veut la trace de la solution en certains points # NbEval nombre de points d'evaluations # Coord_i le point i pour i=0 a NbEval-1 # # en mettant NbEval à zéro on ne fait plus les evaluations scalaire NbEval 0 vectoriel3d Coord_0 [0.0 , 0.0 , 0.0094] vectoriel3d Coord_1 [0.0 , 0.12 , 0.0094] vectoriel3d Coord_2 [0.0 , 0.06 , 0.0094] vectoriel3d Coord_3 [0.12 , 0.06 , 0.0094] vectoriel3d Coord_4 [0.00 , 0.06 , 0.0047] # ------------------------------------------------------------------------------------------------------------------ # On choisit le type de solveur qu'on utilise ## Solveur PETSc ## # Pour plus d'information sur les solveurs, voir le lien "format du fichier champs" dans la documentation MEF++ solveurlinpetsc typesolveur "SolveurLin" gradient_conjugue # solveurlinpetsc typesolveur "SolveurLin" direct solveurlinpetsc typeprecond "SolveurLin" sor solveurlinpetsc configprecondsor "SolveurLin" [v] solveurlinpetsc suiviconvergence "SolveurLin" defaut solveurlinpetsc tolerance "SolveurLin" [ToleranceLin,ToleranceLin,Divergence,MaxItLin] solveurinstnlinpetsc typesolveur "SolveurInst" solveurinstnlinpetsc solveurlin "SolveurInst" SolveurLin solveurinstnlinpetsc parametresnlin "SolveurInst" [ToleranceNlin,MaxItNlin,v] solveurinstnlinpetsc parametresinst "SolveurInst" [PasDeTemps, NbPasDeTemps, T_0, eulerimplicit,v] solveurinstnlinpetsc reassemblagesafaire "SolveurInst" [1,1] # # Proprietes des matrices permettant d'optimiser la resolution instationnaire # Ce sont des optimisations. Le code marchera sans ces options (plus long cependant) # # PM0 la matrice masse depend du temps via C_MRho # PM1 la matrice masse depend de la solution recherchee via C_MRho # PK0 la matrice rigidite depend du temps # PK1 la matrice rigidite depend de la solution recherchee # PK2 la matrice rigidite depend des CL (la matrice sera modifiee par les CL: robin <=> neumannonlineaire) # # solveurinstnlinpetsc parametres_matrice_masse "SolveurInst" [PM0,PM1] # solveurinstnlinpetsc parametres_matrice_rigidite "SolveurInst" [PK0,PK1,PK2] # solveurinstnlinpetsc parametres_matrice_masse "SolveurInst" [f,f] solveurinstnlinpetsc parametres_matrice_rigidite "SolveurInst" [f,v,v] # # on choisit un pas de temps variable calculé par le solveur # (commenter si on en veut pas, mais attention a NbPasDeTemps) # solveurinstnlinpetsc pasdetempsvariable "SolveurInst" [PasDeTempsMin,PasDeTempsMax,T_F,TolerancePasVariable] #solveurlinpetsc typesolveur "SolveurMec" gmres #solveurlinpetsc typesolveur "SolveurMec" gradient_conjugue solveurlinpetsc typesolveur "SolveurMec" direct solveurlinpetsc typeprecond "SolveurMec" sor solveurlinpetsc configprecondsor "SolveurMec" [v,0.7] solveurlinpetsc suiviconvergence "SolveurMec" defaut solveurlinpetsc tolerance "SolveurMec" [ToleranceLinMecR,ToleranceLinMec,Divergence,MaxItLinMec] # # La matrice de rigidité du systeme mecanique depend du temps? # booleen forceAssemblageMatriceMec f # Humidité initiale. MP est utilisé en cas d'hystérèse, représente l'humidité au pas précédent. scalaire MInitiale 8. scallin "M" reinterpole(MInitiale) scallin "MP" reinterpole(MInitiale) booleen Hysterese v # ----------------------------------------------------------------------------------------------- # Partie deformation # déformation initiale v3dquad "U" [0,0,0] # ------------------------------------------------------------------------------------------------- # Champ necessaire pour la CL MInfini varie dans le temps scalaire "MInfini" f()=5*(t>5184000.)+12*(t<=5184000.) # ------------------------------------------------------------------------------------ # Definition des types de bois cartesien "90degre" vx=[0,1,0] vy=[1,0,0] vz=[0,0,1] changementrepere "milieu_90"=90degre scalaire abaqus f(M)=(1e-10)*(8.4*(M<=5) +(M>5)*(M<6.15)*(1.1 - 6.3478*(M-6.15))+(M>=6.15)*1.1) scalaire dabaqusdM f(M)=-6.3478*(M>5)*(M<6.15)*1e-10 # Definition d'un materiau "erable" { Erable scalaire "C_MRho" 597*1e-2 scalaire "KL" 1.31e-08 scalaire "KR" f(abaqus)=abaqus scalaire "KT" f(abaqus)=abaqus scalaire "dKRdM" f(dabaqusdM)=dabaqusdM scalaire "dKTdM" f(dabaqusdM)=dabaqusdM scalaire "EL" 13.810 scalaire "ER" 1.311 scalaire "ET" 0.678 scalaire "VTL" 0.025 scalaire "VTR" 0.43 scalaire "VLR" 0.46 scalaire "VLT" 0.50 scalaire "GLT" 0.753 scalaire "GRT" 0.255 scalaire "GLR" 1.013 scalaire "AL" 0.00014715 scalaire "AR" 0.0021382 scalaire "AT" 0.0033495 scalaire "BL" 0.0001842 scalaire "BR" 0.0019053 scalaire "BT" 0.0027579 scalaire "H_M" -3.2e-4 # dans ce cas-ci x = L, y = T z = R alors pour les tenseurs on a empilementto2 "K_M" [KL,KT,KR,zero,zero,zero] empilementto2 "dK_MdM" [zero,dKTdM,dKRdM,zero,zero,zero] to4elasticite "Eijkl" [EL,ET,ER,VLT,VTR,VLR,GLT,GRT,GLR] # Pour la dilatation qui est BetaM scalaire "DilErL" f(M,MP,BL,AL)=(M > MP)*BL+(M < MP)*AL scalaire "DilErT" f(M,MP,BT,AT)=(M > MP)*BT+(M < MP)*AT scalaire "DilErR" f(M,MP,BR,AR)=(M > MP)*BR+(M < MP)*AR empilementto2 "BetaM" [DilErL,DilErT,DilErR,zero,zero,zero] } # Definition d'un materiau "bouleau" { Bouleau scalaire "C_MRho" 506*1e-2 scalaire "KL" 1.31e-08 scalaire "KR" 2.39e-10 scalaire "KT" 2.39e-10 scalaire "dKRdM" 0 scalaire "dKTdM" 0 scalaire "EL" 12.045 scalaire "ER" 1.069 scalaire "ET" 0.516 scalaire "VTL" 0.018 scalaire "VTR" 0.38 scalaire "VLR" 0.49 scalaire "VLT" 0.43 scalaire "GLT" 0.607 scalaire "GRT" 0.2 scalaire "GLR" 0.829 scalaire "BL" 0.00015 scalaire "BR" 0.00173 scalaire "BT" 0.0024 scalaire "H_M" -3.2e-4 # dans ce cas-ci x = L, y = T z = R alors pour les tenseurs on a empilementto2 "K_M" [KL,KT,KR,zero,zero,zero] empilementto2 "dK_MdM" [zero,dKTdM,dKRdM,zero,zero,zero] to4elasticite "Eijkl" [EL,ET,ER,VLT,VTR,VLR,GLT,GRT,GLR] # Pour la dilatation qui est BetaM empilementto2 "BetaM" [BL,BT,BR,zero,zero,zero] } # Definition d'un materiau "colle" { ColleUF scalaire "C_MRho" 15.0 scalaire "K" 1.e-15 scalaire "dKdM" 0 scalaire "Young" 10 scalaire "Cisail" 3.703703704 scalaire "Poisson" 0.35 scalaire "B" 0.019 scalaire "H_M" -3.2e-4 empilementto2 "K_M" [K,K,K,zero,zero,zero] empilementto2 "dK_MdM" [dKdM,dKdM,dKdM,zero,zero,zero] to4elasticite "Eijkl" [Young,Young,Young,Poisson,Poisson,Poisson,Cisail,Cisail,Cisail] empilementto2 "BetaM" [B,B,B,zero,zero,zero] } # --------------------------------------------------------------------------------------------------- champssurgeom dessus=Erable dessous=Erable milieu_0=Erable milieu_90=Erable colle=ColleUF