source: branches/iLoveclim/SOURCES/Old-sources/calceps2-0.2.f @ 77

Last change on this file since 77 was 77, checked in by dumas, 8 years ago

Merge branche iLOVECLIM sur rev 76

File size: 3.5 KB
Line 
1!> \file calceps2-0.2.f
2!! Calcule les taux de deformation et le second invariant du tenseur des deformations
3!<
4
5!> SUBROUTINE: Calceps
6!! \author Vince
7!! \date 6 jan 95 Modifie 20 jan 95
8!! @note Cette routine permet de calculer les taux de deformation (epsxx epsyy epsxy)
9!! @note et le second invariant du tenseur des deformations (epsilon)
10!! @note qui sera reinjecte dans la boucle de resolution de l'equation diagnostique.
11!! @note Used modules:
12!! @note    - use module3D_phy
13!!
14!<
15C ========================================================================
16C
17       SUBROUTINE CALCEPS(EPSILON)
18C
19C                                       Vince 6 jan 95
20C                                       Modifie 20 jan 95
21C                                       -----------------
22C
23C
24C      Cette routine permet de calculer les taux de deformation
25C      (epsxx epsyy epsxy)
26C      et le second invariant du tenseur des deformations (epsilon)
27C  qui sera reinjecte dans la boucle de resolution de l'equation diagnostique.
28C
29C =======================================================================
30
31      USE module3D_phy
32
33
34      IMPLICIT NONE
35
36      REAL DUDX,DUDY,DVDX,DVDY,EPSILON(NX,NY)
37
38      DUDX = 0.
39      DUDY = 0.
40      DVDX = 0.
41      DVDY = 0.
42
43      DO i=1,NX
44         DO j=1,NY
45!         IF (.NOT.FLOT(I,J).OR.H(i,j).eq.1.) GOTO 11
46!         IF (.NOT.FRONT(I,J)) THEN
47            IF (FRONT(I,J).eq.4) THEN
48               DUDX = (UXBAR(I+1,J) - UXBAR(I,J))/DX
49
50               DUDY = (UXBAR(I+1,J+1)+UXBAR(I,J+1)
51     &               - UXBAR(I,J-1) - UXBAR(I+1,J-1))/(4.*DY)
52               DVDX = (UYBAR(I+1,J+1)+UYBAR(I+1,J)
53     &               - UYBAR(I-1,J) - UYBAR(I-1,J+1))/(4.*DX)
54               DVDY = (UYBAR(I,J+1)-UYBAR(i,J))/DY
55
56
57C      Cas particulier: on se trouve sur le front:
58C      Si le front n'est pas sur les bords de la grille,
59C      on a pas besoin de sa valeur de epsilon
60C      (dans ce cas de toutes facons eps est voisin de 0)
61C      ----------------------------------------------------
62
63 
64            ELSE IF (I.EQ.1.AND.J.NE.1.AND.J.NE.NY) THEN
65
66               DUDX = (UXBAR(I+2,J) - UXBAR(I+1,J))/DX
67               DVDX = 0.
68               DUDY = 0.
69               DVDY = (UYBAR(I,J+1) - UYBAR(I,J))/DY
70
71            ELSE IF (I.EQ.NX.AND.J.NE.1.AND.J.NE.NY) THEN
72
73               DUDX = (UXBAR(I,J) - UXBAR(I-1,J))/DX
74               DVDX = 0.
75               DUDY = 0.
76               DVDY = (UYBAR(I,J+1) - UYBAR(I,J))/DY
77
78            ELSE IF (J.EQ.1.AND.I.NE.1.AND.I.NE.NX) THEN
79               
80               DUDX = (UXBAR(I+1,J) - UXBAR(I,J))/DX
81               DVDX = 0.
82               DUDY = 0.
83               DVDY = (UYBAR(I,J+2) - UYBAR(I,J+1))/DY
84
85            ELSE IF (J.EQ.NY.AND.I.NE.1.AND.I.NE.NX) THEN
86
87               DUDX = (UXBAR(I+1,J) - UXBAR(I,J))/DX
88               DVDX = 0.
89               DUDY = 0.
90               DVDY = (UYBAR(I,J) - UYBAR(I,J-1))/DY
91
92            ENDIF
93
94            EPSILON(i,j)=(DUDX**2 + DVDY**2
95     &        +(1./4.)*(DUDY+DVDX)**2+DUDX*DVDY)
96            IF (EPSILON(I,J).gt.1.E-10) then
97               EPSILON(I,J)=EPSILON(I,J)**(0.5)
98            else
99               EPSILON(I,J)=1.E-5 
100            endif
101! mise en memoire de epsxx epsyy et epsxy :
102! utilise dans icetemp pour chaleur de deformation         
103            epsxx(I,J)=DUDX
104            epsyy(I,J)=DVDY
105            epsxy(I,J)=0.5*(DUDY+DVDX)
106
107! 11       END DO
108         END DO
109      END DO   
110c       open(66,file='M3-eps')
111c         do i=1,nx
112c  write(66,*)
113c  write(66,*)'i=',i
114c  write(66,'(5(e10.3,3x))') (epsilon(i,j),j=1,ny)
115c         end do
116
117      RETURN
118      END
119
120
Note: See TracBrowser for help on using the repository browser.