source: trunk/src/zwisd_ua_dynzdf_imp.h

Last change on this file was 1, checked in by jbrlod, 13 years ago

Import initial

  • Property svn:eol-style set to native
File size: 2.1 KB
Line 
1
2/***************************************************************************
3                 module classe zwisd_ua_dynzdf_imp.h  -  description
4***************************************************************************/
5// Mohamed Berrada
6// locean-ipsl.upmc, Paris, April 17, 2009
7//===========================================================================
8//                          methode forward
9forward (YREAL x1, YREAL x2)
10{ /*    1       from    zdf_avt_avmu_avmv       2  i    j    k    t
11        2       from    zdf_avt_avmu_avmv       2  i    j    k+1  t*/   
12  /* YS1 */
13  /*     A 4.671131788614972e-17
14         R 1.088374593705250e-16*/
15  /* YS2 */
16  /*     A 2.089031091690222e-17
17         R 4.907327859125863e-17*/
18  /*     */
19  /* YS3*/
20  /*      A 0
21          R 0*/
22
23  if(Yt==TU)
24    YS1=0.;
25  else{
26    double zzws;
27    double  zcoef = -r2dt/fse3u(Yi,Yj,Yk);
28    if(Yi==0 || Yi==NX-1 || Yj==0 || Yj==NY-1 || Yk== NZ-1){
29      YS1=0.;
30      YS2=0.;
31      YS3=0.;
32    }
33    else{
34      YS1 = zcoef * x1/ fse3uw(Yi,Yj,Yk  );
35      zzws = zcoef * x2/fse3uw(Yi,Yj,Yk+1);
36      YS2 = zzws* umask(Yi,Yj,Yk+1);
37      YS3 = 1. - YS1 - zzws;
38      //      ! Surface boudary conditions
39      if(Yk==0){
40        YS1 = 0.;
41        YS3 = 1. - YS2;
42      }
43    }
44  }
45  //
46}
47
48//===========================================================================
49//                         methode  backward
50
51backward (YREAL x1, YREAL x2)
52{
53  YJ1I1=0.;     YJ1I2=0.; 
54  YJ2I1=0.;     YJ2I2=0.; 
55  YJ3I1=0.;     YJ3I2=0.; 
56  if(Yt!=TU){ 
57    double  zcoef = -r2dt/fse3u(Yi,Yj,Yk);
58    if(Yi==0 || Yi==NX-1 || Yj==0 || Yj==NY-1 || Yk== NZ-1){
59      YJ1I1=0.;     YJ1I2=0.; 
60      YJ2I1=0.;     YJ2I2=0.; 
61      YJ3I1=0.;     YJ3I2=0.; 
62    }
63    else{
64      YJ1I1= zcoef / fse3uw(Yi,Yj,Yk  );
65      double dzzws_x2 = zcoef/fse3uw(Yi,Yj,Yk+1);
66      YJ2I2 = dzzws_x2* umask(Yi,Yj,Yk+1);
67      YJ3I1 = - YJ1I1;
68      YJ3I2 = - dzzws_x2;
69      //      ! Surface boudary conditions
70      if(Yk==0){
71        YJ1I1 = 0.;
72        YJ3I1 = 0.;
73        YJ3I2 = - YJ2I2;
74      }
75    }
76  }
77  //
78 
79}
80
81//===========================================================================
82//******************  FIN DU MODULE zwisd_ua_dynzdf_imp  ********************
83
Note: See TracBrowser for help on using the repository browser.