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