/*************************************************************************** module classe solsor_gc1_x_r.h - description ***************************************************************************/ // Julien Brajard // locean-ipsl.upmc, Paris, April 25, 2011 //=========================================================================== // methode forward forward (YREAL x1, YREAL x2, YREAL x3, YREAL x4, YREAL x5, YREAL x6, YREAL x7, YREAL x8) { /* 1 from gcx_dynspg_flt 1 i j t 2 from gcb_dynspg_flt 1 i j t 3 from solsor_gc2_x_r 1 i j-1 k-1 t 4 from solsor_gc2_x_r 1 i-1 j k-1 t 5 from solsor_gc2_x_r 1 i+1 j k-1 t 6 from solsor_gc2_x_r 1 i j+1 k-1 t 7 from solsor_gc2_x_r 1 i j k-1 t 8 from solsor_flag 2 NX NY k-1 t } output 1 : gcx oupput 2 : gcr (pour l'arrĂȘt des itĂ©rations */ if(Yt==TU) { YS1=0; YS2=0; } else { int t; if(Yt==TU+1 && neuler==0) t=0; else t=1; if (x8==1) { YS1=x7; YS2=0; } else { if (Yk==0) { if ( ( (Yi==0) | (Yj==0) ) | ( (Yi==NX-1) | (Yj==NY-1) ) { YS1=0; YS2=0; } else { YS1=x1; YS2=0; } } //Yk=0; else { YREAL gcx,gcr,ztmp,zres; int ishift=Yj%2; if ((Yi+1)%2==ishift) { //! Guess black update ztmp = x2 - gcp(ji,jj,0,t) * x3 - gcp(ji,jj,1,t) * x4 - gcp(ji,jj,2,t) * x5 - gcp(ji,jj,3,t) * x6; // ! Estimate of the residual zres = ztmp - x7; YS2 = zres * gcdmat(ji,jj,t) * zres; // ! Guess update YS1 = sor * ztmp + (1.-sor) * x7; } else { YS2=0; YS1=x7; } } } // Yk>0 } //if x8==0 } //Yt>TU } //=========================================================================== // methode backward backward () { }