      PROGRAM SIGMD
      REAL*8 E1,NU1,P1,D1,C1,R1,E2,NU2,P2,D2,C2,R2,F,FM,D,T,D1M,D2M,
     +P1M,P2M,AE,BE,CE,DE,W,WW,WE,WS,Q1,Q2,Q3,Q4,R3,R4,T3,D3,D4,D3M,
     +D4M,C3,C4,T1B,T1,R,DI,SI,DU,SU,DUL,SUL,DIL,SIL,WSL,WX,RP
      REAL*8 M(3,3),C(3),X(3),FB,FBM
      INTEGER I,J,K
      DATA P1,P2/2.28,0.863/
      DATA D1,D2/525.,1./
      DATA F,D,T/10.,0.1,0.0/
C
C
C CALCUL DE REPARTITION DES CONTRAINTES ET DEFORMATIONS 
C DU SYSTEME : COUCHE MINCE DE SILICE SUR SUBSTRAT DE SILICIUM
C      
C auteur : aime.vareille@wanadoo.fr 
C logiciel libre licence GPL : http://www.gnu.org/copyleft/gpl.html
C      
C E et NU sont les modules dYoung et Coefficient de Poisson Si/SiO2 :
C P1=E1/(1.-NU1) POUR Si (100)
C P2=E2/(1.-NU2) POUR SiO2
C Pour les constantes mécaniques voir par exemple :
C "Intrinsic SiO2 film stress measurements on thermally oxidized Si", J.
C Vac. Sci. Technol. B5(1), pp 15-19, jan/feb 1987, E. Kobeda and E. A.
C Irene.
C
C Le système est considéré de symétrie sphérique :
C Le rayon de courbure moyen du subtrat de Silicium est C1.      
C Le rayon de de courbure moyen de la couche de Silice est C2.      
C Le rayon de la surface neutre du subtrat de Silicium est R1.      
C Le rayon de la surface neutre de la couche de Silice est R2.      
C
C
1     WRITE(6,100)F
100   FORMAT(' Fleche : ',F9.3,' um ? ',$)
      READ(5,*)F
      FM=F*1.E-6
      WRITE(6,101)D
101   FORMAT(' Diametre : ',F9.4,' m ? ',$)
      READ(5,*)D
C      WRITE(6,102)T
102   FORMAT(' Moment flechissant : ',E14.7,' MN ? ',$)
C      READ(5,*)T
      WRITE(6,103)D1
103   FORMAT(' Epaisseur de silicium : ',F9.3,' um ? ',$)
      READ(5,*)D1
      D1M=D1*1.E-6
      WRITE(6,104)D2
104   FORMAT(' Epaisseur de silice : ',F9.3,' um ? ',$)
      READ(5,*)D2
      D2M=D2*1.E-6
      WRITE(6,105)P1
105   FORMAT(' E/(1.-NU) Si (111) 2.28 (100) 1.805: ',F9.5,' E5MPa ? ',
     +$)
      READ(5,*)P1
      WRITE(6,106)P2
106   FORMAT(' E/(1.-NU) SiO2 0.863 MPa : ',F9.5,' E5MPa ? ',$)
      READ(5,*)P2
      P1M=P1*1.E5
      P2M=P2*1.E5
C
C RAYON DE COURBURE EN SURFACE R
C
      R=(FM**2+D**2/4.)/2./FM
      Q1=P1M*D1M
      Q2=P2M*D2M
      C1=R-D2M-D1M/2.
      C2=R-D2M/2.
C
C
C LIGNE NEUTRE DU SILICIUM (P1) SUR LE RAYON R1
C MOMENT DE FLEXION T1
C LIGNE NEUTRE DE LA SILICE (P2) SUR LE RAYON R2
C
C
      T1B=Q1*(C2-C1)+Q2*D2M*D2M/12./C2*(1.+Q1/Q2)
      T1=T+T1B
      R1=Q1*((C2-C1)*C1+D2M*D2M*C1/12./C2-D1M*D1M/12.)/T1
      R2=C2/(1.-Q1/Q2*(C1/R1-1.))
