/*************************************************************************** module classe spguv_dynspg_flt.h - description ***************************************************************************/ // Mohamed Berrada // locean-ipsl.upmc, Paris, April 20, 2009 //=========================================================================== // methode forward forward (YREAL x1,YREAL x2,YREAL x3) {/* 1 from gcx2 1 i+1 j t 2 from gcx2 1 i j t 3 from gcx2 1 i j+1 t*/ /* YS1 */ /* A R */ if(Yt==TU){ YS1=0.; YS2=0.; } else{ double znugdt = rnu * grav * r2dt; if(Yi==0 || Yi==NX-1 || Yj==0 || Yj==NY-1 ){ YS1=0.; } else{ // ! trend of Transport divergence gradient // double ztdgu = znugdt * (gcx(Yi+1,Yj ) - gcx(Yi,Yj) ) / e1u(Yi,Yj); // double ztdgv = znugdt * (gcx(Yi ,Yj+1) - gcx(Yi,Yj) ) / e2v(Yi,Yj); double ztdgu = znugdt * (x1 - x2 ) / e1u(Yi,Yj); double ztdgv = znugdt * (x3 - x2 ) / e2v(Yi,Yj); // ! multiplied by z2dt YS1 = r2dt * ztdgu; YS2 = r2dt * ztdgv; } } // /* if(Yt==6 && Yi==28 && Yj==3) xtest("spg YS_spg",YS1,Yi,Yj,Yk,Yt); if(Yt==6 && Yi==28 && Yj==3) xtest("spg x1",x1,Yi,Yj,Yk,Yt); if(Yt==6 && Yi==28 && Yj==3) xtest("spg x2",x2,Yi,Yj,Yk,Yt); if(Yt==6 && Yi==28 && Yj==3) xtest("spg x3",x3,Yi,Yj,Yk,Yt);*/ } //=========================================================================== // methode backward backward (YREAL x1,YREAL x2,YREAL x3) {//(12 7 0; 4) double znugdt,dztdgu_x1,dztdgu_x2,dztdgv_x2,dztdgv_x3; YJ1I1=0.; YJ1I2=0.; YJ1I3=0.; YJ2I1=0.; YJ2I2=0.; YJ2I3=0.; if(Yt!=TU){ znugdt = rnu * grav * r2dt; if(Yi==0 || Yi==NX-1 || Yj==0 || Yj==NY-1 ){ YJ1I1=0.; YJ1I2=0.; YJ1I3=0.; YJ2I1=0.; YJ2I2=0.; YJ2I3=0.; } else{ // ! trend of Transport divergence gradient dztdgu_x1 = znugdt / e1u(Yi,Yj); dztdgu_x2 = -znugdt / e1u(Yi,Yj); dztdgv_x2 = -znugdt / e2v(Yi,Yj); dztdgv_x3 = znugdt / e2v(Yi,Yj); // ! multiplied by z2dt YJ1I1=r2dt * dztdgu_x1; YJ1I2=r2dt * dztdgu_x2; YJ1I3=0.; YJ2I1=0.; YJ2I2=r2dt * dztdgv_x2; YJ2I3=r2dt * dztdgv_x3; } } // /* if(Yi==11 && Yj== 11 &&Yt==3) { if(Ycurward==BACKWARD) printf("BACKWARD:\n"); if(Ycurward==LINWARD) printf("LINWARD:\n"); printf("x1:%24.16e x2:%24.16e x3:%24.16e \n",x1,x2,x3); // printf("znugdt:%24.16e \n",znugdt); printf("dztdgu_x1:%24.16e \n",dztdgu_x1); printf("dztdgu_x2:%24.16e \n",dztdgu_x2); printf("dztdgv_x2:%24.16e \n",dztdgv_x2); printf("dztdgv_x3:%24.16e \n",dztdgv_x3); }*/ } //=========================================================================== //************************* FIN DU MODULE spguv_dynspg_flt *************************