Télécharger krem2g.eso
Retour à la liste
krem2g
C KREM2G SOURCE CHAT 05/01/13 01:06:13 5004
SUBROUTINE KREM2G(K2,NF1,NF2,NA1,NA2,NA3,C,U2,SHC3D,SKCEL
- ,SPROJA,SKBUFF)
IMPLICIT INTEGER(I-N)
IMPLICIT REAL*8 (A-H,O-Z)
C----------------------------------------------------------------------
C Calcul des facteurs de forme en 3D
C Sp appele par kprojg
C
C CAS DE 2 FACES DIFFERENTES NF1 ET NF2 NON PARALLELES
C ____________________________________________________
C
C CAS 1 DE KEMP2F
C
C
C NF3 = NF1 ( ARETE NA3)
C----------------------------------------------------------------------
DIMENSION U2(1),KG(2),KH(2)
SEGMENT SKCEL
INTEGER KBCEL(NR,NR),IINT(2,NSTAC),IS(NSTAC),JS(NSTAC)
REAL*8 RMAX
ENDSEGMENT
C
C CAS NON PARALLELE
C -----------------
C
IF (NFA(NA1).EQ.3) THEN
NF = IFA(3,NA1)
IF (NFA(NA2).EQ.3) THEN
IF (IFA(3,NA2).EQ.NF) THEN
C WRITE(6,*) ' KREMP2F CAS 1 NF ',NF
C
C FACE 1 ARETES 1 2 3
C
CALL KINITB(KBCEL,NRES,NRES,KG,NG
) CALL KREMPA(K2,KG,NG,NF1,NA1,
1,C,U2,SHC3D,SKCEL,SPROJA,SKBUFF
) CALL KREMPA(K2,KG,NG,NF1,NA2,
1,C,U2,SHC3D,SKCEL,SPROJA,SKBUFF
) CALL KREMPA(K2,KG,NG,NF1,NA3,
1,C,U2,SHC3D,SKCEL,SPROJA,SKBUFF
) CALL KREMPI(NIN,K2,KG,NG,NF1,C,U2,SHC3D,SKCEL,SKBUFF
)
CALL KINITB(KBCEL,NRES,NRES,KG,NG
) CALL KREMPA(K2,KG,NG,NF2,NA1,
1,C,U2,SHC3D,SKCEL,SPROJA,SKBUFF
) CALL KREMPA(K2,KG,NG,NF2,NA2,
1,C,U2,SHC3D,SKCEL,SPROJA,SKBUFF
) CALL KREMPI(NIN,K2,KG,NG,NF2,C,U2,SHC3D,SKCEL,SKBUFF
)
CALL KINITB(KBCEL,NRES,NRES,KG,NG
) CALL KREMPA(K2,KG,NG,NF,NA1,
3,C,U2,SHC3D,SKCEL,SPROJA,SKBUFF
) CALL KREMPA(K2,KG,NG,NF,NA2,
3,C,U2,SHC3D,SKCEL,SPROJA,SKBUFF
) CALL KREMPI(NIN,K2,KG,NG,NF,C,U2,SHC3D,SKCEL,SKBUFF
) ELSE
WRITE(6,*) ' ERREUR KREM2G ',NF,IFA(3,NA2)
ENDIF
ELSE
C WRITE(6,*) ' KREMP2F CAS 2 NF ',NF
C
C FACE 1 ARETES 1 2 3
C
CALL KINITB(KBCEL,NRES,NRES,KG,NG
) CALL KREMPA(K2,KG,NG,NF1,NA1,
1,C,U2,SHC3D,SKCEL,SPROJA,SKBUFF
) CALL KREMPA(K2,KG,NG,NF1,NA2,
1,C,U2,SHC3D,SKCEL,SPROJA,SKBUFF
) CALL KREMPA(K2,KG,NG,NF1,NA3,
1,C,U2,SHC3D,SKCEL,SPROJA,SKBUFF
) KG(1) = ( KG(1)/3 + KH(1) )/2
KG(2) = ( KG(2)/3 + KH(2) )/2
CALL KREMPI(NIN,K2,KG,
1,NF1,C,U2,SHC3D,SKCEL,SKBUFF
)
CALL KINITB(KBCEL,NRES,NRES,KG,NG
) CALL KREMPA(K2,KG,NG,NF2,NA1,
1,C,U2,SHC3D,SKCEL,SPROJA,SKBUFF
) CALL KREMPA(K2,KG,NG,NF2,NA2,
1,C,U2,SHC3D,SKCEL,SPROJA,SKBUFF
) KH(1) = ( KG(1)/2 + KH(1) )/2
KH(2) = ( KG(2)/2 + KH(2) )/2
CALL KREMPI(NIN,K2,KH,
1,NF2,C,U2,SHC3D,SKCEL,SKBUFF
)
CALL KINITB(KBCEL,NRES,NRES,KG,NG
) CALL KREMPA(K2,KG,NG,NF,NA1,
3,C,U2,SHC3D,SKCEL,SPROJA,SKBUFF
) CALL KREMPI(NIN,K2,KG,NG,NF,C,U2,SHC3D,SKCEL,SKBUFF
) ENDIF
ELSE
IF (NFA(NA2).EQ.3) THEN
NF = IFA(3,NA2)
C WRITE(6,*) ' KREMP2F CAS 3 NF ',NF
C
C FACE 1 ARETES 1 2 3
C
CALL KINITB(KBCEL,NRES,NRES,KG,NG
) CALL KREMPA(K2,KG,NG,NF1,NA1,
1,C,U2,SHC3D,SKCEL,SPROJA,SKBUFF
) CALL KREMPA(K2,KG,NG,NF1,NA2,
1,C,U2,SHC3D,SKCEL,SPROJA,SKBUFF
) CALL KREMPA(K2,KG,NG,NF1,NA3,
1,C,U2,SHC3D,SKCEL,SPROJA,SKBUFF
) KG(1) = ( KG(1)/3 + KH(1) )/2
KG(2) = ( KG(2)/3 + KH(2) )/2
CALL KREMPI(NIN,K2,KG,
1,NF1,C,U2,SHC3D,SKCEL,SKBUFF
)
CALL KINITB(KBCEL,NRES,NRES,KG,NG
) CALL KREMPA(K2,KG,NG,NF2,NA1,
1,C,U2,SHC3D,SKCEL,SPROJA,SKBUFF
) CALL KREMPA(K2,KG,NG,NF2,NA2,
1,C,U2,SHC3D,SKCEL,SPROJA,SKBUFF
) KH(1) = ( KG(1)/2 + KH(1) )/2
KH(2) = ( KG(2)/2 + KH(2) )/2
CALL KREMPI(NIN,K2,KH,
1,NF2,C,U2,SHC3D,SKCEL,SKBUFF
)
CALL KINITB(KBCEL,NRES,NRES,KG,NG
) CALL KREMPA(K2,KG,NG,NF,NA2,
3,C,U2,SHC3D,SKCEL,SPROJA,SKBUFF
) CALL KREMPI(NIN,K2,KG,NG,NF,C,U2,SHC3D,SKCEL,SKBUFF
)
ELSE
C
C FACE 1 ARETES 1 2 3
C
CALL KINITB(KBCEL,NRES,NRES,KG,NG
) CALL KREMPA(K2,KG,NG,NF1,NA1,
1,C,U2,SHC3D,SKCEL,SPROJA,SKBUFF
) CALL KREMPA(K2,KG,NG,NF1,NA2,
1,C,U2,SHC3D,SKCEL,SPROJA,SKBUFF
) CALL KREMPA(K2,KG,NG,NF1,NA3,
1,C,U2,SHC3D,SKCEL,SPROJA,SKBUFF
) CALL KREMPI(NIN,K2,KG,NG,NF1,C,U2,SHC3D,SKCEL,SKBUFF
) C
C FACE 2 ARETES 1 2
C
CALL KINITB(KBCEL,NRES,NRES,KG,NG
) CALL KREMPA(K2,KG,NG,NF2,NA1,
1,C,U2,SHC3D,SKCEL,SPROJA,SKBUFF
) CALL KREMPA(K2,KG,NG,NF2,NA2,
1,C,U2,SHC3D,SKCEL,SPROJA,SKBUFF
) CALL KREMPI(NIN,K2,KG,NG,NF2,C,U2,SHC3D,SKCEL,SKBUFF
) C
ENDIF
ENDIF
RETURN
END