C
C
C CONTRAINTE DANS LE SILICIUM A L'INTERFACE SI A LA SURFACE SU
C DEFORMATION DANS LE SILICIUM A L'INTERFACE DI A LA SURFACE DU
C CONTRAINTE DANS LA SILICE A L'INTERFACE SIL A LA SURFACE SUL
C DEFORMATION DANS LA SILICE A L'INTERFACE DIL A LA SURFACE DUL
C
C
      DI=(R-D2M-R1)/R1
      SI=P1M*DI
      DU=(R-D2M-D1M-R1)/R1
      SU=P1M*DU
      DUL=(R-R2)/R2
      SUL=P2M*DUL
      DIL=(R-D2M-R2)/R2
      SIL=P2M*DIL
C
C
C ENERGIE ELASTIQUE DU SILICIUM WS
C ENERGIE ELASTIQUE DE LA SILICE WSL
C
C
      WS=Q1/R1/R1*((C1-R1)**2+D1M*D1M/12.)*1.E6
      WSL=Q2/R2/R2*((C2-R2)**2+D2M*D2M/12.)*1.E6
      WRITE(6,222)F,D,D1,D2
222   FORMAT(' Fleche : ',F9.3,' um ; diametre : ',F9.4,' m'/
     +' Epaisseur de silicium : ',F9.3,' um, de silice : ',F9.3,' um')
      WRITE(6,200)R,T1,R1-R,R2-R,SI,SU,SIL,SUL,DI,DU,DIL,DUL,WS,WSL
200   FORMAT(' Rayon de courbure : ',F9.3,'m ; moment de flexion : ',
     +E14.7,'MN'/' Lignes neutre du silicium : ',E14.7,
     +'m, de la silice : ',E14.7,'m'/
     +' Contrainte dans le silicium : interface ',E14.7,' surface : ',
     +E14.7,'MPa'/' Contrainte dans la silice : interface ',E14.7,
     +' surface : ',E14.7,'MPa'/
     +' Deformation silicium : interface ',E14.7,' surface : ',
     +E14.7/' Deformation silice : interface ',E14.7,
     +' surface : ',E14.7/' Energie elastique : silicium ',E14.7,
     +', silice ',E14.7,' J.m-2',/)
      K=0
      WRITE(6,224)K
224   FORMAT(' Continue ou recommence (0/1) : ',I2,' ? ',$)
      READ(5,*)K
       IF(K.EQ.1) GOTO 1
C
C
C UN AMINCICEMENT RETIRE AU SYSTEME L'ENERGIE ELASTIQUE CORRESPONDANTE
C LA RESOLUTION UTILISE LA METHODE DE NEWTON :
C CALCUL DE L'ENERGIE ELASTIQUE RESTANTE
C           PUIS CALCUL DU JACOBIEN
C           JUSQU'A INVARIABILITE DES VALEURS DE C1, C2, R1 ET R2
C
C
      D3=D1
      D4=D2
2     WRITE(6,110)D3
110   FORMAT(' Epaisseur de silicium : ',F9.3,' um ? ',$)
      READ(5,*)D3
      D3M=D3*1.E-6
      WRITE(6,111)D4
111   FORMAT(' Epaisseur de silice : ',F9.3,' um ? ',$)
      READ(5,*)D4
      TE=T*1.E6
      WRITE(6,112)TE
112   FORMAT(' Moment flechissant : ',E14.7,' N ? ',$)
      READ(5,*)TE
      T=TE*1.E-6
      D4M=D4*1.E-6
      Q3=P1M*D3M
      Q4=P2M*D4M
      W=Q3/R1**2*((C1-R1)**2+D3M**2/12.)+
     +Q4/R2**2*((C2-R2)**2+D4M**2/12.)
      C3=C1
      C4=C2
      R3=R1
      R4=R2
      K=0
