selmod
C SELMOD SOURCE OF166741 24/10/21 21:15:23 12042 C Operateur CONVEC : C ================== C Selectionne dans un modele (quelconque) les sous-modeles de C formulation 'THERMIQUE' concernes par la CONVECTION forcee/externe IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC CCPRECO -INC SMMODEL -INC SMELEME C Elem. RACCORD : RAC2 RAC3 LIA3 LIA4 LIA6 LIA8 SEG2 C Cas Particulier : en 1D, SEG2 = element RACCORD (OF) C --------------- PARAMETER ( NBRAC=7 ) INTEGER IRAC(NBRAC) DATA IRAC / 12 , 13 , 18 , 19 , 20 , 21 , 2 / CHARACTER*(16) mofort,mofcnv,mofray IPMODC = 0 mmodel = IPMODT c* segact mmodel <- Actif en E/S iimpi0 = IIMPI c*dbg iimpi0 = 1972 C- Recherche si le modele IPMODT n'a pas deja ete traite : C- Verification si presence dans le preconditionnement CCPRECO ith = oothrd ith1 = ith + 1 CALL OOOHO1(mmodel,ihorot) ITAILL = NBMOCV(ith1) DO is = 1, ITAILL IF ( PMOCVE(is,ith1) .EQ. mmodel .AND. & PMOCVH(is,ith1) .EQ. ihorot ) THEN mmode1 = PMOCVS(is,ith1) if (iimpi0.eq.1972) then write(ioimp,*) 'Preconditionnement SELMOD trouve', & ipmodt,mmode1,is endif C Mise a jour du preconditionnement dans CCPRECO : Deplacement en position 1 IF (is .GT. 1) THEN DO js = is, 2, -1 PMOCVE(js,ith1) = PMOCVE(js - 1,ith1) PMOCVH(js,ith1) = PMOCVH(js - 1,ith1) PMOCVS(js,ith1) = PMOCVS(js - 1,ith1) ENDDO PMOCVE(1,ith1) = mmodel PMOCVH(1,ith1) = ihorot PMOCVS(1,ith1) = mmode1 ENDIF GOTO 100 ENDIF ENDDO C- Construction du MODELE recherche mofort = 'THERMIQUE ' C (1) SELECTION dans le MODELE de la partie 'CONVECTION' mofcnv = 'CONVECTION ' C (2) OUBLI des elements RACCORDs (s'ils existent) de la partie CONVECTION C Petit traitement pour le cas 1D : on simule l'element raccord 1D via C un element fini SEG2 (cela evite de creer un nouvel element fini) IF (IDIM.EQ.1) THEN KRACC = 7 NRACC = 1 ELSE KRACC = 1 NRACC = 6 ENDIF C (3) SELECTION dans le MODELE de la partie 'RAYONNEMENT' mofray = 'RAYONNEMENT ' C (4) IPMODC = FUSION des parties 'CONVECTION' sans RACCORD et 'RAYONNEMENT' SEGINI,mmode1=mmodel nsou = mmode1.kmodel(/1) N1 = 0 DO is = 1, nsou imodel = mmode1.kmodel(is) c* segact imodel DO js = 1, imodel.formod(/2) inok = 1 IF (imodel.formod(js).EQ.mofort) THEN DO k = 1, imodel.matmod(/2) IF (imodel.matmod(k).EQ.mofcnv) THEN ELSE IF (imodel.matmod(k).EQ.mofray) THEN inok = 0 ENDIF ENDDO ENDIF IF (inok.EQ.0) THEN N1 = N1 + 1 mmode1.kmodel(N1) = imodel ENDIF ENDDO ENDDO IF (N1.NE.nsou) then SEGADJ,mmode1 else if (iimpi0.eq.1972) write(ioimp,*) 'SELMOD : IPMODT=IPMODC !' segsup,mmode1 mmode1=mmodel endif C Mise a jour du preconditionnement dans CCPRECO ITAILL = MIN(ITAILL + 1, NPMCNV) NBMOCV(ith1) = ITAILL DO is = ITAILL, 2, -1 PMOCVE(is,ith1) = PMOCVE(is - 1,ith1) PMOCVH(is,ith1) = PMOCVH(is - 1,ith1) PMOCVS(is,ith1) = PMOCVS(is - 1,ith1) ENDDO PMOCVE(1,ith1) = mmodel PMOCVH(1,ith1) = ihorot PMOCVS(1,ith1) = mmode1 if (iimpi0.eq.1972) then write(ioimp,*) 'Preconditionnement SELMOD realise',ipmodt,mmode1 endif 100 CONTINUE IPMODC = mmode1 c return END
© Cast3M 2003 - Tous droits réservés.
Mentions légales