$$$$ DIFFANIS * DIFFANIS PROCEDUR GBM 04/12/22 21:15:18 4973 *--------------------------------------------------------------------- *---------PROCEDURE DE CALCUL DE LA DISPERSIVITE---------------------- *--------------------------------------------------------------------- 'DEBP' DIFFANIS MateDiff*'CHPOINT' typdi/'MOT' ANISO/'LOGIQUE' ; * |-----------------------------------------------------------------| * | Généralités : DIFFANIS remet un teneur de diffusion isotrope avec * | un format général anisotrope K11 K21 etc .... | * |-----------------------------------------------------------------| * | | * |-----------------------------------------------------------------| * | ENTREES | * |-----------------------------------------------------------------| * | | * | ANISO LOGIQUE VRAI SI ANISOTROPE, FAUX SINON | * | | * | MateDiff : Tenseur de diffusion (type iso, ..) champoint | * | de composante 'K' en isotrope, 'K11', 'K21', | * | 'K22' en anisotrope 2d et 'K11', 'K21', 'K22', 'K31'| * | 'K32', 'K33' en anisotrope 3d. Type 'CARACTERISTIQUE'| * | | * | typdi si 'EFMH' calcul particulier * | | * |-----------------------------------------------------------------| * | SORTIES | * |-----------------------------------------------------------------| * | | * | | * | newdiff : matrice de diffusion identique à Matediff mais écrite| * | sous la forme d'un tenseur si elle était isotrope à | * | une composante K (cette composante est alors reportée| * | à l'identique sur K11, K22 et K33) | * | | * | | ********************************************************************** SI (non (EXISTE ANISO)) ; ANISO = FAUX ; FINSI ; SI (non (EXISTE typdi)) ; typdi = 'VF' ; FINSI ; DEANISO = 'NEG' ('DIME' ('EXTRAIRE' Matediff 'COMP')) 1 ; 'SI' (DEANISO) ; * le tenseur est inchangé mais mis au type caractéristique * On ne garde également que les bons noms de composantes 'SI' ('EGA' ('VALEUR' 'DIME') 2) ; D11P = 'EXCO' Matediff 'K11' 'K11' ; D22P = 'EXCO' Matediff 'K22' 'K22' ; D21P = 'EXCO' Matediff 'K21' 'K21' ; newdiff = D11P '+' D22P '+' D21P ; 'FINSI' ; 'SI' ('EGA' ('VALEUR' 'DIME') 3) ; D11P = 'EXCO' Matediff 'K11' 'K11' ; D22P = 'EXCO' Matediff 'K22' 'K22' ; D33P = 'EXCO' Matediff 'K33' 'K33' ; D21P = 'EXCO' Matediff 'K21' 'K21' ; D31P = 'EXCO' Matediff 'K31' 'K31' ; D32P = 'EXCO' Matediff 'K32' 'K32' ; newdiff = D11P '+' D22P '+' D33P '+' D21P '+' D31P '+' D32P ; 'FINSI' ; 'SINON' ; SI ((NEG typdi 'EFMH') OU ANISO) ; * Le tenseur est isotrope, on charge ses composantes sur la * diagonale du tenseur de diffusion totale (qui contiendra la * dispersion et la diffusion numérique) 'SI' ('EGA' ('VALEUR' 'DIME') 2) ; D11P = 'NOMC' 'K11' Matediff ; D21P = 'NOMC' 'K21' (0.0D0*Matediff) ; D22P = 'NOMC' 'K22' Matediff ; newdiff = D11P '+' D22P '+' D21P ; 'FINSI' ; 'SI' ('EGA' ('VALEUR' 'DIME') 3) ; D11P = 'NOMC' 'K11' Matediff ; D21P = 'NOMC' 'K21' (0.0D0*Matediff) ; D22P = 'NOMC' 'K22' Matediff ; D31P = 'NOMC' 'K31' (0.0*Matediff) ; D32P = 'NOMC' 'K32' (0.0*Matediff) ; D33P = 'NOMC' 'K33' Matediff ; newdiff = D11P '+' D22P '+' D33P '+' D21P '+' D31P '+' D32P ; 'FINSI' ; 'SINON' ; newdiff = 'NOMC' 'K' Matediff ; 'FINSI' ; FINSI ; 'FINPROC' newdiff ;