C
C CALCUL DU JACOBIEN LITTERAL !!!
C
3     M(1,1)=Q3*R4+Q4*R3
      M(2,1)=2.*Q3*R4*(C3-R3)+Q4*R3*(2.*C3-R3-R4+D3M+D4M)
      M(3,1)=2.*Q3*R4**2*(C3-R3)+2.*Q4*R3**2*(C3-R4+(D3M+D4M)/2.)
      M(1,2)=-1.*Q3*R4+Q4*(C3-R4+(D3M+D4M)/2.)
      M(2,2)=2.*Q3*R4*(R3-C3)-Q4*R3*(C3-R4+(D3M+D4M)/2.)+
     +Q4*((C3-R4+(D3M+D4M)/2.)*(C3-R3+(D3M+D4M)/2.)+D4M**2/12.)+
     +T*R4 
      M(3,2)=2.*Q3*R4**2*(R3-C3)+2.*Q4*R3*((C3-R4+(D3M+D4M)/2.)+
     +D4M**2/12.)-2.*W*R3*R4**2
      M(1,3)=Q3*(C3-R3)-Q4*R3
      M(2,3)=Q3*((C3-R3)**2+D3M**2/12.)-Q4*R3*(C3-R3+(D3M+D4M)/2.)+
     +T*R3 
      M(3,3)=2.*Q3*R4*((C3-R3)**2+D3M**2/12.)-
     +2.*Q4*R3**2*(C3-R4+(D3M+D4M)/2.)-2.*W*R3**2*R4
      K=K+1
      C(1)=M(1,1)*C3+M(1,2)*R3+M(1,3)*R4-Q3*R4*(C3-R3)-
     +Q4*R3*(C3-R4+(D3M+D4M)/2.)
      C(2)=M(2,1)*C3+M(2,2)*R3+M(2,3)*R4-Q3*R4*((C3-R3)**2+D3M**2/12.)-
     +Q4*R3*((C3-R4+(D3M+D4M)/2.)*(C3-R3+(D3M+D4M)/2.)+D4M**2/12.)-
     +T*R3*R4 
      C(3)=M(3,1)*C3+M(3,2)*R3+M(3,3)*R4-
     +Q3*R4**2*((C3-R3)**2+D3M**2/12.)-
     +Q4*R3**2*((C3-R4+(D3M+D4M)/2.)**2+D4M**2/12.)+W*R3**2*R4**2
      CALL GAUS3(M,C,X)
      C3=X(1)
      R3=X(2)
      R4=X(3)
      C4=C3+(D3M+D4M)/2.
      WX=Q3/R3**2*((C3-R3)**2+D3M**2/12.)+
     +Q4/R4**2*((C4-R4)**2+D4M**2/12.)
C      WRITE(6,201)C1,C2,R1,R2,C3,C4,R3,R4,W,WX
201   FORMAT(' C1,C2,R1,R2 :',4(1X,E14.7)/
     +' C3,C4,R3,R4 :',4(1X,E14.7)/
     +' W,WX :',2(1X,E14.7)/)
C
C ARRET DES ITERATIONS LORSQUE L'ECART D'ENERGIE ATTEINT MOINS DE 1/10000 OU
C                      LORSQUE LE NOMBRE DES ITERATIONS EST SUPERIEUR A 10000
C
       IF((ABS(W-WX).LT.W/10000.).OR.(K.EQ.10000)) THEN
      WRITE(6,201)C1,C2,R1,R2,C3,C4,R3,R4,W,WX
C
C
C CONTRAINTE DANS LE SILICIUM A L'INTERFACE SI A LA SURFACE SU
C DEFORMATION DANS LE SILICIUM A L'INTERFACE DI A LA SURFACE DU
C CONTRAINTE DANS LA SILICE A L'INTERFACE SIL A LA SURFACE SUL
C DEFORMATION DANS LA SILICE A L'INTERFACE DIL A LA SURFACE DUL
C
C
      DI=(C4-D4M/2.-R3)/R3
      SI=P1M*DI
      DU=(C4-D4M/2.-D3M-R3)/R3
      SU=P1M*DU
      DUL=(C4+D4M/2.-R4)/R4
      SUL=P2M*DUL
      DIL=(C4-D4M/2.-R4)/R4
      SIL=P2M*DIL
C
C
C ENERGIE ELASTIQUE DU SILICIUM WS
C ENERGIE ELASTIQUE DE LA SILICE WSL
C
C
      WS=Q3/R3**2*((C3-R3)**2+D3M*D3M/12.)*1.E6
      WSL=Q4/R4**2*((C4-R4)**2+D4M*D4M/12.)*1.E6
      RP=C4+D4M/2.
      T1B=Q3*(C4-C3)+Q4*D4M*D4M/12./C4*(1.+Q3/Q4)
      T1=T+T1B
      AE=1.0
      BE=-2.*RP
      CE=D**2/4.
      DE=BE**2-4.*AE*CE
      FB=1.E6*((-BE-SIGN(SQRT(DE),RP))/2./AE)
      WRITE(6,223)FB,D,D3,D4,K
