1 | |
---|
2 | /*************************************************************************** |
---|
3 | module classe sbcgyre_utau_vtau_wndm.h - description |
---|
4 | ***************************************************************************/ |
---|
5 | // Mohamed Berrada |
---|
6 | // locean-ipsl.upmc, Paris, Mars 18, 2009 |
---|
7 | //=========================================================================== |
---|
8 | // methode forward |
---|
9 | forward (YREAL x1,YREAL x2,YREAL x3,YREAL x4) |
---|
10 | {/* 1 from sbcgyre_utau_vtau 1 i-1 j t |
---|
11 | 2 from sbcgyre_utau_vtau 2 i j-1 t |
---|
12 | 3 from sbcgyre_utau_vtau 1 i j t |
---|
13 | 4 from sbcgyre_utau_vtau 2 i j t*/ |
---|
14 | /* verification norm(xY-xF),norm(xY-xF)/norm(xF) |
---|
15 | wndm 3.299904462350809e-09, 2.039381910331513e-11 |
---|
16 | */ |
---|
17 | if(Yt==TU){ |
---|
18 | YS1=0.; |
---|
19 | } |
---|
20 | else{ |
---|
21 | // ! Estimation of wind speed as a function of wind stress ( |tau|=rhoa*Cd*|U|^2 ) |
---|
22 | double zrhoa = 1.22;// ! Air density kg/m3 |
---|
23 | double zcdrag = 1.5e-3;// ! drag coefficient |
---|
24 | double zcoef = 0.5 / ( zrhoa * zcdrag ); |
---|
25 | if(Yj==NY-1 || Yj==0 || Yi==NX-1 || Yi==0) |
---|
26 | YS1=0.; |
---|
27 | else{ |
---|
28 | double ztx = x1+x3;//utau(ji-1,jj ) + utau(ji,jj) |
---|
29 | double zty = x2+x4;// vtau(ji ,jj-1) + vtau(ji,jj) |
---|
30 | double ztau = sqrt( ztx * ztx + zty * zty ); |
---|
31 | YS1=sqrt(ztau * zcoef ) * tmask(Yi,Yj,0); |
---|
32 | } |
---|
33 | // CALL lbc_lnk( wndm(:,:) , 'T', 1. ) pour l'instant "closed domain" |
---|
34 | } |
---|
35 | // |
---|
36 | } |
---|
37 | |
---|
38 | //=========================================================================== |
---|
39 | // methode backward |
---|
40 | |
---|
41 | backward (YREAL x1,YREAL x2,YREAL x3,YREAL x4) |
---|
42 | { |
---|
43 | YJ1I1=0.; YJ1I2=0.; YJ1I3=0.; YJ1I4=0.; |
---|
44 | if(Yt!=TU){ |
---|
45 | // ! Estimation of wind speed as a function of wind stress ( |tau|=rhoa*Cd*|U|^2 ) |
---|
46 | double zrhoa = 1.22;// ! Air density kg/m3 |
---|
47 | double zcdrag = 1.5e-3;// ! drag coefficient |
---|
48 | double zcoef = 0.5 / ( zrhoa * zcdrag ); |
---|
49 | if(Yj==NY-1 || Yj==0 || Yi==NX-1 || Yi==0){ |
---|
50 | YJ1I1=0.; YJ1I2=0.; YJ1I3=0.; YJ1I4=0.; |
---|
51 | } |
---|
52 | else{ |
---|
53 | double ztx = x1+x3,dztx_x1=1.,dztx_x3=1.;//utau(ji-1,jj ) + utau(ji,jj) |
---|
54 | double zty = x2+x4,dzty_x2=1.,dzty_x4=1.;// vtau(ji ,jj-1) + vtau(ji,jj) |
---|
55 | double ztau = sqrt( ztx * ztx + zty * zty ), |
---|
56 | dztau_ztx = ztx/ztau, |
---|
57 | dztau_zty = zty/ztau, |
---|
58 | dztau_x1 = dztau_ztx*dztx_x1, |
---|
59 | dztau_x2 = dztau_zty*dzty_x2, |
---|
60 | dztau_x3 = dztau_ztx*dztx_x3, |
---|
61 | dztau_x4 = dztau_zty*dzty_x4; |
---|
62 | YJ1I1 = 0.5 / sqrt(ztau * zcoef ) * zcoef * dztau_x1 * tmask(Yi,Yj,0); |
---|
63 | YJ1I2 = 0.5 / sqrt(ztau * zcoef ) * zcoef * dztau_x2 * tmask(Yi,Yj,0); |
---|
64 | YJ1I3 = 0.5 / sqrt(ztau * zcoef ) * zcoef * dztau_x3 * tmask(Yi,Yj,0); |
---|
65 | YJ1I4 = 0.5 / sqrt(ztau * zcoef ) * zcoef * dztau_x4 * tmask(Yi,Yj,0); |
---|
66 | } |
---|
67 | |
---|
68 | } |
---|
69 | } |
---|
70 | //=========================================================================== |
---|
71 | //********************* FIN DU MODULE sbcgyre_utau_vtau_wndm ********************** |
---|
72 | |
---|