# Ceci est le fichier .champs qui sera utilise pour resoudre le probleme du panneau d'amoire #==ATTENTION==ATTENTION==ATTENTION==ATTENTION==ATTENTION==ATTENTION # # temps --> seconde # dimension --> mètre # pression --> Gpa # #==ATTENTION==ATTENTION==ATTENTION==ATTENTION==ATTENTION==ATTENTION # --------------------------------------------------------------------------- # Nom des fichiers de sorties chainecar nomsortie resultats1 # --------------------------------------------------------------------------- # 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 f # --------------------------------------------------------------------------- # On choisit de quelle maniere on veut resoudre le probleme # constantes # Temps de depart: T_0 # Temps final: T_F scalaire T_0 0 scalaire T_F 3542400 # # 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 f scalaire NbTempsImpose 0 scalaire TempsImpose_0 86400. scalaire TempsImpose_1 259200. scalaire TempsImpose_2 1209600. scalaire TempsImpose_3 2332800. scalaire TempsImpose_4 4320000. scalaire TempsImpose_5 4752000. scalaire TempsImpose_6 5184000. scalaire TempsImpose_7 5616000. scalaire TempsImpose_8 6048000. scalaire TempsImpose_9 6480000. scalaire TempsImpose_10 334.5 scalaire TempsImpose_11 670.5 scalaire TempsImpose_12 1318.5 scalaire TempsImpose_13 1414.5 # # 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): PasDeTempsInit # Pas de temps minimal: PasDeTempsMin # Pas de temps maximal (pas le limite = 0): PasDeTempsMax scalaire PasDeTemps 10 scalaire PasDeTempsMin 0.1 scalaire PasDeTempsMax 500000 # 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 300 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-8 scalaire ToleranceLinMecR 5e-40 scalaire Divergence 1e+10 # nombre maximum d'iterations pour les solveur scalaire MaxItNlin 200 scalaire MaxItLin 5000 scalaire MaxItLinMec 5000 # # est-ce que l'on aura a resoudre un probleme avec des mouvements de corps rigide? # a modifier si on sait que l'on aura des mouvements de corps rigide. # # ATTENTION : il faudra alors modifier dans le code suivant la direction CONNUE des # mouvements de corps rigide booleen CorpsRigideGCP f # # 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 1 #ajouter les autres coins vectoriel3d Coord_0 [0, 0, 0.009] # ------------------------------------------------------------------------------------------------------------------ # 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" 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] # # FIN DES CONSTANTES, DEBUT DES CHAMPS OU DES CONSTANTES DEPENDANT D'AUTRES CONSTANTES # # ------------------------------------------------------------------------------------------------- # Définition du champ de transformation géométrique utilisé pour le calcul: ChampGeoLin "ChampGeo" "" # ----------------------------------------------------------------------------------- # Definition de constantes scalaire "zero" 0 # ________________________________________________________________________________________________ # Partie diffusion non-stationnaire # Humidité initiale. MP est utilisé en cas d'hystéresse, représente l'humidité au pas précédent. # ici scallin est utilisé pour la résolution linéaire. On utilise scalquad pour la résolution quadratique scallin "M" 6.3 scallin "MP" 6.3 # scalquad "M" 6.3 # scalquad "MP" 6.3 # Si on utilise DilEr* alors on indique au programme que BetaM tiendra compte de l'hysterese: # booleen Hysterese v # ----------------------------------------------------------------------------------------------- # Partie deformation # déformation initiale # ici v3dlin est utilisé pour la résolution linéaire. On utilise v3dquad pour la résolution quadratique # v3dquad "U" [0,0,0] v3dlin "U" [0,0,0] # ------------------------------------------------------------------------------------------------- # Champ necessaire pour la CL # MInfini varie dans le temps # Ceci donne l'humidite ambiante #scalaire "MInfini" f()=4.46*(t<14400.) + 5.00*(t>=14400.)*(t<=25200.) + 5.32*(t>25200.)*(t<=54000.) + 5.10*(t>54000.)*(t<=90000.) + 5.6*(t>90000.)*(t<=97200.) \ # + 5.15*(t>97200.)*(t<=111600.) + 4.86*(t>111600.)*(t<=133200.) + 4.77*(t>133200.)*(t<=183600.) + 4.9*(t>183600.)*(t<=253800) \ # + 4.8*(t>253800)*(t<=858600) + 4.77*(t>858600)*(t<=1204200) + 4.6*(t>1204200)*(t<=2413800) + 4.5*(t>2413800)*(t<=4746600) \ # + 4.37*(t>4746600)*(t<=5092200) + 4.31*(t>5092200) # scalaire "MInfini" 5 # ------------------------------------------------------------------------------------ # Definition des types de bois # Definition d'un materiau "erable" { Erable_1 scalaire "DL" 1.3e-08 scalaire "DR" f(M)=(-6.34*M+40.1)*1.0e-10 scalaire "DT" f(M)=(-6.34*M+40.1)*1.0e-10 scalaire "dDR" -6.34*1.0e-10 scalaire "dDT" -6.34*1.0e-10 scalaire "EL" 13.810 scalaire "ER" 1.311 scalaire "ET" 0.678 scalaire "GLR" 1.013 scalaire "GLT" 0.753 scalaire "GRT" 0.255 scalaire "VTL" 0.025 scalaire "VTR" 0.43 scalaire "VLR" 0.46 scalaire "VLT" 0.50 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 scalaire "C_MRho" 597*1e-2 empilementto2 "K_M" [DL,DT,DR,zero,zero,zero] empilementto2 "dK_MdM" [zero,dDT,dDR,zero,zero,zero] to4elasticite "Eijkl" [EL,ET,ER,VLT,VTR,VLR,GLT,GRT,GLR] # Pour la dilatation qui est BetaM scalaire "DilErX" f(M,MP,BL,AL)=(M > MP)*BL+(M < MP)*AL scalaire "DilErY" f(M,MP,BT,AT)=(M > MP)*BT+(M < MP)*AT scalaire "DilErZ" f(M,MP,BR,AR)=(M > MP)*BR+(M < MP)*AR empilementto2 "BetaM" [DilErX,DilErY,DilErZ,zero,zero,zero] } # Definition d'un materiau "erable" { Erable_Perpendiculaire scalaire "DL" 1.3e-08 scalaire "DR" f(M)=(-6.34*M+40.1)*1.0e-10 scalaire "DT" f(M)=(-6.34*M+40.1)*1.0e-10 scalaire "dDR" -6.34*1.0e-10 scalaire "dDT" -6.34*1.0e-10 scalaire "EL" 13.810 scalaire "ER" 1.311 scalaire "ET" 0.678 scalaire "GLR" 1.013 scalaire "GLT" 0.753 scalaire "GRT" 0.255 scalaire "VTL" 0.025 scalaire "VTR" 0.43 scalaire "VLR" 0.46 scalaire "VLT" 0.50 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 scalaire "C_MRho" 597*1e-2 empilementto2 "K_M" [DT,DL,DR,zero,zero,zero] empilementto2 "dK_MdM" [dDT,zero,dDR,zero,zero,zero] to4elasticite "Eijkl" [ET,EL,ER,VTL,VLR,VTR,GLT,GLR,GRT] # Pour la dilatation qui est BetaM scalaire "DilErX" f(M,MP,BT,AT)=(M > MP)*BT+(M < MP)*AT scalaire "DilErY" f(M,MP,BL,AL)=(M > MP)*BL+(M < MP)*AL scalaire "DilErZ" f(M,MP,BR,AR)=(M > MP)*BR+(M < MP)*AR empilementto2 "BetaM" [DilErX,DilErY,DilErZ,zero,zero,zero] } # Definition d'un materiau "colle" { Colle scalaire "DL" 1.0e-15 scalaire "DR" 1.0e-15 scalaire "DT" 1.0e-15 scalaire "dDR" 0 scalaire "dDT" 0 scalaire "EL" 10 scalaire "ER" 10 scalaire "ET" 10 scalaire "GLR" 3.703703704 scalaire "GLT" 3.703703704 scalaire "GRT" 3.703703704 scalaire "VTL" 0.35 scalaire "VTR" 0.35 scalaire "VLR" 0.35 scalaire "VLT" 0.35 scalaire "B" 0.019 scalaire "H_M" -3.2e-4 scalaire "C_MRho" 1500*1e-2 empilementto2 "K_M" [DL,DT,DR,zero,zero,zero] empilementto2 "dK_MdM" [zero,zero,zero,zero,zero,zero] to4elasticite "Eijkl" [ET,EL,ER,VTL,VLR,VTR,GLT,GLR,GRT] empilementto2 "BetaM" [B,B,B,zero,zero,zero] } # --------------------------------------------------------------------------------------------------- #champssurgeom Piece1=Erable_1 Piece2=Erable_Perpendiculaire Piece3=Erable_Perpendiculaire Colle_01=Colle champssurgeom Piece1=Erable_Perpendiculaire Piece2=Erable_Perpendiculaire Piece3=Erable_1