1 | |
---|
2 | /*************************************************************************** |
---|
3 | module classe zfuv_UW_dynadv_cen2.h - description |
---|
4 | ***************************************************************************/ |
---|
5 | // Mohamed Berrada |
---|
6 | // locean-ipsl.upmc, Paris, February 27, 2009 |
---|
7 | //=========================================================================== |
---|
8 | // methode forward |
---|
9 | forward (YREAL x1,YREAL x2,YREAL x3,YREAL x4,YREAL x5,YREAL x6,YREAL x7) |
---|
10 | {/* x1 from wa 1 i j k t-1 |
---|
11 | x2 from wa 1 i+1 j k t-1 |
---|
12 | x3 from wa 1 i j+1 k t-1 |
---|
13 | x4 from ua 1 i j k t-1 |
---|
14 | x5 from ua 1 i j k-1 t-1 |
---|
15 | x6 from va 1 i j k t-1 |
---|
16 | x7 from va 1 i j k-1 t-1*/ |
---|
17 | |
---|
18 | if(Yt==TU) |
---|
19 | YS1=0.; |
---|
20 | else{ |
---|
21 | double zfwij,zfwip1j,zfwijp1; |
---|
22 | /* if(Yk==0 && Yi==0 && Yj==0) |
---|
23 | printf("Yt=%d\n",Yt);*/ |
---|
24 | if(Yk==NZ-1 || Yj==0 || Yj==NY-1 || Yi==0 || Yi==NX-1) |
---|
25 | YS1=0.; |
---|
26 | else{ |
---|
27 | zfwij=0.25*e1t(Yi,Yj)*e2t(Yi,Yj)*x1; |
---|
28 | zfwip1j=0.25*e1t(Yi+1,Yj)*e2t(Yi+1,Yj)*x2; |
---|
29 | zfwijp1=0.25*e1t(Yi,Yj+1)*e2t(Yi,Yj+1)*x3; |
---|
30 | if(Yk==0){ |
---|
31 | YS1=2.*(zfwij+zfwip1j)*x4; |
---|
32 | YS2=2.*(zfwij+zfwijp1)*x6; |
---|
33 | } |
---|
34 | else{ |
---|
35 | YS1=(zfwij+zfwip1j)*(x4+x5); |
---|
36 | YS2=(zfwij+zfwijp1)*(x6+x7); |
---|
37 | } |
---|
38 | } |
---|
39 | } |
---|
40 | // |
---|
41 | } |
---|
42 | |
---|
43 | //=========================================================================== |
---|
44 | // methode backward |
---|
45 | |
---|
46 | backward (YREAL x1,YREAL x2,YREAL x3,YREAL x4,YREAL x5,YREAL x6,YREAL x7) |
---|
47 | { |
---|
48 | YJ1I1=0.; YJ1I2=0.; YJ1I3=0.; YJ1I4=0.; YJ1I5=0.; YJ1I6=0.; YJ1I7=0.; |
---|
49 | YJ2I1=0.; YJ2I2=0.; YJ2I3=0.; YJ2I4=0.; YJ2I5=0.; YJ2I6=0.; YJ2I7=0.; |
---|
50 | if(Yt!=TU){ |
---|
51 | double zfwij,zfwip1j,zfwijp1,dzfwij_x1,dzfwip1j_x2,dzfwijp1_x3; |
---|
52 | /* if(Yk==0 && Yi==0 && Yj==0) |
---|
53 | printf("Yt=%d\n",Yt);*/ |
---|
54 | if(Yk==NZ-1 || Yj==0 || Yj==NY-1 || Yi==0 || Yi==NX-1){ |
---|
55 | YJ1I1=0.; YJ1I2=0.; YJ1I3=0.; YJ1I4=0.; YJ1I5=0.; YJ1I6=0.; YJ1I7=0.; |
---|
56 | YJ2I1=0.; YJ2I2=0.; YJ2I3=0.; YJ2I4=0.; YJ2I5=0.; YJ2I6=0.; YJ2I7=0.; |
---|
57 | } |
---|
58 | else{ |
---|
59 | zfwij=0.25*e1t(Yi,Yj)*e2t(Yi,Yj)*x1; |
---|
60 | dzfwij_x1=0.25*e1t(Yi,Yj)*e2t(Yi,Yj); |
---|
61 | zfwip1j=0.25*e1t(Yi+1,Yj)*e2t(Yi+1,Yj)*x2; |
---|
62 | dzfwip1j_x2=0.25*e1t(Yi+1,Yj)*e2t(Yi+1,Yj); |
---|
63 | zfwijp1=0.25*e1t(Yi,Yj+1)*e2t(Yi,Yj+1)*x3; |
---|
64 | dzfwijp1_x3=0.25*e1t(Yi,Yj+1)*e2t(Yi,Yj+1); |
---|
65 | if(Yk==0){ |
---|
66 | YJ1I1=2.*dzfwij_x1*x4; |
---|
67 | YJ1I2=2.*dzfwip1j_x2*x4; |
---|
68 | YJ1I4=2.*(zfwij+zfwip1j); |
---|
69 | |
---|
70 | YJ2I1=2.*dzfwij_x1*x6; |
---|
71 | YJ2I3=2.*dzfwijp1_x3*x6; |
---|
72 | YJ2I6=2.*(zfwij+zfwijp1); |
---|
73 | } |
---|
74 | else{ |
---|
75 | YJ1I1=dzfwij_x1*(x4+x5); |
---|
76 | YJ1I2=dzfwip1j_x2*(x4+x5); |
---|
77 | YJ1I4=zfwij+zfwip1j; |
---|
78 | YJ1I5=zfwij+zfwip1j; |
---|
79 | |
---|
80 | YJ2I1=dzfwij_x1*(x6+x7); |
---|
81 | YJ2I3=dzfwijp1_x3*(x6+x7); |
---|
82 | YJ2I6=zfwij+zfwijp1; |
---|
83 | YJ2I7=zfwij+zfwijp1; |
---|
84 | } |
---|
85 | } |
---|
86 | |
---|
87 | } |
---|
88 | } |
---|
89 | //=========================================================================== |
---|
90 | //********************* FIN DU MODULE zfu_UW_dynadv_cen2 ********************** |
---|