bdiff
C BDIFF SOURCE FANDEUR 10/12/17 21:15:26 6427 C======================================================================= C= B D I F F = C= --------- = C= Fonction : = C= ---------- = C= Calcul de la matrice Bdif reliant le gradient (au signe pres) en = C= un point d'un element fini aux ddls de la quantite "diffusante" = C= Le jacobien est egalement evalue en ce point pour la verification = C= ulterieure si l'element fini n'est pas trop distordu. = C= = C= Parametres : (E)=Entree (S)=Sortie = C= ------------ = C= XEL (E) Coordonnees des noeuds de l'element fini considere = C= SHPREF (E) Fonctions de forme et leurs derivees au point etudie = C= dans l'element fini de reference = C= NBNO (E) Nombre de noeuds de l'element fini = C= NDIM (E) Nombre de lignes de la matrice GRDDIF = C= ISGNG (E) Valeur negative (<0) si on veut l'oppose du gradient = C= = C= SHP (S) Fonctions de forme et leurs derivees "actuelles" = C= GRDDIF (S) Matrice de gradients Bdif calculee au point etudie = C= DJAC (S) Jacobien au point de l'element etudie = C= = C= Remarque : = C= ---------- = C= Lors de l'entree dans le sous-programme, SHPREF(2 a 4,*) contient = C= les DERIVEES des fonctions de forme par rapport aux coordonnees = C= de REFERENCE Qsi,Eta,Dzeta. = C= En sortie du sous-programme, SHP(2 a 4,*) contient les DERIVEES = C= des fonctions de FORME par rapport aux coordonnees REELLES x,y,z. = C======================================================================= IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) -INC CCREEL -INC PPARAM -INC CCOPTIO C= Quelques constantes (2.Pi et 4.Pi) PARAMETER (X2Pi= 6.283185307179586476925286766559D0) PARAMETER (X4Pi=12.566370614359172953850573533118D0) DIMENSION XEL(3,*),SHPREF(6,*), SHP(6,*),GRDDIF(NDIM,*) C ==================== C 1 - Initialisation C ==================== C*OF CALL ZERO(GRDDIF,IDIM,NBNO) C =================================== C 2.1 - Cas des elements massifs 3D C =================================== IF (IFOMOD.EQ.2) THEN SHP(1,j) = SHPREF(1,j) SHP(2,j) = SHPREF(2,j) SHP(3,j) = SHPREF(3,j) SHP(4,j) = SHPREF(4,j) ENDDO IF (ISGNG .GE. 0) THEN GRDDIF(1,j) = SHP(2,j) GRDDIF(2,j) = SHP(3,j) GRDDIF(3,j) = SHP(4,j) ENDDO ELSE GRDDIF(1,j) = -SHP(2,j) GRDDIF(2,j) = -SHP(3,j) GRDDIF(3,j) = -SHP(4,j) ENDDO ENDIF C ========================================================= C 2.2 - Cas des elements massifs 2D PLAN ou AXISymetrique C ========================================================= ELSE IF (IFOMOD.EQ.-1 .OR. IFOMOD.EQ.0) THEN SHP(1,j) = SHPREF(1,j) SHP(2,j) = SHPREF(2,j) SHP(3,j) = SHPREF(3,j) ENDDO IF (ISGNG .GE. 0) THEN GRDDIF(1,j) = SHP(2,j) GRDDIF(2,j) = SHP(3,j) ENDDO ELSE GRDDIF(1,j) = -SHP(2,j) GRDDIF(2,j) = -SHP(3,j) ENDDO ENDIF IF (IFOMOD.EQ.0) THEN DJAC = X2Pi*DJAC*RR ENDIF C =================================================== C 2.3 - Cas des elements massifs 2D en mode FOURIER C =================================================== ELSE IF (IFOMOD.EQ.1) THEN SHP(1,j) = SHPREF(1,j) SHP(2,j) = SHPREF(2,j) SHP(3,j) = SHPREF(3,j) ENDDO IF (ISGNG .GE. 0) THEN DNN = NIFOUR/RR GRDDIF(1,j) = SHP(2,j) GRDDIF(2,j) = DNN*SHP(1,j) GRDDIF(3,j) = SHP(3,j) ENDDO ELSE DNN = -NIFOUR/RR GRDDIF(1,j) = -SHP(2,j) GRDDIF(2,j) = DNN*SHP(1,j) GRDDIF(3,j) = -SHP(3,j) ENDDO ENDIF IF (NIFOUR.EQ.0) THEN DJAC = X2Pi*DJAC*RR ELSE DJAC = XPi*DJAC*RR ENDIF C =================================== C 2.4 - Cas des elements MASSIFS 1D C =================================== ELSE IF (IFOMOD.EQ.3 .OR. IFOMOD.EQ.4 .OR. IFOMOD.EQ.5) THEN SHP(1,j) = SHPREF(1,j) SHP(2,j) = SHPREF(2,j) ENDDO C= Traitement des modes axisymetriques et spherique 1D IF (ISGNG .GE. 0) THEN GRDDIF(1,j) = SHP(2,j) ENDDO ELSE GRDDIF(1,j) = -SHP(2,j) ENDDO ENDIF IF (IFOMOD.EQ.4) THEN DJAC = X2Pi*DJAC*RR ELSE IF (IFOMOD.EQ.5) THEN DJAC = X4Pi*DJAC*RR*RR ENDIF ENDIF RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales