3 |
|
|
4 |
#include "CPP_OPTIONS.h" |
#include "CPP_OPTIONS.h" |
5 |
|
|
6 |
|
CBOP |
7 |
|
C !ROUTINE: CALC_SURF_DR |
8 |
|
C !INTERFACE: |
9 |
SUBROUTINE CALC_SURF_DR(etaFld, |
SUBROUTINE CALC_SURF_DR(etaFld, |
10 |
I myTime, myIter, myThid ) |
I myTime, myIter, myThid ) |
11 |
C /==========================================================\ |
C !DESCRIPTION: \bv |
12 |
C | SUBROUTINE CALC_SURF_DR | |
C *==========================================================* |
13 |
C | o Calculate the new surface level thickness according to | |
C | SUBROUTINE CALC_SURF_DR |
14 |
C | the surface r-position (Non-Linear Free-Surf) | |
C | o Calculate the new surface level thickness according to |
15 |
C | o take decision if grid box becomes too thin or too thick| |
C | the surface r-position (Non-Linear Free-Surf) |
16 |
C \==========================================================/ |
C | o take decision if grid box becomes too thin or too thick |
17 |
IMPLICIT NONE |
C *==========================================================* |
18 |
|
C \ev |
19 |
|
|
20 |
|
C !USES: |
21 |
|
IMPLICIT NONE |
22 |
C == Global variables |
C == Global variables |
23 |
#include "SIZE.h" |
#include "SIZE.h" |
24 |
#include "EEPARAMS.h" |
#include "EEPARAMS.h" |
25 |
#include "PARAMS.h" |
#include "PARAMS.h" |
|
c #include "DYNVARS.h" |
|
26 |
#include "GRID.h" |
#include "GRID.h" |
27 |
#include "SURFACE.h" |
#include "SURFACE.h" |
28 |
|
|
29 |
|
C !INPUT/OUTPUT PARAMETERS: |
30 |
C == Routine arguments == |
C == Routine arguments == |
31 |
C myTime - Current time in simulation |
C myTime :: Current time in simulation |
32 |
C myIter - Current iteration number in simulation |
C myIter :: Current iteration number in simulation |
33 |
C myThid - Thread number for this instance of the routine. |
C myThid :: Thread number for this instance of the routine. |
34 |
C etaFld - current eta field used to update the hFactor |
C etaFld :: current eta field used to update the hFactor |
35 |
_RL myTime |
_RL myTime |
36 |
INTEGER myIter |
INTEGER myIter |
37 |
INTEGER myThid |
INTEGER myThid |
39 |
|
|
40 |
#ifdef NONLIN_FRSURF |
#ifdef NONLIN_FRSURF |
41 |
|
|
42 |
|
C !LOCAL VARIABLES: |
43 |
C Local variables in common block |
C Local variables in common block |
44 |
C Rmin_surf : minimum r_value of the free surface position |
C Rmin_surf :: minimum r_value of the free surface position |
45 |
C that satisfy the hFacInf criteria |
C that satisfy the hFacInf criteria |
46 |
COMMON /LOCAL_CALC_SURF_DR/ Rmin_surf |
COMMON /LOCAL_CALC_SURF_DR/ Rmin_surf |
47 |
_RL Rmin_surf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
_RL Rmin_surf(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) |
|
|
|
48 |
C Local variables |
C Local variables |
49 |
C i,j,k,bi,bj - loop counter |
C i,j,k,bi,bj :: loop counter |
50 |
C rSurftmp : free surface r-position that is used to compute hFac_surf |
C rSurftmp :: free surface r-position that is used to compute hFac_surf |
51 |
C adjust_nb_pt : Nb of grid points where rSurf is adjusted (hFactInf) |
C adjust_nb_pt :: Nb of grid points where rSurf is adjusted (hFactInf) |
52 |
C adjust_volum : adjustment effect on the volume (domain size) |
C adjust_volum :: adjustment effect on the volume (domain size) |
|
|
|
53 |
INTEGER i,j,k,bi,bj |
INTEGER i,j,k,bi,bj |
54 |
INTEGER ks |
INTEGER ks |
55 |
_RL hFacInfMOM, Rmin_tmp, hFactmp, adjust_nb_pt, adjust_volum |
_RL hFacInfMOM, Rmin_tmp, hFactmp, adjust_nb_pt, adjust_volum |
56 |
_RL rSurftmp(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
_RL rSurftmp(1-OLx:sNx+OLx,1-OLy:sNy+OLy) |
57 |
_RS hhm, hhp |
_RS hhm, hhp |
58 |
CHARACTER*(MAX_LEN_MBUF) suff |
CHARACTER*(MAX_LEN_MBUF) suff |
59 |
|
CEOP |
60 |
|
|
61 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
62 |
|
|