1 : C CAPAC1 SOURCE FANDEUR 11/07/19 21:15:25 7042 2 : 3 : C======================================================================= 4 : C= C A P A C 1 = 5 : C= ----------- = 6 : C= = 7 : C= Fonction : = 8 : C= ---------- = 9 : C= Calcul de la matrice de CAPACITE CALORIFIQUE pour des elements de = 10 : C= COQue axisymetrique (COQ2) a integration semi-analytique = 11 : C= = 12 : C= Parametres : (E)=Entree (S)=Sortie = 13 : C= ------------ = 14 : C= NEF (E) Numero de l'ELEMENT FINI dans NOMTP = 15 : C= IMAIL (E) Numero du segment IMODEL dans le segment MMODEL = 16 : C= IPCHA1 (E) Pointeur sur un segment MCHEL1 de caracteristiques= 17 : C= CLAT (E) Chaleur latente du changement de phase = 18 : C= IPRIGI (E/S) Matrice de CAPACITE (RIGIDITE) resultat (ACTIF) = 19 : C= = 20 : C= P. DOWLATYARI, juin 1990 (adaptation de capanu.eso) = 21 : C======================================================================= 22 : 23 : SUBROUTINE CAPAC1 (NEF,IPMAIL,IPINTE,IVAMAT,NVAMAT,IVAPHA,NVAPHA, 24 : & IPMATR,NLIGR) 25 : 26 : IMPLICIT INTEGER(I-N) 27 : IMPLICIT REAL*8 (A-H,O-Z) 28 : 29 : -INC CCOPTIO 30 : -INC CCREEL 31 : -INC CCHAMP 32 : 33 : -INC SMCHAML 34 : -INC SMCOORD 35 : -INC SMELEME 36 : -INC SMINTE 37 : -INC SMRIGID 38 : 39 : SEGMENT MMAT1 40 : REAL*8 XE(3,NBNN),FORME(NBNN) 41 : REAL*8 CAPSS(NBNN,NBNN),CAPV(NLIGR,NLIGR) 42 : ENDSEGMENT 43 : 44 : SEGMENT MPTVAL 45 : INTEGER IPOS(NS),NSOF(NS),IVAL(NCOSOU) 46 : CHARACTER*16 TYVAL(NCOSOU) 47 : ENDSEGMENT 48 : 49 : REAL*8 VACOMP(3) 50 : 51 : C= Quelques constantes numeriques 52 : PARAMETER (X2Pi=6.283185307179586476925286766559D0) 53 : PARAMETER (X1s15=0.066666666666666666666666666667D0) 54 : PARAMETER (X2s15=0.133333333333333333333333333333D0) 55 : PARAMETER (X8s15=0.533333333333333333333333333333D0) 56 : PARAMETER (X1s30=0.033333333333333333333333333333D0) 57 : 58 : C- Element purement axisymetrique : 59 : IF (IFOMOD.NE.0) THEN 59 : CALL ERREUR(19) 60 : RETURN 61 : ENDIF 62 : 63 : C 1 - INITIALISATIONS ET VERIFICATIONS 64 : C ====================================== 65 : MELEME = IPMAIL 66 : c* SEGACT,MELEME 67 : NBNN = NUM(/1) 68 : NBELEM = NUM(/2) 69 : NBNN2 = 2*NBNN 70 : c* NBNN3 = 3*NBNN 71 : C ===== 72 : MINTE = IPINTE 73 : c* SEGACT,MINTE 74 : NBPGAU = POIGAU(/1) 75 : C- Petit test utile ? 76 : NBNO = SHPTOT(/2) 77 : IF (NBNO.NE.2) THEN 77 : CALL ERREUR(5) 78 : RETURN 79 : ENDIF 80 : C ===== 81 : MPTVAL = IVAMAT 82 : c* SEGACT,MPTVAL 83 : c*C- Verification sur la constance du champ d'epaisseur : 84 : c*C- epaisseur toujours placee en derniere position du mptval 85 : c* IPMELV = IVAL(NVAMAT) 85 : c* CALL QUELCH(IPMELV,IOK) 86 : c* IF (IOK.NE.0) THEN 86 : c* CALL ERREUR(566) 87 : c* GOTO 9990 88 : c* ENDIF 89 : C ===== 90 : c* IF (IVAPHA.NE.0) THEN 91 : c* MPTVAL = IVAPHA 92 : c* SEGACT,MPTVAL 93 : c* ENDIF 94 : C ===== 95 : XMATRI = IPMATR 96 : c* SEGACT,XMATRI*MOD 97 : c* NLIGRP = NBNN3 = NLIGR 98 : c* NLIGRD = NBNN3 = NLIGR 99 : C ===== 100 : SEGINI,MMAT1 101 : 102 : C 2 - BOUCLE SUR LES ELEMENTS DU MAILLAGE ELEMENTAIRE IPMAIL 103 : C ============================================================ 104 : DO iElt = 1, NBELEM 105 : C ===== 106 : C 2.1 - Recuperation des coordonnees GLOABLES des noeuds de l'element 107 : C ===== 107 : CALL ZERO(CAPV,NLIGR,NLIGR) 108 : C ===== 109 : C 2.2 - Recuperation des coordonnees GLOABLES des noeuds de l'element 110 : C ===== 110 : CALL DOXE(XCOOR,IDIM,NBNN,NUM,iElt,XE) 111 : C ===== 112 : C 2.3 - Boucle sur les points de Gauss de l'element iElt 113 : C ===== 114 : DO iGau = 1, NBPGAU 115 : C ======= 116 : C 2.3.1 - Calcul du volume associe a ce point de Gauss (jacobien) 117 : C ======= 118 : DLX = SHPTOT(2,1,iGau)*XE(1,1)+SHPTOT(2,2,iGau)*XE(1,2) 119 : DLY = SHPTOT(2,1,iGau)*XE(2,1)+SHPTOT(2,2,iGau)*XE(2,2) 120 : DJAC = SQRT(DLX*DLX+DLY*DLY) 121 : C- Prise en compte de l'axisymetrie 121 : CALL DISTRR(XE,SHPTOT(1,1,iGau),NBNN,RR) 122 : DJAC = ABS(X2Pi*RR*DJAC) 123 : C ======= 124 : C 2.3.3 - Verification que le volume (jacobien) n'est pas nul en ce 125 : C point de Gauss --> Erreur 126 : C ======= 127 : IF (DJAC.LT.XPETIT) THEN 128 : INTERR(1) = iElt 128 : CALL ERREUR(259) 129 : GOTO 9990 130 : ENDIF 131 : C ======= 132 : C 2.3.4 - Calcul du terme Rho.Cp.Vol en ce point de Gauss (avec prise 133 : C en compte d'un eventuel changement de phase) 134 : C ======= 134 : CALL CAPA5(iGau,iElt,IVAMAT,NVAMAT,IVAPHA,NVAPHA, VACOMP) 135 : CAPA = DJAC * POIGAU(iGau) * VACOMP(1) 136 : C ======= 137 : C 2.3.5 - Calcul de la contribution du point de Gauss a la matrice 138 : C CAPACITE elementaire pour cet element fini 139 : C ======= 139 : CALL ZERO(CAPSS,NBNN,NBNN) 140 : DO i = 1,NBNN 141 : FORME(i) = SHPTOT(1,i,iGau) 142 : ENDDO 142 : CALL NTNST(FORME,CAPA,NBNN,1,CAPSS) 143 : C ======= 144 : C 2.3.6 - Ajout de termes specifiques dus a l'integration (analytique) 145 : C suivant l'epaisseur de l'element de type COQUE 146 : C ======= 147 : EP = VACOMP(3) 148 : C- Erreur si l'epaisseur est est nulle 149 : c* IF (EP.LE.XPetit) THEN 149 : c* CALL ERREUR(517) 150 : c* GOTO 9990 151 : c* ENDIF 152 : C1 = X2s15*EP 153 : C2 = X1s15*EP 154 : C3 = -X1s30*EP 155 : C4 = X8s15*EP 156 : C5 = C2 157 : C6 = C1 158 : DO j=1,NBNN 159 : j1 = j + NBNN 160 : j2 = j + NBNN2 161 : DO i=1,NBNN 162 : i1 = i + NBNN 163 : i2 = i + NBNN2 164 : Cte = CAPSS(i,j) 165 : CAPV( i, j) = CAPV( i, j) + C1*Cte 166 : CAPV(i1, j) = CAPV(i1, j) + C2*Cte 167 : CAPV(i2, j) = CAPV(i2, j) + C3*Cte 168 : CAPV(i1,j1) = CAPV(i1,j1) + C4*Cte 169 : CAPV(i2,j1) = CAPV(i2,j1) + C5*Cte 170 : CAPV(i2,j2) = CAPV(i2,j2) + C6*Cte 171 : ENDDO 172 : ENDDO 173 : ENDDO 174 : C ===== 175 : C 2.4 - Stockage de la matrice de CAPACITE pour cet element fini 176 : C (remplissage de XMATRI) 177 : C ===== 177 : CALL REMPMT(CAPV,NLIGR,RE(1,1,iElt)) 178 : ENDDO 179 : 180 : C 3 - MENAGE : DESACTIVATION/DESTRUCTION DE SEGMENTS 181 : C ==================================================== 182 : 9990 CONTINUE 183 : SEGSUP,MMAT1 184 : c* SEGDES,MELEME,MINTE,XMATRI 185 : c* MPTVAL = IVAMAT 186 : c* SEGDES,MPTVAL 187 : c* IF (IVAPHA.NE.0) THEN 188 : c* MPTVAL = IVAPHA 189 : c* SEGDES,MPTVAL 190 : c* ENDIF 191 : 192 : RETURN 193 : END 194 : 195 :
© Cast3M 2003 - All rights reserved.
Disclaimer