source: trunk/src/hmf_TF_dynadv_cen2.h @ 78

Last change on this file since 78 was 1, checked in by jbrlod, 13 years ago

Import initial

  • Property svn:eol-style set to native
File size: 3.8 KB
Line 
1
2/***************************************************************************
3                 module classe hmf_TF_dynadv_cen2.h  -  description
4***************************************************************************/
5// Mohamed Berrada
6// locean-ipsl.upmc, Paris, February 27, 2009
7//===========================================================================
8//                          methode forward
9forward (YREAL x1,YREAL x2,YREAL x3,YREAL x4,YREAL x5,YREAL x6)
10{/*     x1      ua              1  i    j    k   t-1
11        x2      ua              1  i+1  j    k   t-1
12        x3      ua              1  i    j+1  k   t-1
13        x4      va              1  i    j    k   t-1
14        x5      va              1  i+1  j    k   t-1
15        x6      va              1  i    j+1  k   t-1
16*/
17  if(Yt==TU){
18    YS1=0.;
19    YS2=0.;
20    YS3=0.;
21    YS4=0.;
22  }
23  else{
24    double zfu, zfuip1,zfujp1;
25    double zfv,zfvip1,zfvjp1;
26    if(Yi==NX-1 || Yj==NY-1 || Yk==NZ-1){
27      YS1=0.;
28      YS2=0.;
29      YS3=0.;
30      YS4=0.;
31    }
32    else{
33      zfu=0.25*(double)e2u(Yi,Yj)*(double)fse3v(Yi,Yj,Yk)*x1;
34      zfuip1=0.25*(double)e2u(Yi+1,Yj)*(double)fse3v(Yi+1,Yj,Yk)*x2;
35      zfujp1=0.25*e2u(Yi,Yj+1)*fse3v(Yi,Yj+1,Yk)*x3;
36     
37      zfv=0.25*e1v(Yi,Yj)*fse3v(Yi,Yj,Yk)*x4;
38      zfvip1=0.25*e1v(Yi+1,Yj)*fse3v(Yi+1,Yj,Yk)*x5;
39      zfvjp1=0.25*e1v(Yi,Yj+1)*fse3v(Yi,Yj+1,Yk)*x6;
40      //zfu_t:
41      YS1=(zfu+zfuip1)*(x1+x2);
42      //zfv_f:
43      YS2=(zfv+zfvip1)*(x1+x3);
44      //zfu_f:
45      YS3=(zfu+zfujp1)*(x4+x5);
46      //zfv_t:
47      YS4=(zfv+zfvjp1)*(x4+x6);
48    }
49  }
50}
51
52//===========================================================================
53//                         methodes  backward
54
55backward (YREAL x1,YREAL x2,YREAL x3,YREAL x4,YREAL x5,YREAL x6)
56{
57  YJ1I1=0.;     YJ1I2=0.;   YJ1I3=0.;     YJ1I4=0.;  YJ1I5=0.;     YJ1I6=0.;
58  YJ2I1=0.;     YJ2I2=0.;   YJ2I3=0.;     YJ2I4=0.;  YJ2I5=0.;     YJ2I6=0.;
59  YJ3I1=0.;     YJ3I2=0.;   YJ3I3=0.;     YJ3I4=0.;  YJ3I5=0.;     YJ3I6=0.;
60  YJ4I1=0.;     YJ4I2=0.;   YJ4I3=0.;     YJ4I4=0.;  YJ4I5=0.;     YJ4I6=0.;
61 
62  if(Yt!=TU){ 
63    double zfu, zfuip1,zfujp1;
64    double zfv,zfvip1,zfvjp1;
65    if(Yi==NX-1 || Yj==NY-1 || Yk==NZ-1){
66      YJ1I1=0.;     YJ1I2=0.;   YJ1I3=0.;     YJ1I4=0.;  YJ1I5=0.;     YJ1I6=0.;
67      YJ2I1=0.;     YJ2I2=0.;   YJ2I3=0.;     YJ2I4=0.;  YJ2I5=0.;     YJ2I6=0.;
68      YJ3I1=0.;     YJ3I2=0.;   YJ3I3=0.;     YJ3I4=0.;  YJ3I5=0.;     YJ3I6=0.;
69      YJ4I1=0.;     YJ4I2=0.;   YJ4I3=0.;     YJ4I4=0.;  YJ4I5=0.;     YJ4I6=0.;
70    }
71    else{
72      double dzfu_x1=0.,dzfuip1_x2=0.,dzfujp1_x3=0.,dzfv_x4=0.,dzfvip1_x5=0.,dzfvjp1_x6=0.;
73      zfu        = 0.25*(double)e2u(Yi,Yj)*(double)fse3v(Yi,Yj,Yk)*x1;
74      dzfu_x1    = 0.25*(double)e2u(Yi,Yj)*(double)fse3v(Yi,Yj,Yk);
75      zfuip1     = 0.25*(double)e2u(Yi+1,Yj)*(double)fse3v(Yi+1,Yj,Yk)*x2;
76      dzfuip1_x2 = 0.25*e2u(Yi+1,Yj)*fse3v(Yi+1,Yj,Yk);
77      zfujp1     = 0.25*e2u(Yi,Yj+1)*fse3v(Yi,Yj+1,Yk)*x3;
78      dzfujp1_x3 = 0.25*e2u(Yi,Yj+1)*fse3v(Yi,Yj+1,Yk);
79
80      zfv        = 0.25*e1v(Yi,Yj)*fse3v(Yi,Yj,Yk)*x4;
81      dzfv_x4    = 0.25*e1v(Yi,Yj)*fse3v(Yi,Yj,Yk);
82      zfvip1     = 0.25*e1v(Yi+1,Yj)*fse3v(Yi+1,Yj,Yk)*x5;
83      dzfvip1_x5 = 0.25*e1v(Yi+1,Yj)*fse3v(Yi+1,Yj,Yk);
84      zfvjp1     = 0.25*e1v(Yi,Yj+1)*fse3v(Yi,Yj+1,Yk)*x6;
85      dzfvjp1_x6 = 0.25*e1v(Yi,Yj+1)*fse3v(Yi,Yj+1,Yk);
86      //zfu_t:
87      YJ1I1=(zfu+zfuip1)+dzfu_x1*(x1+x2);
88      YJ1I2=zfu+zfuip1+dzfuip1_x2*(x1+x2);
89      //zfv_f:
90      YJ2I1=zfv+zfvip1;
91      YJ2I3=zfv+zfvip1;
92      YJ2I4=dzfv_x4*(x1+x3);
93      YJ2I5=dzfvip1_x5*(x1+x3);
94      //zfu_f:
95      YJ3I1=dzfu_x1*(x4+x5);
96      YJ3I3=dzfujp1_x3*(x4+x5);
97      YJ3I4=zfu+zfujp1;
98      YJ3I5=zfu+zfujp1;
99      //zfv_t:
100      YJ4I4=dzfv_x4*(x4+x6)+zfv+zfvjp1;
101      YJ4I6=dzfvjp1_x6*(x4+x6)+zfv+zfvjp1;
102    }
103  }
104}
105
106//===========================================================================
107//********************* FIN DU MODULE hmf_TF_dynadv_cen2 **********************
108
109
110
111
112
113
114
115
116
117
118
Note: See TracBrowser for help on using the repository browser.