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 |
---|
9 | forward (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 | |
---|
98 | backward (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 | |
---|