fioni
C FIONI SOURCE CB215821 20/11/25 13:28:57 10792 SUBROUTINE FIONI C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC C C OPERATEUR FION C C CALCULE LA FORCE IONIQUE D'UNE SOLUTION CHIMIQUE C UTILISE LES RESULTATS DE CHI1 C CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC IMPLICIT INTEGER(I-N) IMPLICIT REAL*8(A-H,O-Z) -INC PPARAM -INC CCOPTIO -INC SMLENTI -INC SMLMOTS -INC SMCHPOI -INC SMELEME POINTEUR MLAA.MLREEL,MLOGK.MLREEL,MLFF.MLREEL POINTEUR MLIDX.MLENTI,MLIDY.MLENTI,MLIDZ.MLENTI,MLIDP.MLENTI POINTEUR MLNN.MLENTI,MLDECY.MLENTI POINTEUR MLIONZ.MLENTI,MLPREC.MLENTI POINTEUR MLNAME.MLMOTS,MLNESP.MLMOTS POINTEUR MLSOLU.MLENTI,MMSOLU.MLMOTS POINTEUR MCHFIO.MCHPOI,ICHFIO.MPOVAL CHARACTER*8 TYPEMA SEGMENT IDSCHI REAL*8 GK(NYDIM),AA(NYDIM,NXDIM),FF(NZDIM,NPDIM) INTEGER IDX(NXDIM),IDY(NYDIM),IDZ(NZDIM),IDP(NPDIM),NN(6) INTEGER IDECY(NYDIM),IONZ(NXDIM) CHARACTER*32 NAME(NXDIM),NAMESP(NYDIM) ENDSEGMENT SEGMENT SP2 REAL*8 GX(NXDIM),XX(NXDIM),GS(NZDIM),SS(NZDIM) REAL*8 TOT(NXDIM),TOTAQ(NXDIM),TOTFIX(NXDIM),GKS(NZDIM) REAL*8 YY(NXDIM),ZZ(NXDIM,NXDIM),CC(NYDIM),GC(NYDIM) ENDSEGMENT SEGMENT IZBID INTEGER IBID(NSOL) ENDSEGMENT C C C LECTURE DE LA TABLE CHIMI1 * MLNAME,MLIONZ,ITIDEN,ITREDO,ITEMPE,MLNESP) IF(IERR.NE.0)RETURN C C LECTURE DE LA TABLE IDEN C TOUS LES SEGMENTS REVIENNENT ACTIFS OU AVEC UN POINTEUR NUL C * MMSURF,MLTYP3,MMTYP3,MLTYP6,MMTYP6,MLPARF,MLREAC,MLIMMO, * MLPOLE,MMPOLE,MLSOSO,MMSOSO,LIMP3) IF(IERR.NE.0)RETURN C C LECTURE DU CHPOIN DES CONCENTRATIONS C IF(IRETOU.EQ.0)THEN RETURN ENDIF SEGACT MCHPOI NSOUPO=IPCHP(/1) IF(NSOUPO.NE.1)THEN RETURN ENDIF MSOUPO=IPCHP(1) SEGACT MSOUPO MELEME=IGEOC MPOVAL=IPOVAL NC=NOCOMP(/2) NSOL=MLSOLU.LECT(/1) SEGINI IZBID DO 20 I=1,NSOL DO 25 J=1,NC IBID(I)=J GO TO 22 ENDIF 25 CONTINUE RETURN 22 CONTINUE 20 CONTINUE SEGACT MPOVAL NPN=VPOCHA(/1) C C ON ACTIVE LES SEGMENTS C ET ON DEFINIT LES TABLEAUX DE TRAVAIL SEGACT MLAA,MLOGK,MLFF,MLIDX,MLIDY,MLIDZ,MLNN,MLDECY,MLNAME,MLNESP SEGACT MLIONZ,MLIDP NXDIM=MLIDX.LECT(/1) NYDIM=MLIDY.LECT(/1) NZDIM=MLIDZ.LECT(/1) NPDIM=MLIDP.LECT(/1) SEGINI IDSCHI SEGINI SP2 C JGM=1 JGN=4 SEGINI MLMOTS SEGSUP MLMOTS C C INITIALISATION SEGACT MELEME C C ------------------------------------------------------------------- C BOUCLE SUR LES POINTS C ------------------------------------------------------------------- DO 100 II=1,NPN C CHARGEMENT DE IDSCHI * MLNAME,MLIONZ,IDSCHI,MLNESP) C WRITE(6,*)' GK apres CHMIDS ' C WRITE(6,120)(GK(J),IDY(J),J=1,NYDIM) 120 FORMAT(6(1X,1PD12.5,I5)) C CHARGEMENT DE SP2 DO 6 J=1,NXDIM TOT(J)= 0.D0 GX(J)= 0.D0 XX(J)=0.D0 TOTAQ(J)=0.D0 TOTFIX(J)=0.D0 YY(J)=0.D0 6 CONTINUE DO 30 I=1,NSOL CC(I)=VPOCHA(II,IBID(I)) 30 CONTINUE C C= REMISE A ZERO DES FORCES IONIQUES C XMUNEW = 0.D0 ICHFIO.VPOCHA(II,1)= XMUNEW 100 CONTINUE C -------------------------------------------------------------- C LE MENAGE C SEGSUP IDSCHI SEGSUP SP2,IZBID C C ON DESACTIVE LES DONNEES SEGDES MLAA,MLOGK,MLFF,MLIDX,MLIDY,MLIDZ,MLNN,MLDECY,MLNAME,MLNESP SEGDES MLIONZ,MLIDP SEGDES MELEME MLENTI=MLCOMP SEGDES MLENTI IF(MLSOSO.NE.0)THEN MLENTI=MLSOSO MLMOTS=MMSOSO SEGDES MLENTI,MLMOTS ENDIF IF(MLPOLE.NE.0)THEN MLENTI=MLPOLE MLMOTS=MMPOLE SEGDES MLENTI,MLMOTS ENDIF IF(MLSOLU.NE.0)THEN MLENTI=MLSOLU MLMOTS=MMSOLU SEGDES MLENTI,MLMOTS ENDIF IF(MLPREC.NE.0)THEN MLENTI=MLPREC MLMOTS=MMPREC SEGDES MLENTI,MLMOTS ENDIF IF(MLSURF.NE.0)THEN MLENTI=MLSURF MLMOTS=MMSURF SEGDES MLENTI,MLMOTS ENDIF IF(MLTYP3.NE.0)THEN MLENTI=MLTYP3 MLMOTS=MMTYP3 SEGDES MLENTI,MLMOTS ENDIF IF(MLTYP6.NE.0)THEN MLENTI=MLTYP6 MLMOTS=MMTYP6 SEGDES MLENTI,MLMOTS ENDIF IF(MLPARF.NE.0)THEN MLENTI=MLPARF SEGDES MLENTI ENDIF IF(MLREAC.NE.0)THEN MLENTI=MLREAC SEGDES MLENTI ENDIF IF(MLIMMO.NE.0)THEN MLENTI=MLIMMO SEGDES MLENTI ENDIF SEGDES MSOUPO,MPOVAL,MCHPOI C C ON SAUVE LE RESULTAT MSOUPO=MCHFIO.IPCHP(1) SEGDES ICHFIO,MCHFIO,MSOUPO RETURN END
© Cast3M 2003 - Tous droits réservés.
Mentions légales