* fichier : soudage2.dgibi ************************************************************************ ************************************************************************ 'OPTION' 'ECHO' 0 ; ************************************************************************ * NOM : ERRREL * DESCRIPTION : Calcul d'une erreur relative * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 23/04/2003, version initiale * HISTORIQUE : v1, 23/04/2003, création * HISTORIQUE : * HISTORIQUE : ************************************************************************ * Prière de PRENDRE LE TEMPS de compléter les commentaires * en cas de modification de ce sous-programme afin de faciliter * la maintenance ! ************************************************************************ * * 'DEBPROC' ERRREL ; 'ARGUMENT' val*'FLOTTANT' ; 'ARGUMENT' valref*'FLOTTANT' ; * 'SI' ('<' ('ABS' valref) 1.D-10) ; echref = 1.D0 ; 'SINON' ; echref = valref ; 'FINSI' ; * errabs = 'ABS' ('/' ('-' val valref) echref); * 'RESPRO' errabs ; * * End of procedure file ERRREL * 'FINPROC' ; ************************************************************************ * NOM : CALCNU * DESCRIPTION : calcul de la viscosité (tp2v2) : * si t > tfusion : viscosité = nu * si t < tfusion : viscosité = nu * 1.D6 * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 20/10/2002, version initiale * HISTORIQUE : v1, 20/10/2002, création * HISTORIQUE : * HISTORIQUE : ************************************************************************ * Prière de PRENDRE LE TEMPS de compléter les commentaires * en cas de modification de ce sous-programme afin de faciliter * la maintenance ! ************************************************************************ * * 'DEBPROC' CALCNU ; 'ARGUMENT' rvx*'TABLE ' ; tn = rv . 'INCO' . 'TN' ; zliq = tnc 'MASQUE' 'SUPERIEUR' tfusion ; zsol = tnc 'MASQUE' 'EGINFE' tfusion ; nuc = '+' ('*' zliq nu) ('*' zsol ('*' nu 1.D6)) ; rv . 'INCO' . 'NU' = nuc ; 'RESPRO' mat1 chp1 ; * * End of procedure file CALCNU * 'FINPROC' ; ************************************************************************ * NOM : CALCTAU * DESCRIPTION : calcul de la tension de surface (tp2v2) : * contrainte tangentielle proportionnelle * au gradient de température tangentiel. * nu dUt/dn = (dg/dT / rho) (gradT.t) * * Attention : on divise par rho * car l'équation de qdm est aussi divisée par rho * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 25/10/2002, version initiale * HISTORIQUE : v1, 25/10/2002, création * HISTORIQUE : * HISTORIQUE : ************************************************************************ * Prière de PRENDRE LE TEMPS de compléter les commentaires * en cas de modification de ce sous-programme afin de faciliter * la maintenance ! ************************************************************************ * * 'DEBPROC' CALCTAU ; 'ARGUMENT' rvx*'TABLE ' ; tn = rv . 'INCO' . 'TN' ; tau = '*' ('/' dgdt rho) gtnh ; * TRACVIT tau 'TAU' ; * rv . 'INCO' . 'TAU' = 'KCHT' $hau 'VECT' 'CENTRE' (0.D0 0.D0) ; 'RESPRO' mat1 chp1 ; * * End of procedure file CALCTAU * 'FINPROC' ; ************************************************************************ * NOM : CALRESI * DESCRIPTION : Calcul des residus et * stockage d'infos utiles au post-traitement * cf. procedures FILM et PHOTO * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 23/10/2002, version initiale * HISTORIQUE : v1, 23/10/2002, création * HISTORIQUE : * HISTORIQUE : ************************************************************************ * Prière de PRENDRE LE TEMPS de compléter les commentaires * en cas de modification de ce sous-programme afin de faciliter * la maintenance ! ************************************************************************ * * 'DEBPROC' CALRESI ; 'ARGUMENT' rvx*'TABLE ' ; * freq1 : fréquence d'impression * freq2 : fréquence du stockage d'infos pour FILM et PHOTO * eps0 : Sortie de la boucle de EQEX si convergence freq1 = 'ENTIER' ('+' (rvx . 'ARG1') 0.001D0) ; freq2 = 'ENTIER' ('+' (rvx . 'ARG2') 0.001D0) ; eps0 = rvx . 'ARG3' ; time0 = rv . 'PASDETPS' . 'TPS' ; pdt0 = rv . 'PASDETPS' . 'NUPASDT' ; rvi = rv . 'INCO' ; un = rvi . 'UN' ; tn = rvi . 'TN' ; pn = rvi . 'PN' ; nu = rvi . 'NU' ; * * Calcul des résidus * Le résidu est défini comme : || u_(i) - u_(i-1) || / || u_(i) || * où || || est la norme L2 * rvr = rv . 'RESIDU' ; 'SI' ('>' pdt0 1) ; unm1 = rvr . 'UNM1' ; tnm1 = rvr . 'TNM1' ; pnm1 = rvr . 'PNM1' ; num1 = rvr . 'NUM1' ; mmu = rvr . 'MMU' ; mmt = rvr . 'MMT' ; mmp = rvr . 'MMP' ; mmn = rvr . 'MMN' ; erru = '/' ('**' ('ABS' resiu2) 0.5D0) ('**' ('ABS' normu2) 0.5D0) ; errt = '/' ('**' ('ABS' resit2) 0.5D0) ('**' ('ABS' normt2) 0.5D0) ; errp = '/' ('**' ('ABS' resip2) 0.5D0) ('**' ('ABS' normp2) 0.5D0) ; resin2 = '+' resin2 1.D-14 ; errn = '/' ('**' ('ABS' resin2) 0.5D0) ('**' ('ABS' normn2) 0.5D0) ; 'SI' ('OU' ('EGA' (MODULO pdt0 freq1) 0) ('EGA' pdt0 2)); titmess1 = 'CHAINE' 'Pdt=' pdt0 ' ; tps=' time0 ' erru=' erru ' ; errt=' errt ' ; errp=' errp ' ; errn=' errn ; 'MESSAGE' titmess1 ; 'FINSI' ; 'FINSI' ; rvr . 'UNM1' = 'COPIER' un ; rvr . 'TNM1' = 'COPIER' tn ; rvr . 'PNM1' = 'COPIER' pn ; rvr . 'NUM1' = 'COPIER' nu ; * * Film * 'SI' ('OU' ('EGA' (MODULO pdt0 freq2) 0) ('EGA' pdt0 1)); rvf = rv . 'FILM' ; rvf . dimtab = 'TABLE' ; rvf . dimtab . 'IT' = pdt0 ; rvf . dimtab . 'TI' = time0 ; rvf . dimtab . 'UN' = 'COPIER' un ; rvf . dimtab . 'TN' = 'COPIER' tn ; rvf . dimtab . 'PN' = 'COPIER' pn ; rvf . dimtab . 'NU' = 'COPIER' nu ; 'FINSI' ; 'RESPRO' mat1 chp1 ; * * End of procedure file CALRESI * 'FINPROC' ; ************************************************************************ * NOM : ELNOPRES * DESCRIPTION : Projette un champ de pression au sommet * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 14/10/2002, version initiale * HISTORIQUE : v1, 14/10/2002, création * HISTORIQUE : * HISTORIQUE : ************************************************************************ * Prière de PRENDRE LE TEMPS de compléter les commentaires * en cas de modification de ce sous-programme afin de faciliter * la maintenance ! ************************************************************************ * * 'DEBPROC' ELNOPRES ; 'ARGUMENT' pn*'CHPOINT ' ; * 'SI' ('EGA' kpres 'MSOMMET') ; 'SINON' ; 'FINSI' ; 'RESPRO' pn2 ; * * End of procedure file ELNOPRES * 'FINPROC' ; ************************************************************************ * NOM : FILM * DESCRIPTION : Affiche sous forme d'animation des infos stockées * dans la table rvf * On peut préciser un indice de début, un indice de fin * et un pas pour n'afficher qu'une partie des informations * contenues dans la table. * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 23/10/2002, version initiale * HISTORIQUE : v1, 23/10/2002, création * HISTORIQUE : * HISTORIQUE : ************************************************************************ * Prière de PRENDRE LE TEMPS de compléter les commentaires * en cas de modification de ce sous-programme afin de faciliter * la maintenance ! ************************************************************************ * * 'DEBPROC' FILM ; 'ARGUMENT' rvf*'TABLE ' ; 'ARGUMENT' ndebu/'ENTIER ' ; 'ARGUMENT' nfin/'ENTIER ' ; 'ARGUMENT' ninter/'ENTIER ' ; * * Un champ nul pour les déformées * 'NATURE' 'DISCRET'; * liv = 'ET' ('EXISTE' ndebu) ('EXISTE' nfin) ; 'SI' (liv) ; livok = 'ET' liv ('ET' ('<' ndebu nfin) ('ET' ('>EG' ndebu 1) ('<EG' nfin dimtab)) ) ; 'FINSI' ; lviv = 'ET' ('EXISTE' ninter) ('EXISTE' livok) ; 'SI' (lviv) ; * On corrige nfin pour que MODULO (- nfin ndebu) ninter =0 npouet = '/' ('-' nfin ndebu) ninter ; nfin = '+' ndebu ('*' npouet ninter) ; 'FINSI' ; 'SI' (liv) ; 'SI' (livok) ; 'SI' (lviv) ; 'SINON' ; 'FINSI' ; 'SINON' ; 'ERREUR' 'Bornes de l"intervalle incorrectes' ; 'FINSI' ; 'SINON' ; 'FINSI' ; * * Détermination de l'échelle de vitesse * idimt = 'EXTRAIRE' lindic &iindic ; lavit = rvf . idimt . 'UN' ; 'FIN' iindic ; echvit = 'MAXIMUM' lemax 'ABS' ; uref = '/' ('*' ladens 4.0D0) echvit ; * * Animation de la vitesse * tabvit = 'TABLE' ; idimt = 'EXTRAIRE' lindic &iindic ; lavit = rvf . idimt . 'UN' ; * latem = rvf . idimt . 'TN' ; vecvit = 'VECTEUR' lavit uref 'UX' 'UY' 'JAUN' ; * defvit = 'DEFORME' mt dxmt 0.D0 vecvit latem ; defvit = 'DEFORME' mt dxmt 0.D0 vecvit ; tabvit . &iindic = defvit ; 'FIN' iindic ; titvit = 'CHAINE' 'FORMAT' formflot 'Vitesse ; echvit=' echvit titglob ; 'OUBLIER' tabvit ; 'MENAGE' ; * * Animation de la température * tabtem = 'TABLE' ; idimt = 'EXTRAIRE' lindic &iindic ; latem = rvf . idimt . 'TN' ; deftem = 'DEFORME' mt dxmt 0.D0 latem ; tabtem . &iindic = deftem ; 'FIN' iindic ; tittem = 'CHAINE' 'FORMAT' formflot 'Temperature' titglob ; 'OUBLIER' tabtem ; 'MENAGE' ; 'OPTION' 'ISOV' isovorig ; * * Animation de la pression * tabpre = 'TABLE' ; idimt = 'EXTRAIRE' lindic &iindic ; lapre = ELNOPRES (rvf . idimt . 'PN') ; defpre = 'DEFORME' mt dxmt 0.D0 lapre ; tabpre . &iindic = defpre ; 'FIN' iindic ; titpre = 'CHAINE' 'FORMAT' formflot 'Pression' titglob ; 'OUBLIER' tabpre ; 'MENAGE' ; 'OPTION' 'ISOV' isovorig ; * * Animation de la viscosité * tabnu = 'TABLE' ; idimt = 'EXTRAIRE' lindic &iindic ; defnu = 'DEFORME' mt dxmt 0.D0 lenu ; tabnu . &iindic = defnu ; 'FIN' iindic ; titnu = 'CHAINE' 'FORMAT' formflot 'Viscosite' titglob ; 'OUBLIER' tabnu ; 'MENAGE' ; 'OPTION' 'ISOV' isovorig ; * * End of procedure file FILM * 'FINPROC' ; ************************************************************************ * NOM : MODULO * DESCRIPTION : Calcule un entier modulo un autre... * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 15/10/2002, version initiale * HISTORIQUE : v1, 15/10/2002, création * HISTORIQUE : * HISTORIQUE : ************************************************************************ * Prière de PRENDRE LE TEMPS de compléter les commentaires * en cas de modification de ce sous-programme afin de faciliter * la maintenance ! ************************************************************************ * * 'DEBPROC' MODULO ; 'ARGUMENT' i*'ENTIER' j*'ENTIER' ; 'SI' ('EGA' j 0) ; 'MESSAGE' 'Impossible de faire modulo 0' ; 'ERREUR' 5 ; 'SINON' ; k=i '/' j ; mod=i '-' ( k '*'j ) ; 'RESPRO' mod ; 'FINSI' ; * * End of procedure file MODULO * 'FINPROC' ; ************************************************************************ * NOM : PHOTO * DESCRIPTION : Trace des infos stockées dans la table rvf * (comme la procédure FILM mais sans faire d'animations) * On peut préciser un indice de début, un indice de fin * et un pas pour n'afficher qu'une partie des informations * contenues dans la table. * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 23/10/2002, version initiale * HISTORIQUE : v1, 23/10/2002, création * HISTORIQUE : * HISTORIQUE : ************************************************************************ * Prière de PRENDRE LE TEMPS de compléter les commentaires * en cas de modification de ce sous-programme afin de faciliter * la maintenance ! ************************************************************************ * * 'DEBPROC' PHOTO ; 'ARGUMENT' rvf*'TABLE ' ; 'ARGUMENT' ndebu/'ENTIER ' ; 'ARGUMENT' nfin/'ENTIER ' ; 'ARGUMENT' ninter/'ENTIER ' ; * * Un champ nul pour les déformées * 'NATURE' 'DISCRET'; * liv = 'ET' ('EXISTE' ndebu) ('EXISTE' nfin) ; 'SI' (liv) ; livok = 'ET' liv ('ET' ('<' ndebu nfin) ('ET' ('>EG' ndebu 1) ('<EG' nfin dimtab)) ) ; 'FINSI' ; lviv = 'ET' ('EXISTE' ninter) ('EXISTE' livok) ; 'SI' (lviv) ; * On corrige nfin pour que MODULO (- nfin ndebu) ninter =0 npouet = '/' ('-' nfin ndebu) ninter ; nfin = '+' ndebu ('*' npouet ninter) ; 'FINSI' ; 'SI' (liv) ; 'SI' (livok) ; 'SI' (lviv) ; 'SINON' ; 'FINSI' ; 'SINON' ; 'ERREUR' 'Bornes de l"intervalle incorrectes' ; 'FINSI' ; 'SINON' ; 'FINSI' ; * * Détermination de l'échelle de vitesse * idimt = 'EXTRAIRE' lindic &iindic ; lavit = rvf . idimt . 'UN' ; 'FIN' iindic ; echvit = 'MAXIMUM' lemax 'ABS' ; uref = '/' ('*' ladens 2.0D0) echvit ; * * Photos de la vitesse * idimt = 'EXTRAIRE' lindic &iindic ; letem = rvf . idimt . 'TI' ; lavit = rvf . idimt . 'UN' ; titvit = 'CHAINE' 'FORMAT' formflot 'Vitesse ; tps=' letem ; TRACVIT lavit titvit echvit ; 'FIN' iindic ; * * Photos de la température * idimt = 'EXTRAIRE' lindic &iindic ; letem = rvf . idimt . 'TI' ; latem = rvf . idimt . 'TN' ; tittem = 'CHAINE' 'FORMAT' formflot 'Temperature ; tps=' letem ; TRACCHPO latem tittem ; 'FIN' iindic ; * * Photos de la pression * idimt = 'EXTRAIRE' lindic &iindic ; letem = rvf . idimt . 'TI' ; lapre = ELNOPRES (rvf . idimt . 'PN') ; titpre = 'CHAINE' 'FORMAT' formflot 'Pression ; tps=' letem ; TRACCHPO lapre titpre ; 'FIN' iindic ; * * Photos de la viscosité * idimt = 'EXTRAIRE' lindic &iindic ; letem = rvf . idimt . 'TI' ; lavis = rvf . idimt . 'NU' ; titvis = 'CHAINE' 'FORMAT' formflot 'Viscosite ; tps=' letem ; TRACCHML lavis titvis ; 'FIN' iindic ; * * End of procedure file PHOTO * 'FINPROC' ; ************************************************************************ * NOM : TRACCHML * DESCRIPTION : Trace un CHPOINT défini sur les centres des éléments * (valeur constante par élément) avec titre optionnel * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 04/11/2002, version initiale * HISTORIQUE : v1, 04/11/2002, création * HISTORIQUE : * HISTORIQUE : ************************************************************************ * Prière de PRENDRE LE TEMPS de compléter les commentaires * en cas de modification de ce sous-programme afin de faciliter * la maintenance ! ************************************************************************ * * 'DEBPROC' TRACCHML ; 'ARGUMENT' chml*'CHPOINT ' ; tituap = 'CHAINE' tit ' ' titglob ; 'TRACER' rescal modbid 'TITR' tituap ; * * End of procedure file TRACCHML * 'FINPROC' ; ************************************************************************ * NOM : TRACCHPO * DESCRIPTION : Tracé d'un chpoint avec titre optionnel. * * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 14/10/2002, version initiale * HISTORIQUE : v1, 14/10/2002, création * HISTORIQUE : * HISTORIQUE : ************************************************************************ * Prière de PRENDRE LE TEMPS de compléter les commentaires * en cas de modification de ce sous-programme afin de faciliter * la maintenance ! ************************************************************************ * * 'DEBPROC' TRACCHPO ; 'ARGUMENT' pn*'CHPOINT ' ; 'SI' ('EXISTE' tit) ; titpn = 'CHAINE' 'FORMAT' formflot tit titglob ; 'SINON' ; 'FINSI' ; rescal = pn ; 'TRACER' rescal mt mt 'TITR' titpn nbisov ; * * End of procedure file TRACCHPO * 'FINPROC' ; ************************************************************************ * NOM : TRACVIT * DESCRIPTION : Trace un champ vectoriel sous forme de flèches avec * titre optionnel. * On peut préciser une échelle pour les vitesses. Si on ne * la précise pas, elle est calculée automatiquement * * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 14/10/2002, version initiale * HISTORIQUE : v1, 14/10/2002, création * HISTORIQUE : * HISTORIQUE : ************************************************************************ * Prière de PRENDRE LE TEMPS de compléter les commentaires * en cas de modification de ce sous-programme afin de faciliter * la maintenance ! ************************************************************************ * * 'DEBPROC' TRACVIT ; 'ARGUMENT' vit*'CHPOINT ' ; 'ARGUMENT' echvit/'FLOTTANT' ; 'SI' ('NON' ('EXISTE' echvit)) ; echvit = 'MAXIMUM' vit 'ABS' ; 'SINON' ; echvit = 'ABS' echvit ; 'FINSI' ; 'SI' ('<' echvit 1.D-30) ; echvit = 1.D0 ; 'FINSI' ; uref = '/' ('*' ladens 2.0D0) echvit ; vecvit = 'VECTEUR' vit uref 'UX' 'UY' 'JAUN' ; 'SI' ('EXISTE' tit) ; titvit = 'CHAINE' 'FORMAT' formflot tit ' echvit=' echvit titglob ; 'SINON' ; titvit = 'CHAINE' 'FORMAT' formflot 'VIT echvit=' echvit titglob ; 'FINSI' ; 'TRACER' vecvit mt 'TITR' titvit ; * * End of procedure file TRACVIT * 'FINPROC' ; 'OPTION' 'ECHO' 1 ; ************************************************************************ * NOM : SOUDAGE2 * DESCRIPTION : cas-test Navier-Stokes axi 2D stationnaire Bousinessq * effet Marangoni et phase liquide-solide * * Biblio : * Rapport DM2S SFME/LTMF/RT/02-052/A * S. Gounand * Deux cas-tests en vue d'une modélisation numérique d'un * processus de soudage. * * LANGAGE : GIBIANE-CAST3M * AUTEUR : Stéphane GOUNAND (CEA/DEN/DM2S/SFME/LTMF) * mél : gounand@semt2.smts.cea.fr ********************************************************************** * VERSION : v1, 03/10/2002, version initiale * HISTORIQUE : v1, 03/10/2002, création * HISTORIQUE : * HISTORIQUE : ************************************************************************ * Prière de PRENDRE LE TEMPS de compléter les commentaires * en cas de modification de ce sous-programme afin de faciliter * la maintenance ! ************************************************************************ * * Paramètres : * misaup = FAUX : on effectue une sauvegarde * VRAI : on ne fait pas de sauvegarde * * post n'a de sens que si misaup = FAUX * alors : post = FAUX : on effectue la partie calcul * + sauvegarde * post = VRAI : on effectue la partie restitution * + post-traitement * * interact = VRAI si on travaille en interactif * FAUX sinon * * graph = VRAI si on veut des graphiques * FAUX sinon * * grossier = VRAI : calcul grossier * FAUX : calcul fin * * idsauv et titsauv : nom du fichier de sauvegarde misaup = VRAI ; post = VRAI ; *interact= VRAI ; *graph = VRAI ; interact= FAUX ; graph = FAUX ; grossier = VRAI; idsauv = 'CHAINE' 'soudage2_it1600' ; * * Fin des paramètres * ****************************************************************** 'OPTION' 'MODE' 'AXIS' ; 'OPTION' 'ISOV' 'SULI' ; nbisov = 15 ; 'SI' ('NON' interact) ; 'OPTION' 'TRAC' 'PSC' ; 'OPTION' 'ECHO' 0 ; 'SINON' ; 'OPTION' 'TRAC' 'X' ; 'FINSI' ; formflot ='(1PE9.2)' ; 'SI' ('OU' ('NON' post) misaup) ; ****************************************************************** * * Donnees materielles (dimensionnelles) * (systeme SI) * Geometrie * long : rayon de la plaque * epai : epaisseur de la plaque * ras : rayon de la source gaussienne *long = 20.D-3 ; long = 10.D-3 ; epai = 2.5D-3 ; ras = 1.5D-3 ; * Physique * rho : masse volumique * cp : chaleur spécifique à pression constante * mu : viscosite (dynamique) * kappa : conductivité thermique * beta : dilatabilité * dgdt : variation de la tension superficielle * avec la température * tfusion : température de fusion * puis : puissance de la source gaussienne rho = 7200.D0 ; cp = 500.D0 ; mu = 0.05D0 ; kappa = 20.D0 ; beta = 1.D-4 ; rhocp = '*' rho cp ; alfa = '/' kappa rhocp ; nu = '/' mu rho ; gb = 0. ('*' -9.81D0 beta) ; dgdt = 1.D-4 ; tfusion = 1700.D0 ; * *lambda = 25.D0 ; puis = 900.D0 ; *sigma = 5.6710D-8 ; * Conditions aux limites t0 = 300.D0 ; * * Paramètres numériques (I) * * dg : densité grosse * dp : densité petite * dt : pas de temps * nitma : nombre de pas de temps * nfilm : intervalle de sauvegarde des champs * dans la table rv . 'FILM' 'SI' (grossier) ; dg = 0.5D-3 ; dp = 0.1D-3 ; dt = 0.001D0 ; nitma = 30 ; nfilm = 1 ; 'SINON' ; dg = 0.5D-3 ; dp = 0.1D-3 ; dt = 0.001D0 ; nitma = 1600 ; nfilm = 20 ; 'FINSI' ; * * Paramètres numériques (II) * discr = 'QUAF' ; kpres = 'CENTREP1' ; ksupg = 'CENTREE' ; kmeth = 'IMPL' ; * titre global pour les dessins titglob = 'CHAINE' ' soudage2' ; * titdgibi = 'CHAINE' 'Cas test' titglob ; 'MESSAGE' ('CHAINE' '********************************') ; 'MESSAGE' titdgibi ; 'MESSAGE' ('CHAINE' '********************************') ; * * Géométrie * pA = 0.D0 0.D0 ; pB = long 0.D0 ; pC = long epai ; pD = 0.D0 epai ; bas = 'DROIT' pA pB 'DINI' dp 'DFIN' dg ; dro = 'DROIT' pB pC 'DINI' dg 'DFIN' dp ; hau = 'DROIT' pC pD 'DINI' dg 'DFIN' dp ; gau = 'DROIT' pD pA 'DINI' dp 'DFIN' dg ; mt = 'DALLER' bas dro hau gau ; 'SI' graph ; 'TRACER' mt 'TITRE' titgeo ; 'FINSI' ; * * Modèle * _mt = 'CHANGER' mt 'QUAF' ; _bas = 'CHANGER' bas 'QUAF' ; _dro = 'CHANGER' dro 'QUAF' ; _hau = 'CHANGER' hau 'QUAF' ; _gau = 'CHANGER' gau 'QUAF' ; 'ELIMINATION' (_mt 'ET' _bas 'ET' _dro 'ET' _hau 'ET' _gau) ('/' dp 100.D0) ; modbid = 'MODELISER' mt 'THERMIQUE' ; $mt = 'MODELISER' _mt 'NAVIER_STOKES' discr ; $bas = 'MODELISER' _bas 'NAVIER_STOKES' discr ; $dro = 'MODELISER' _dro 'NAVIER_STOKES' discr ; $hau = 'MODELISER' _hau 'NAVIER_STOKES' discr ; $gau = 'MODELISER' _gau 'NAVIER_STOKES' discr ; * * Construction de la source * fes = '*' (('*' rhauc rhauc)) ('/' -3.D0 ('*' ras ras)) ; gs = '*' ('EXP' fes) ('/' 3.D0 (PI '*' ras '*' ras)) ; * * Rescaling de la source * 'MESSAGE' ('CHAINE' 'FORMAT' formflot 'int. source gauss avant correction=' isgavc ' W' ) ; fcor = '/' puis isgavc ; sgs = '*' sgs fcor ; 'MESSAGE' ('CHAINE' 'FORMAT' formflot 'int. source gauss apres correction=' isgapc ' W' ) ; stot = sgs ; * * conditions initiales * * * conditions aux limites * * vitesse * temperature * * on supprime les doublons dans mailt avant MANU CHPO mailt = 'CHANGER' 'POI1' mailt ; * * pression imposée en un point mailp = mp1 ; * climtot = climt 'ET' climvr 'ET' climvz 'ET' climp ; * * Mise en place du calcul numérique * * résidu et film 'ZONE' $mt 'OPER' 'CALRESI' 1 nfilm 1.D-6 ; * quantité de mouvement rv = 'EQEX' rv 'OPTI' 'EF' 'IMPL' 'CENTREE' 'CENTREP1' 'ZONE' $mt 'OPER' 'CALCNU' 'OPTI' 'EF' 'IMPL' 'CENTREE' 'CENTREP1' 'ZONE' $mt 'OPER' 'NS' 1. 'UN' 'NU' gb 'TN' t0 'INCO' 'UN' ; * effet Marangoni rv = 'EQEX' rv 'OPTI' 'EF' 'IMPL' 'CENTREE' 'CENTREP1' 'ZONE' $mt 'OPER' 'CALCTAU' 'OPTI' 'EF' 'IMPL' 'CENTREE' 'CENTREP1' 'ZONE' $hau 'OPER' 'TOIM' 'TAU' 'INCO' 'UN' ; * pression rv = 'EQEX' rv 'OPTI' 'EF' 'IMPL' 'CENTREE' 'CENTREP1' ; * énergie rv = 'EQEX' rv 'OPTI' 'EF' 'IMPL' 'CENTREE' 'CENTREP1' 'ZONE' $mt 'OPER' 'LAPN' alfa 'INCO' 'TN' 'OPTI' 'EF' 'IMPL' 'CENTREE' 'CENTREP1' 'OPTI' 'EF' 'IMPL' 'CENTREE' 'CENTREP1' ; * temps rv = 'EQEX' rv 'OPTI' 'EF' 'IMPL' 'CENTREE' 'CENTREP1' 'ZONE' $mt 'OPER' 'DFDT' 1. 'UN' DT 'INCO' 'UN' 'OPTI' 'EF' 'IMPL' 'CENTREE' 'CENTREP1' 'ZONE' $mt 'OPER' 'DFDT' 1. 'TN' DT 'INCO' 'TN' ; rv . 'CLIM' = climtot ; rv . 'INCO' = 'TABLE' 'INCO' ; * Infos supplémentaires pour la procédure CALRESI rv . 'RESIDU' = 'TABLE' ; * Champs rv . 'RESIDU' . 'PNM1' = 'COPIER' rv . 'INCO' . 'PN' ; rv . 'RESIDU' . 'NUM1' = 'COPIER' rv . 'INCO' . 'NU' ; * Matrices masse pour le calcul des résidus rk . 'INCO' = TABLE 'INCO' ; rv . 'RESIDU' . 'MMU' = mm ; rk . 'INCO' = TABLE 'INCO' ; rv . 'RESIDU' . 'MMT' = mm ; $mt2 = 'MODELISER' _mt 'NAVIER_STOKES' 'LINE' ; rk . 'INCO' = TABLE 'INCO' ; rv . 'RESIDU' . 'MMP' = mm ; * Erreurs * Infos supplémentaires pour les films rv . 'FILM' = 'TABLE' ; * * Calcul proprement dit * 'TEMPS' 'ZERO' ; EXEC rv ; tcpu = TABTPS.'TEMPS_CPU'.'INITIAL'; tcpus = '/' ('FLOTTANT' tcpu) 100.D0 ; 'MESSAGE' ('CHAINE' 'tcpus=' tcpus) ; *'TEMPS' 'IMPR' ; rvi = rv . 'INCO' ; rvr = rv . 'RESIDU' ; * * Résultats intéressants mis dans la table res * res = 'TABLE' ; res . 'TCPU' = tcpus ; res . 'MAILLAGE' = mt ; res . 'MODELE' = $mt ; res . 'IT' = rvr . 'IT' ; res . 'ERU' = rvr . 'ERU' ; res . 'ERT' = rvr . 'ERT' ; res . 'ERP' = rvr . 'ERP' ; res . 'ERN' = rvr . 'ERN' ; res . 'UN' = rvi . 'UN' ; res . 'TN' = rvi . 'TN' ; res . 'PN' = rvi . 'PN' ; res . 'NU' = rvi . 'NU' ; res . 'FILM' = rv . 'FILM' ; 'SI' ('NON' misaup) ; 'OPTION' 'SAUV' titsauv ; 'SAUVER' ; 'FINSI' ; 'FINSI' ; * * *========================================================== * Post traitement *========================================================== 'SI' ('OU' post misaup) ; 'SI' ('NON' misaup) ; 'OPTION' 'REST' titsauv ; 'RESTITUER' ; 'FINSI' ; tcpu = res . 'TCPU' ; mt = res . 'MAILLAGE' ; $mt = res . 'MODELE' ; lit = res . 'IT' ; leru = res . 'ERU' ; lert = res . 'ERT' ; lerp = res . 'ERP' ; lern = res . 'ERN' ; un = res . 'UN' ; tn = res . 'TN' ; pn = res . 'PN' ; nu = res . 'NU' ; rf = res . 'FILM' ; 'SI' graph ; * Quelques graphiques 'SI' ('>' ndimlit 2) ; xeveru = lit ; yeveru = '/' ('LOG' leru) ('LOG' 10.D0) ; 'DESSIN' everu 'TITR' tituap ; xevert = lit ; yevert = '/' ('LOG' lert) ('LOG' 10.D0) ; 'DESSIN' evert 'TITR' tituap ; xeverp = lit ; yeverp = '/' ('LOG' lerp) ('LOG' 10.D0) ; 'DESSIN' everp 'TITR' tituap ; xevern = lit ; yevern = '/' ('LOG' lern) ('LOG' 10.D0) ; 'DESSIN' evern 'TITR' tituap ; 'FINSI' ; tituap = 'CHAINE' 'Vitesse' ; TRACVIT un tituap ; TRACCHPO tn tituap ; tituap = 'CHAINE' 'Pression' ; TRACCHPO (ELNOPRES pn) tituap ; tituap = 'CHAINE' 'Viscosite (nu)' ; TRACCHML nu tituap ; 'SI' interact ; FILM rf ; 'FINSI' ; 'FINSI' ; * *'SI' ('OU' post misaup) ; 'FINSI' ; * * On ne sait pas trop quoi faire comme test... * tmax = 'MAXIMUM' tn ; tmin = 'MINIMUM' tn ; umax = 'MAXIMUM' u ; umin = 'MINIMUM' u ; vmax = 'MAXIMUM' v ; vmin = 'MINIMUM' v ; * tmaxref = 5.084D+3 ; tminref = 3.000D+2 ; umaxref = 8.301D-1 ; uminref =-2.007D-1 ; vmaxref = 1.118D-1 ; vminref =-2.002D-1 ; * errtmax = ERRREL tmax tmaxref ; errtmin = ERRREL tmin tminref ; errumax = ERRREL umax umaxref ; errumin = ERRREL umin uminref ; errvmax = ERRREL vmax vmaxref ; errvmin = ERRREL vmin vminref ; * tsttmax = '>' errtmax 1.D-3 ; tsttmin = '>' errtmin 1.D-3 ; tstumax = '>' errumax 1.D-3 ; tstumin = '>' errumin 1.D-3 ; tstvmax = '>' errvmax 1.D-3 ; tstvmin = '>' errvmin 1.D-3 ; test = (tsttmax 'OU' tsttmin 'OU' tstumax 'OU' tstumin 'OU' tstvmax 'OU' tstvmin) ; 'MESSAGE' ('CHAINE' 'Tmax =' tmax ' K') ; 'MESSAGE' ('CHAINE' 'Tmin =' tmin ' K') ; 'MESSAGE' ('CHAINE' 'Umax =' umax ' m.s-1') ; 'MESSAGE' ('CHAINE' 'Umin =' umin ' m.s-1') ; 'MESSAGE' ('CHAINE' 'Vmax =' vmax ' m.s-1') ; 'MESSAGE' ('CHAINE' 'Vmin =' vmin ' m.s-1') ; 'SI' test ; 'MESSAGE' ('CHAINE' 'Tmaxref =' tmaxref ' K') ; 'MESSAGE' ('CHAINE' 'Tminref =' tminref ' K') ; 'MESSAGE' ('CHAINE' 'Umaxref =' umaxref ' m.s-1') ; 'MESSAGE' ('CHAINE' 'Uminref =' uminref ' m.s-1') ; 'MESSAGE' ('CHAINE' 'Vmaxref =' vmaxref ' m.s-1') ; 'MESSAGE' ('CHAINE' 'Vminref =' vminref ' m.s-1') ; 'FINSI' ; * 'MESSAGE' ('CHAINE' 'Errtmax =' errtmax) ; 'MESSAGE' ('CHAINE' 'Errtmin =' errtmin) ; 'MESSAGE' ('CHAINE' 'Errumax =' errumax) ; 'MESSAGE' ('CHAINE' 'Errumin =' errumin) ; 'MESSAGE' ('CHAINE' 'Errvmax =' errvmax) ; 'MESSAGE' ('CHAINE' 'Errvmin =' errvmin) ; 'SI' interact ; 'OPTION' 'DONN' 5 ; 'SINON' ; 'SI' test ; 'ERREUR' 5 ; 'SINON' ; 'ERREUR' 0 ; 'FINSI' ; 'FINSI' ; * * End of dgibi file SOUDAGE2 * 'FIN' ;
© Cast3M 2003 - Tous droits réservés.
Mentions légales