1 : C CAPANU SOURCE FANDEUR 11/07/19 21:15:30 7042 2 : 3 : C======================================================================= 4 : C= C A P A N U = 5 : C= ----------- = 6 : C= = 7 : C= Fonction : = 8 : C= ---------- = 9 : C= Calcul de la matrice de CAPACITE CALORIFIQUE pour EF MASSIF = 10 : C= = 11 : C= Parametres : (E)=Entree (S)=Sortie = 12 : C= ------------ = 13 : C= NEF (E) Numero de l'ELEMENT FINI dans NOMTP (cf. CCHAMP) = 14 : C= IMAIL (E) Numero du segment IMODEL dans le segment MMODEL = 15 : C= IPMODL (E) Pointeur sur un segment IMODEL (ACTIF) = 16 : C= IPCHA1 (E) Pointeur sur un segment MCHELM de CARACTERISTIQUES = 17 : C= IPRIGI (E/S) Pointeur sur l'objet RIGIDITE (CAPACITE) (ACTIF) = 18 : C= = 19 : C= Variables locales : = 20 : C= ------------------- = 21 : C= NBNN Nombre de NOEUDS dans l'element considere = 22 : C= NbElem Nombre d'ELEMENTS dans le maillage elementaire = 23 : C= NBPGAU Nombre de points de Gauss de l'element fini = 24 : C= CAP(NBNN,NBNN) Matrice de CAPACITE ELEMENTAIRE = 25 : C= XE(3,NBNN) Coordonnees GLOBALES des noeuds de l'ELEMENT = 26 : C= SHP(6,NBNN) Tableau de TRAVAIL = 27 : C= FORME(NBNN) Fonctions de FORME = 28 : C= VACOMP Valeurs des composantes recherchees = 29 : C= = 30 : C= Denis ROBERT, le 15 fevrier 1988. = 31 : C======================================================================= 32 : 33 : SUBROUTINE CAPANU (NEF,IPMAIL,IPINTE,IVAMAT,NVAMAT,IVAPHA,NVAPHA, 34 : & IPMATR,NLIGR) 35 : 36 : IMPLICIT INTEGER(I-N) 37 : IMPLICIT REAL*8 (A-H,O-Z) 38 : 39 : -INC CCOPTIO 40 : -INC CCREEL 41 : 42 : -INC SMCHAML 43 : -INC SMCOORD 44 : -INC SMELEME 45 : -INC SMINTE 46 : -INC SMRIGID 47 : 48 : SEGMENT MPTVAL 49 : INTEGER IPOS(NS),NSOF(NS),IVAL(NCOSOU) 50 : CHARACTER*16 TYVAL(NCOSOU) 51 : ENDSEGMENT 52 : 53 : SEGMENT MMAT1 54 : REAL*8 CAP(NLIGR,NLIGR),XE(3,NBNN) 55 : REAL*8 SHP(6,NBNN),FORME(NBNN) 56 : ENDSEGMENT 57 : 58 : REAL*8 VACOMP(3) 59 : 60 : C 1 - INITIALISATIONS ET VERIFICATIONS 61 : C ====================================== 62 : MINTE = IPINTE 63 : C* SEGACT,MINTE 64 : NBPGAU = POIGAU(/1) 65 : C ===== 66 : MELEME = IPMAIL 67 : C* SEGACT,MELEME 68 : NBNN = NUM(/1) 69 : NBELEM = NUM(/2) 70 : C ===== 71 : MPTVAL = IVAMAT 72 : c* SEGACT,MPTVAL 73 : IF (IVAPHA.NE.0) THEN 74 : MPTVAL = IVAPHA 75 : c* SEGACT,MPTVAL 76 : ENDIF 77 : C ===== 78 : XMATRI = IPMATR 79 : C* SEGACT,XMATRI*MOD 80 : C ===== 81 : SEGINI,MMAT1 82 : 83 : C 2 - BOUCLE SUR LES ELEMENTS DU MAILLAGE ELEMENTAIRE IPMAIL 84 : C ============================================================ 85 : DO iElt = 1, NBELEM 86 : C ===== 87 : C 2.1 - Mise a zero de la matrice de CAPACITE de l'element iElt 88 : C ===== 88 : CALL ZERO(CAP,NLIGR,NLIGR) 89 : C ===== 90 : C 2.2 - Recuperation des coordonnees GLOBALES des noeuds de l'element 91 : C ===== 91 : CALL DOXE(XCOOR,IDIM,NBNN,NUM,iElt,XE) 92 : C ===== 93 : C 2.3 - Boucle sur les points de Gauss de l'element iElt 94 : C ===== 95 : iFois=0 96 : DO iGau = 1, NBPGAU 97 : C ======= 98 : C 2.3.1 - Calcul du jacobien, des fonctions de forme et de leurs 99 : C derivees au point de Gauss iGau 100 : C ======= 100 : CALL CAPA4(0,iGau,NBNN,XE,SHPTOT,SHP,FORME,DJAC) 101 : IF (IERR.NE.0) GOTO 9990 102 : IF (DJAC.LT.XZero) iFois=iFois+1 103 : DJAC = ABS(DJAC) 104 : C ======= 105 : C 2.3.2 - Erreur si le jacobien est nul en ce point de Gauss 106 : C ======= 107 : IF (DJAC.LT.XPetit) THEN 108 : INTERR(1) = iElt 108 : CALL ERREUR(259) 109 : GOTO 9990 110 : ENDIF 111 : C ======= 112 : C 2.3.3 - Calcul du terme Rho.Cp.Vol en ce point de Gauss avec prise 113 : C en compte d'un eventuel changement de phase et de la section 114 : C dans le cas d'un element BARRe (erreur si celle-ci est nulle) 115 : C ======= 115 : CALL CAPA5(iGau,iElt,IVAMAT,NVAMAT,IVAPHA,NVAPHA,VACOMP) 116 : CAPA = DJAC * POIGAU(iGau) * VACOMP(1) 117 : C ======= 118 : C 2.3.4 - Calcul de la contribution du point de Gauss a la matrice 119 : C CAPACITE elementaire pour cet element fini 120 : C ======= 120 : CALL NTNST(FORME,CAPA,NLIGR,1,CAP) 121 : ENDDO 122 : C ===== 123 : C 2.4 - Erreur si, en un point de Gauss, le jacobien change de signe 124 : C ===== 125 : IF (iFois.NE.0.AND.iFois.NE.NBPGAU) THEN 126 : INTERR(1) = iElt 126 : CALL ERREUR(195) 127 : GOTO 9990 128 : ENDIF 129 : C ===== 130 : C 2.5 - Stockage de la matrice de CAPACITE pour cet element fini 131 : C (remplissage de XMATRI) 132 : C ===== 132 : CALL REMPMT(CAP,NLIGR,RE(1,1,iElt)) 133 : C 134 : ENDDO 135 : 136 : C 3 - MENAGE : DESACTIVATION/DESTRUCTION DE SEGMENTS 137 : C ==================================================== 138 : 9990 CONTINUE 139 : SEGSUP,MMAT1 140 : 141 : RETURN 142 : END 143 : 144 :
© Cast3M 2003 - All rights reserved.
Disclaimer