source: tags/version-1.1/trunk/src/zdf_avt_avmu_avmv.h @ 24

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

Import initial

  • Property svn:eol-style set to native
File size: 8.2 KB
Line 
1
2/***************************************************************************
3                 module classe zdf_avt_avmu_avmv.h  -  description
4***************************************************************************/
5// Mohamed Berrada
6// locean-ipsl.upmc, Paris, Mars 25, 2009
7//===========================================================================
8//                          methode forward
9forward (YREAL x1,YREAL x2, YREAL x3,YREAL x4,YREAL x5, YREAL x6,YREAL x7,YREAL x8, YREAL x9,YREAL x10,YREAL x11, YREAL x12,YREAL x13,YREAL x14, YREAL x15,YREAL x16,YREAL x17, YREAL x18, YREAL x19)
10{/*     1       from    bn2_rn2                 1  i    j    k    t
11        2       from    bn2_rn2                 1  i+1  j    k    t
12        3       from    bn2_rn2                 1  i    j+1  k    t
13
14        4       from    ua                      1  i-1  j    30   t-1
15        5       from    ua                      1  i-1  j+1  30   t-1
16        6       from    ua                      1  i    j    30   t-1
17        7       from    ua                      1  i    j+1  30   t-1
18
19        8       from    ua                      1  i-1  j    1    t-1
20        9       from    ua                      1  i-1  j+1  1    t-1
21        10      from    ua                      1  i    j    1    t-1
22        11      from    ua                      1  i    j+1  1    t-1
23
24        12      from    va                      1  i    j-1  30   t-1
25        13      from    va                      1  i    j    30   t-1
26        14      from    va                      1  i+1  j-1  30   t-1
27        15      from    va                      1  i+1  j    30   t-1
28
29        16      from    va                      1  i    j-1  1    t-1
30        17      from    va                      1  i    j    1    t-1
31        18      from    va                      1  i+1  j-1  1    t-1
32        19      from    va                      1  i+1  j    1    t-1*/
33
34  //verification calcul exact (Fortran<-->Yao)
35  //  int ikbu,ikbv,ikbum1,ikbvm1;
36  if(Yt==TU){
37    YS1=0.;
38    YS2=0.;
39    YS3=0.;
40  }
41  else{
42    if(Yi==0 || Yi==NX-1 || Yj==0 || Yj==NY-1 ){//lbc_lnk ! Lateral boundary conditions on ( avt, avmu, avmv )
43      YS1=0.;
44      YS2=0.;
45      YS3=0.;
46    } 
47    else {
48      YS1=avt0*tmask(Yi,Yj,Yk);
49      YS2=avm0*umask(Yi,Yj,Yk);
50      YS3=avm0*vmask(Yi,Yj,Yk);
51      // zdfevd
52      if( x1 <= -1.e-12 )
53        YS1=avevd*tmask(Yi,Yj,Yk);
54      if( x1 <= -1.e-12 ||  x2 <= -1.e-12)
55        YS2=avevd*umask(Yi,Yj,Yk);
56      if( x1 <= -1.e-12 ||  x3 <= -1.e-12)
57        YS3=avevd*vmask(Yi,Yj,Yk);
58     
59      double zvu,zuv,zecu,zecv;
60      if(Yk==1 || Yk==30){
61        if(Yi==NX-2){//ikbum1
62          if(Yk==1){
63            zvu= 0.25*(x17+x19+x16+x18);
64            zecu = sqrt(x10*x10 + zvu*zvu + bfeb2);
65            YS2= bfri2 * zecu * fse3uw(Yi,Yj,Yk);//ikbu);
66          }
67        }
68        else{
69          if(Yk==30){
70            zvu= 0.25*(x13+x15+x12+x14);
71            zecu = sqrt(x6*x6 + zvu*zvu + bfeb2);
72            YS2= bfri2 * zecu * fse3uw(Yi,Yj,Yk);//ikbu);
73          }
74        }
75        if(Yj==NY-2){//ikbvm1
76          if(Yk==1){
77            zuv  = 0.25*(x10+x8+x11+x9);
78            zecv = sqrt(x17*x17 + zuv*zuv + bfeb2);
79            YS3= bfri2 * zecv * fse3vw(Yi,Yj,Yk);//ikbv);
80          }
81        }
82        else {
83          if(Yk==30){
84            zuv  = 0.25*(x6+x4+x7+x5);
85            zecv = sqrt(x13*x13 + zuv*zuv + bfeb2);
86            YS3= bfri2 * zecv * fse3vw(Yi,Yj,Yk);//ikbv);
87          }
88        }
89      }
90    }
91  }
92  //
93}
94
95//===========================================================================
96//                         methode  backward
97
98backward (YREAL x1, YREAL x2, YREAL x3, YREAL x4, YREAL x5, YREAL x6, YREAL x7,
99          YREAL x8, YREAL x9, YREAL x10, YREAL x11, YREAL x12, YREAL x13, 
100          YREAL x14, YREAL x15,YREAL x16, YREAL x17, YREAL x18, YREAL x19)
101{
102  YJ1I1=0.;  YJ1I2=0.;  YJ1I3=0.;  YJ1I4=0.;  YJ1I5=0.;  YJ1I6=0.;  YJ1I7=0.;
103  YJ1I8=0.;  YJ1I9=0.;  YJ1I10=0.; YJ1I11=0.; YJ1I12=0.; YJ1I13=0.; YJ1I14=0.;
104  YJ1I15=0.; YJ1I16=0.; YJ1I17=0.; YJ1I18=0.; YJ1I19=0.;
105 
106  YJ2I1=0.;  YJ2I2=0.;  YJ2I3=0.;  YJ2I4=0.;  YJ2I5=0.;  YJ2I6=0.;  YJ2I7=0.;
107  YJ2I8=0.;  YJ2I9=0.;  YJ2I10=0.; YJ2I11=0.; YJ2I12=0.; YJ2I13=0.; YJ2I14=0.; 
108  YJ2I15=0.; YJ2I16=0.; YJ2I17=0.; YJ2I18=0.; YJ2I19=0.;
109
110  YJ3I1=0.;  YJ3I2=0.;  YJ3I3=0.;  YJ3I4=0.;  YJ3I5=0.;  YJ3I6=0.;  YJ3I7=0.;
111  YJ3I8=0.;  YJ3I9=0.;  YJ3I10=0.; YJ3I11=0.; YJ3I12=0.; YJ3I13=0.; YJ3I14=0.;
112  YJ3I15=0.; YJ3I16=0.; YJ3I17=0.; YJ3I18=0.; YJ3I19=0.;
113
114  if(Yt!=TU){
115      if(Yi==0 || Yi==NX-1 || Yj==0 || Yj==NY-1){//lbc_lnk ! Lateral boundary conditions on ( avt, avmu, avmv )
116        YJ1I1=0.;  YJ1I2=0.;  YJ1I3=0.;  YJ1I4=0.;  YJ1I5=0.;  YJ1I6=0.;  YJ1I7=0.;  YJ1I8=0.;  YJ1I9=0.;  YJ1I10=0.;
117        YJ1I11=0.; YJ1I12=0.; YJ1I13=0.; YJ1I14=0.; YJ1I15=0.; YJ1I16=0.; YJ1I17=0.; YJ1I18=0.; YJ1I19=0.;
118       
119        YJ2I1=0.;  YJ2I2=0.;  YJ2I3=0.;  YJ2I4=0.;  YJ2I5=0.;  YJ2I6=0.;  YJ2I7=0.;  YJ2I8=0.;  YJ2I9=0.;  YJ2I10=0.;
120        YJ2I11=0.; YJ2I12=0.; YJ2I13=0.; YJ2I14=0.; YJ2I15=0.; YJ2I16=0.; YJ2I17=0.; YJ2I18=0.; YJ2I19=0.;
121       
122        YJ3I1=0.;  YJ3I2=0.;  YJ3I3=0.;  YJ3I4=0.;  YJ3I5=0.;  YJ3I6=0.;  YJ3I7=0.;  YJ3I8=0.;  YJ3I9=0.;  YJ3I10=0.;
123        YJ3I11=0.; YJ3I12=0.; YJ3I13=0.; YJ3I14=0.; YJ3I15=0.; YJ3I16=0.; YJ3I17=0.; YJ3I18=0.; YJ3I19=0.;
124      } 
125      else {
126        //      xtest("zdf_avt_avmu_avmv",YG1,Yt);
127        /*      YS1=avt0*tmask(Yi,Yj,Yk);
128        YS2=avm0*umask(Yi,Yj,Yk);
129        YS3=avm0*vmask(Yi,Yj,Yk);*/
130        // zdfevd
131        /*      if( x1 <= -1.e-12 )
132          S1=avevd*tmask(Yi,Yj,Yk);
133        if( x1 <= -1.e-12 ||  x2 <= -1.e-12)
134          YS2=avevd*umask(Yi,Yj,Yk);
135        if( x1 <= -1.e-12 ||  x3 <= -1.e-12)
136        YS3=avevd*vmask(Yi,Yj,Yk);*/
137       
138        double zvu,zuv,zecu,zecv,dzecu_zvu,dzecv_zuv;
139        double  dzvu_x16,dzvu_x17,dzvu_x18,dzvu_x19,dzecu_x10,dzecu_x16,dzecu_x17,dzecu_x18,dzecu_x19;
140        double  dzvu_x12,dzvu_x13,dzvu_x14,dzvu_x15,dzecu_x6 ,dzecu_x12,dzecu_x13,dzecu_x14,dzecu_x15;
141        double  dzuv_x8 ,dzuv_x9 ,dzuv_x10,dzuv_x11,dzecv_x17,dzecv_x8 ,dzecv_x9 ,dzecv_x10,dzecv_x11;
142        double  dzuv_x4 ,dzuv_x5 ,dzuv_x6 ,dzuv_x7 ,dzecv_x13,dzecv_x4 ,dzecv_x5 ,dzecv_x6 ,dzecv_x7;
143
144        if(Yk==1 || Yk==30){
145          if(Yi==NX-2){//ikbum1
146            if(Yk==1){
147              zvu= 0.25*(x17+x19+x16+x18);
148              dzvu_x16=0.25;
149              dzvu_x17=0.25;
150              dzvu_x18=0.25;
151              dzvu_x19=0.25;
152              zecu = sqrt(x10*x10 + zvu*zvu + bfeb2);
153              dzecu_x10=x10/zecu;
154              dzecu_zvu=zvu/zecu;
155              dzecu_x16=dzecu_zvu*dzvu_x16;
156              dzecu_x17=dzecu_zvu*dzvu_x17;
157              dzecu_x18=dzecu_zvu*dzvu_x18;
158              dzecu_x19=dzecu_zvu*dzvu_x19;
159              YJ2I10 = bfri2 * dzecu_x10 * fse3uw(Yi,Yj,Yk);
160              YJ2I16 = bfri2 * dzecu_x16 * fse3uw(Yi,Yj,Yk);
161              YJ2I17 = bfri2 * dzecu_x17 * fse3uw(Yi,Yj,Yk);
162              YJ2I18 = bfri2 * dzecu_x18 * fse3uw(Yi,Yj,Yk);
163              YJ2I19 = bfri2 * dzecu_x19 * fse3uw(Yi,Yj,Yk);
164            }
165            //if(Yk==1) YS2= bfri2 * zecu * fse3uw(Yi,Yj,Yk);//ikbu);
166          }
167          else{
168            if(Yk==30){
169              zvu= 0.25*(x13+x15+x12+x14);
170              dzvu_x12=0.25;
171              dzvu_x13=0.25;
172              dzvu_x14=0.25;
173              dzvu_x15=0.25;
174              zecu = sqrt(x6*x6 + zvu*zvu + bfeb2);
175              dzecu_x6 =x6/zecu;
176              dzecu_zvu=zvu/zecu;
177              dzecu_x12=dzecu_zvu*dzvu_x12;
178              dzecu_x13=dzecu_zvu*dzvu_x13;
179              dzecu_x14=dzecu_zvu*dzvu_x14;
180              dzecu_x15=dzecu_zvu*dzvu_x15;
181              YJ2I6  = bfri2 * dzecu_x6  * fse3uw(Yi,Yj,Yk);
182              YJ2I12 = bfri2 * dzecu_x12 * fse3uw(Yi,Yj,Yk);
183              YJ2I13 = bfri2 * dzecu_x13 * fse3uw(Yi,Yj,Yk);
184              YJ2I14 = bfri2 * dzecu_x14 * fse3uw(Yi,Yj,Yk);
185              YJ2I15 = bfri2 * dzecu_x15 * fse3uw(Yi,Yj,Yk);
186              //              YS2= bfri2 * zecu * fse3uw(Yi,Yj,Yk);//ikbu);
187            }
188          }
189          if(Yj==NY-2){//ikbvm1
190            if(Yk==1){
191              zuv  = 0.25*(x10+x8+x11+x9);
192              dzuv_x8 =0.25;
193              dzuv_x9 =0.25;
194              dzuv_x10=0.25;
195              dzuv_x11=0.25;
196              zecv = sqrt(x17*x17 + zuv*zuv + bfeb2);
197              dzecv_x17 = x17 / zecv;
198              dzecv_zuv = zuv / zecv;
199              dzecv_x8 =dzecv_zuv*dzuv_x8;
200              dzecv_x9 =dzecv_zuv*dzuv_x9;
201              dzecv_x10=dzecv_zuv*dzuv_x10;
202              dzecv_x11=dzecv_zuv*dzuv_x11;
203              YJ3I8  = bfri2 * dzecv_x8  * fse3vw(Yi,Yj,Yk);
204              YJ3I9  = bfri2 * dzecv_x9  * fse3vw(Yi,Yj,Yk);
205              YJ3I10 = bfri2 * dzecv_x10 * fse3vw(Yi,Yj,Yk);
206              YJ3I11 = bfri2 * dzecv_x11 * fse3vw(Yi,Yj,Yk);
207              YJ3I17 = bfri2 * dzecv_x17 * fse3vw(Yi,Yj,Yk);
208            }
209          }
210          else {
211            if(Yk==30){
212              zuv  = 0.25*(x6+x4+x7+x5);
213              dzuv_x4 =0.25;
214              dzuv_x5 =0.25;
215              dzuv_x6 =0.25;
216              dzuv_x7 =0.25;
217              zecv = sqrt(x13*x13 + zuv*zuv + bfeb2);
218              dzecv_x13 = x13 / zecv;
219              dzecv_zuv = zuv / zecv;
220              dzecv_x4 =dzecv_zuv*dzuv_x4;
221              dzecv_x5 =dzecv_zuv*dzuv_x5;
222              dzecv_x6 =dzecv_zuv*dzuv_x6;
223              dzecv_x7 =dzecv_zuv*dzuv_x7;
224              YJ3I4  = bfri2 * dzecv_x4  * fse3vw(Yi,Yj,Yk);
225              YJ3I5  = bfri2 * dzecv_x5  * fse3vw(Yi,Yj,Yk);
226              YJ3I6  = bfri2 * dzecv_x6  * fse3vw(Yi,Yj,Yk);
227              YJ3I7  = bfri2 * dzecv_x7  * fse3vw(Yi,Yj,Yk);
228              YJ3I13 = bfri2 * dzecv_x13 * fse3vw(Yi,Yj,Yk);
229              //              YS3= bfri2 * zecv * fse3vw(Yi,Yj,Yk);//ikbv);
230            }
231          }
232        }
233      }
234  }
235 
236}
237
238  //===========================================================================
239//*************************  FIN DU MODULE zdf_avt_avmu_avmv   *************************
240
Note: See TracBrowser for help on using the repository browser.