223   FORMAT(' Fleche : ',F9.3,' um ; diametre : ',F9.4,' m'/
     +' Epaisseur de silicium : ',F9.3,' um, de silice : ',F9.3,' um'/
     +1X,I5,' regressions')
      WRITE(6,200)RP,T1,R3-RP,R4-RP,SI,SU,SIL,SUL,DI,DU,DIL,DUL,WS,WSL
C200   FORMAT(' Rayon de courbure : ',F9.3,'m ; moment de flexion : ',
C     +E14.7,'MN'/' Lignes neutre du silicium : ',E14.7,
C     +'m, de la silice : ',E14.7,'m'/
C     +' Contrainte dans le silicium : interface ',F9.4,' surface : ',
C     +F9.4,'MPa'/' Contrainte dans la silice : interface ',F9.4,
C     +' surface : 'F10.4,'MPa'/
C     +' Deformation silicium : interface ',E14.7,' surface : ',
C     +E14.7/' Deformation silice : interface ',E14.7,
C     +' surface : 'E14.7/' Energie elastique : silicium ',E14.7,
C     +', silice ',E14.7,' J.m-2',/)
      K=0
      WRITE(6,224)K
C224   FORMAT(' Continue ou recommence (0/1) : ',I2,' ? ')
      READ(5,*)K
       IF(K.EQ.1) GOTO 1
       GOTO 2
       ENDIF
      GOTO 3
      END
	SUBROUTINE GAUS3(M3,C3,X)
	REAL*8 X(3),
     +M3(3,3),M2(2,2),M,C3(3),C2(2),C
	INTEGER I,J,K,L,A
C
C METHODE DE GAUS DE RESOLUTION DES SYSTEMES LINEAIRES
C
C
C 1) REMPLISSAGE DES TABLEAUX M1-2
C 2) RESOLUTION
C
C	WRITE(6,203)((M3(I,J),J=1,3),I=1,3)
203	FORMAT(3(3(1X,E14.7)/))
C	ACCEPT *,A
	  DO 7 I=1,2
	  C2(I)=C3(I)*M3(3,3)-C3(3)*M3(I,3)
	    DO 8 J=1,2
	    M2(I,J)=M3(I,J)*M3(3,3)-M3(3,J)*M3(I,3)
8	    CONTINUE
7	  CONTINUE
C	WRITE(6,202)((M2(I,J),J=1,2),I=1,2)
202	FORMAT(2(2(1X,E14.7)/))
C	ACCEPT *,A
	C=C2(1)*M2(2,2)-C2(2)*M2(1,2)
        M=M2(1,1)*M2(2,2)-M2(2,1)*M2(1,2)
C RESOLUTION
	  IF(M.EQ.0) GO TO 91
	X(1)=C/M
	  IF(M2(2,2).NE.0) THEN
	  X(2)=(C2(2)-M2(2,1)*X(1))/M2(2,2)
	  ELSE
	    IF(M2(1,2).EQ.0) GO TO 92
	  X(2)=(C2(1)-M2(1,1)*X(1))/M2(1,2)
	  ENDIF
	  IF(M3(3,3).NE.0) THEN
	  X(3)=(C3(3)-M3(3,1)*X(1)-M3(3,2)*X(2))/M3(3,3)
	  ELSE
	    IF(M3(2,3).NE.0) THEN
	    X(3)=(C3(2)-M3(2,1)*X(1)-M3(2,2)*X(2))/M3(2,3)
	    ELSE
	      IF(M3(1,3).EQ.0) GO TO 93
	    X(3)=(C3(1)-M3(1,1)*X(1)-M3(1,2)*X(2))/M3(1,3)
	    ENDIF
	  ENDIF
	RETURN
91	WRITE(6,101)
101	FORMAT(' GAUS3 ne peut pas resoudre.')
	RETURN
92	WRITE(6,102)X(1)
102	FORMAT(' GAUS3 ne peut pas resoudre: X(1) = ',E14.7)
	RETURN
93	WRITE(6,103)X(1),X(2)
103	FORMAT(' GAUS3 ne peut pas resoudre:'/' X(1-2) = ',2(1X,E14.7))
	RETURN
	END

