[1] | 1 | |
---|
| 2 | /*************************************************************************** |
---|
| 3 | module classe spguv_dynspg_flt.h - description |
---|
| 4 | ***************************************************************************/ |
---|
| 5 | // Mohamed Berrada |
---|
| 6 | // locean-ipsl.upmc, Paris, April 20, 2009 |
---|
| 7 | //=========================================================================== |
---|
| 8 | // methode forward |
---|
| 9 | forward (YREAL x1,YREAL x2,YREAL x3) |
---|
| 10 | {/* 1 from gcx2 1 i+1 j t |
---|
| 11 | 2 from gcx2 1 i j t |
---|
| 12 | 3 from gcx2 1 i j+1 t*/ |
---|
| 13 | |
---|
| 14 | /* YS1 */ |
---|
| 15 | /* A |
---|
| 16 | R */ |
---|
| 17 | if(Yt==TU){ |
---|
| 18 | YS1=0.; |
---|
| 19 | YS2=0.; |
---|
| 20 | } |
---|
| 21 | else{ |
---|
| 22 | double znugdt = rnu * grav * r2dt; |
---|
| 23 | if(Yi==0 || Yi==NX-1 || Yj==0 || Yj==NY-1 ){ |
---|
| 24 | YS1=0.; |
---|
| 25 | } |
---|
| 26 | else{ |
---|
| 27 | // ! trend of Transport divergence gradient |
---|
| 28 | // double ztdgu = znugdt * (gcx(Yi+1,Yj ) - gcx(Yi,Yj) ) / e1u(Yi,Yj); |
---|
| 29 | // double ztdgv = znugdt * (gcx(Yi ,Yj+1) - gcx(Yi,Yj) ) / e2v(Yi,Yj); |
---|
| 30 | double ztdgu = znugdt * (x1 - x2 ) / e1u(Yi,Yj); |
---|
| 31 | double ztdgv = znugdt * (x3 - x2 ) / e2v(Yi,Yj); |
---|
| 32 | // ! multiplied by z2dt |
---|
| 33 | YS1 = r2dt * ztdgu; |
---|
| 34 | YS2 = r2dt * ztdgv; |
---|
| 35 | } |
---|
| 36 | } |
---|
| 37 | // |
---|
| 38 | /* if(Yt==6 && Yi==28 && Yj==3) xtest("spg YS_spg",YS1,Yi,Yj,Yk,Yt); |
---|
| 39 | if(Yt==6 && Yi==28 && Yj==3) xtest("spg x1",x1,Yi,Yj,Yk,Yt); |
---|
| 40 | if(Yt==6 && Yi==28 && Yj==3) xtest("spg x2",x2,Yi,Yj,Yk,Yt); |
---|
| 41 | if(Yt==6 && Yi==28 && Yj==3) xtest("spg x3",x3,Yi,Yj,Yk,Yt);*/ |
---|
| 42 | |
---|
| 43 | } |
---|
| 44 | |
---|
| 45 | //=========================================================================== |
---|
| 46 | // methode backward |
---|
| 47 | |
---|
| 48 | backward (YREAL x1,YREAL x2,YREAL x3) |
---|
| 49 | {//(12 7 0; 4) |
---|
| 50 | double znugdt,dztdgu_x1,dztdgu_x2,dztdgv_x2,dztdgv_x3; |
---|
| 51 | YJ1I1=0.; YJ1I2=0.; YJ1I3=0.; |
---|
| 52 | YJ2I1=0.; YJ2I2=0.; YJ2I3=0.; |
---|
| 53 | if(Yt!=TU){ |
---|
| 54 | znugdt = rnu * grav * r2dt; |
---|
| 55 | if(Yi==0 || Yi==NX-1 || Yj==0 || Yj==NY-1 ){ |
---|
| 56 | YJ1I1=0.; YJ1I2=0.; YJ1I3=0.; |
---|
| 57 | YJ2I1=0.; YJ2I2=0.; YJ2I3=0.; |
---|
| 58 | } |
---|
| 59 | else{ |
---|
| 60 | // ! trend of Transport divergence gradient |
---|
| 61 | dztdgu_x1 = znugdt / e1u(Yi,Yj); |
---|
| 62 | dztdgu_x2 = -znugdt / e1u(Yi,Yj); |
---|
| 63 | dztdgv_x2 = -znugdt / e2v(Yi,Yj); |
---|
| 64 | dztdgv_x3 = znugdt / e2v(Yi,Yj); |
---|
| 65 | // ! multiplied by z2dt |
---|
| 66 | YJ1I1=r2dt * dztdgu_x1; |
---|
| 67 | YJ1I2=r2dt * dztdgu_x2; |
---|
| 68 | YJ1I3=0.; |
---|
| 69 | YJ2I1=0.; |
---|
| 70 | YJ2I2=r2dt * dztdgv_x2; |
---|
| 71 | YJ2I3=r2dt * dztdgv_x3; |
---|
| 72 | } |
---|
| 73 | } |
---|
| 74 | // |
---|
| 75 | /* if(Yi==11 && Yj== 11 &&Yt==3) |
---|
| 76 | { |
---|
| 77 | if(Ycurward==BACKWARD) |
---|
| 78 | printf("BACKWARD:\n"); |
---|
| 79 | if(Ycurward==LINWARD) |
---|
| 80 | printf("LINWARD:\n"); |
---|
| 81 | printf("x1:%24.16e x2:%24.16e x3:%24.16e \n",x1,x2,x3); |
---|
| 82 | // printf("znugdt:%24.16e \n",znugdt); |
---|
| 83 | printf("dztdgu_x1:%24.16e \n",dztdgu_x1); |
---|
| 84 | printf("dztdgu_x2:%24.16e \n",dztdgu_x2); |
---|
| 85 | printf("dztdgv_x2:%24.16e \n",dztdgv_x2); |
---|
| 86 | printf("dztdgv_x3:%24.16e \n",dztdgv_x3); |
---|
| 87 | }*/ |
---|
| 88 | } |
---|
| 89 | |
---|
| 90 | //=========================================================================== |
---|
| 91 | //************************* FIN DU MODULE spguv_dynspg_flt ************************* |
---|
| 92 | |
---|