phaj
C PHAJ SOURCE CB215821 20/11/25 13:35:42 10792 subroutine phaj IMPLICIT INTEGER(I-N) IMPLICIT REAL*8 (A-H,O-Z) * * création des "jeux" a associer aux matrices de blocages pour le * changement de phase * en entrée : objet modele , chamelem de temperature de changement * de phase et temperature initiale, matrice de blocages * -INC PPARAM -INC CCOPTIO -INC SMELEME -INC SMMODEL -INC SMRIGID -INC SMCOORD -INC SMCHPOI -INC SMCHAML segment icpr(nbpts) segment icpr1(nbpts) segment icpr2(nbpts) segment icpr3(nbpts) segment itvr real*8 tvr(IB) endsegment segment ide(ib) if(ierr.ne.0) return if(ierr.ne.0) return IF(IERR .NE. 0) RETURN if(ierr.ne.0) return if(ierr.ne.0) return segact mmodel,mchelm,mrigid * on recherche la temperature de fusion nbsou=kmodel(/1) segini icpr,icpr1,icpr2,icpr3 * on compte combien de point aux maximum pour creer un tableau de * maillage pour le chpoint de FLX et un tableau de valeur mpoval ib=0 do 100 i=1,nbsou imodel=kmodel(i) segact imodel meleme=imamod segact meleme do 101 mel=1,num(/2) do 101 npo=1,num(/1) ia = num(npo,mel) if(icpr(ia).eq.0) then ib=ib+1 icpr(ia)=ib endif 101 continue 100 continue * * reperage du chpoint de temperature initiales * segact mchpoi inon=0 ive=0 do 400 nso=1,ipchp(/1) msoup1= ipchp(nso) segact msoup1 do 401 nco=1,msoup1.nocomp(/2) if(msoup1.nocomp(nco).EQ.'T') go to 402 401 continue inon=inon+1 go to 400 moterr(1:4) = 'T ' return 402 continue ipt3 = msoup1.igeoc segact ipt3 do 404 nbe=1,ipt3.num(/2) ia= ipt3.num(1,nbe) ive=ive+1 icpr1(ia)=ive icpr2(ia)=msoup1.ipoval icpr3(ia)=nco 404 continue mpova1=msoup1.ipoval segact mpova1 400 continue if(inon.eq.ipchp(/1)) then moterr(1:4) = 'T ' return endif * fin reperage du chpoint nbsous=0 nbref=0 nbnn=1 nbelem=ib * write(6,*) 'nbelem nbnn nbref nbsous',nbelem,nbnn,nbref,nbsous segini ipt4 * write(6,*) 'sortie de segini' n=nbelem nc=1 nat=1 nsoupo=1 segini mpoval,msoupo,itvr,ide,mchpo1 mchpo1.mochde='chpoint créé par sub PHAJ' mchpo1.mtypoi='jeux' mchpo1.ipchp(1)=msoupo mchpo1.jattri(1)=2 mchpo1.ifopoi=ifour igeoc=ipt4 nocomp(1)='FLX' noharm(1)=nifour ipoval=mpoval * boucle sur les sous zones du model pour creer les matrices de * blocages idd=0 do 1 i=1,nbsou imodel=kmodel(i) meleme=imamod * on recherche la temperature de fusion do 51 mchm=1,imache(/1) if( imache(mchm) . eq. meleme) then mchaml=ichaml(mchm) go to 52 endif 51 continue return 52 continue segact mchaml do 56 n2=1,nomche(/2) if( nomche(n2).eq.'TPHA') then melval=ielval(n2) go to 57 endif 56 continue moterr(1:8) = 'TPHA' return 57 continue segact melval if(velche(/1)+velche(/2).ne.2) then return endif tt = velche(1,1) * write(6,*)' temperature touvée de changement de phase ', tt ipt2=irigel(1,i) * call impp1(meleme,ipt2) * call ecmail(ipt2,0) segact ipt2 * remplissage du chpoint do 70 mel=1,ipt2.num(/2) iaa = ipt2.num(2,mel) icc= icpr(iaa) * write(6,*) 'mel iaa, icc icpr(1(iaa),icpr(iaa)tt' , * $ iaa, icc, icpr1(iaa),icpr3(iaa),tt if(ide(icc).ne.0) then if(tvr(icc).ne.tt) then return endif go to 70 endif ide(icc)=1 tvr(icc)=tt mpova1=icpr2(iaa) * write(6,*) ' mpova1 ' , mpova1 if(mpova1.eq.0) then tdec = 0.d0 * write(6,*) 'phaj: on passe par la si T0 pas defini !' else tdec = mpova1.vpocha(icpr1(iaa),icpr3(iaa)) endif idd = idd+1 ipt4.num(1,idd)=ipt2.num(1,mel) tjeu= tt-tdec if( abs(tjeu) . le . 1.D-4 ) tjeu=0.D0 vpocha(idd,1)= tjeu * write(6,*) ' noeud valeurs ', ipt4.num(1,idd), tt-tdec,tjeu 70 continue 1 continue segdes mrigid nbnn=1 nbelem=idd n=idd nc=1 segadj ipt4 segadj mpoval segsup icpr,itvr,ide,icpr1,icpr2,icpr3 do 410 k=1,ipchp(/1) msoupo=ipchp(k) meleme=igeoc mpoval=ipoval 410 continue end
© Cast3M 2003 - Tous droits réservés.
Mentions légales