Changeset 6596 for branches/2016/dev_r6409_SIMPLIF_2_usrdef
- Timestamp:
- 2016-05-22T20:11:06+02:00 (8 years ago)
- Location:
- branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM
- Files:
-
- 59 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/CONFIG/AMM12/EXP00/namelist_cfg
r6595 r6596 22 22 cp_cfg = "amm" ! name of the configuration 23 23 jp_cfg = 011 ! resolution of the configuration 24 jpidta = 198 ! 1st lateral dimension ( >= jpi ) 25 jpjdta = 224 ! 2nd " " ( >= jpj ) 26 jpkdta = 51 ! number of levels ( >= jpk ) 27 jpiglo = 198 ! 1st dimension of global domain --> i =jpidta 28 jpjglo = 224 ! 2nd - - --> j =jpjdta 29 jpizoom = 1 ! left bottom (i,j) indices of the zoom 30 jpjzoom = 1 ! in data domain indices 24 ! jpkdta = 51 ! number of levels ( >= jpk ) 25 ! jpiglo = 198 ! 1st dimension of global domain --> i =jpidta 26 ! jpjglo = 224 ! 2nd - - --> j =jpjdta 31 27 jperio = 0 ! lateral cond. type (between 0 and 6) 32 28 / … … 49 45 !----------------------------------------------------------------------- 50 46 rn_rdt = 600. ! time step for the dynamics (and tracer if nn_acc=0) 51 ppglam0 = 999999.0 ! longitude of first raw and column T-point (jphgr_msh = 1)52 ppgphi0 = 999999.0 ! latitude of first raw and column T-point (jphgr_msh = 1)53 ppe1_deg = 999999.0 ! zonal grid-spacing (degrees)54 ppe2_deg = 999999.0 ! meridional grid-spacing (degrees)55 ppe1_m = 999999.0 ! zonal grid-spacing (degrees)56 ppe2_m = 999999.0 ! meridional grid-spacing (degrees)57 47 ppsur = 999999.0 ! ORCA r4, r2 and r05 coefficients 58 48 ppa0 = 999999.0 ! (default coefficients) -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/CONFIG/C1D_PAPA/EXP00/namelist_cfg
r6595 r6596 18 18 cp_cfg = "papa" ! name of the configuration 19 19 jp_cfg = 1 ! resolution of the configuration 20 jpidta = 3 ! 1st lateral dimension ( >= jpi ) = 30*jp_cfg+2 21 jpjdta = 3 ! 2nd " " ( >= jpj ) = 20*jp_cfg+2 22 jpkdta = 75 ! number of levels ( >= jpk ) 23 jpiglo = 3 ! 1st dimension of global domain --> i = jpidta 24 jpjglo = 3 ! 2nd - - --> j = jpjdta 25 jpizoom = 1 ! left bottom (i,j) indices of the zoom 26 jpjzoom = 1 ! in data domain indices 20 ! jpidta = 3 ! 1st lateral dimension ( >= jpi ) = 30*jp_cfg+2 21 ! jpjdta = 3 ! 2nd " " ( >= jpj ) = 20*jp_cfg+2 22 ! jpkdta = 75 ! number of levels ( >= jpk ) 23 ! jpiglo = 3 ! 1st dimension of global domain --> i = jpidta 24 ! jpjglo = 3 ! 2nd - - --> j = jpjdta 27 25 jperio = 0 ! lateral cond. type (between 0 and 6) 28 26 / … … 43 41 nn_msh = 0 ! create (=1) a mesh file or not (=0) 44 42 rn_rdt = 360. ! time step for the dynamics 45 jphgr_msh = 1 ! type of horizontal mesh46 43 ppglam0 = -150.0 ! longitude of first raw and column T-point (jphgr_msh = 1) 47 44 ppgphi0 = 50.0 ! latitude of first raw and column T-point (jphgr_msh = 1) -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/CONFIG/GYRE/EXP00/namelist_cfg
r6595 r6596 26 26 &namcfg ! parameters of the configuration 27 27 !----------------------------------------------------------------------- 28 ln_read_cfg = . false. !!gm .false. ! flag to read (.true.) configuration definition files (coordinates,28 ln_read_cfg = .true. !!gm .false. ! flag to read (.true.) configuration definition files (coordinates, 29 29 cp_cfg = "gyre" ! name of the configuration 30 30 jp_cfg = 1 ! resolution of the configuration 31 jpidta = 32 ! 1st lateral dimension ( >= jpi ) = 30*jp_cfg+232 jpjdta = 22 ! 2nd " " ( >= jpj ) = 20*jp_cfg+233 jpkdta = 31 ! number of levels ( >= jpk )34 jpiglo = 32 ! 1st dimension of global domain --> i = jpidta35 jpjglo = 22 ! 2nd - - --> j = jpjdta36 jpizoom = 1 ! left bottom (i,j) indices of the zoom37 jpjzoom = 1 ! in data domain indices38 31 jperio = 0 ! lateral cond. type (between 0 and 6) 39 32 / … … 53 46 nn_bathy = 0 ! compute (=0) or read (=1) the bathymetry file 54 47 rn_rdt = 7200. ! time step for the dynamics 55 jphgr_msh = 5 ! type of horizontal mesh56 48 nn_msh = 1 ! create (=1) a mesh file or not (=0) 57 ppglam0 = 0.0 ! longitude of first raw and column T-point (jphgr_msh = 1)58 ppgphi0 = 29.0 ! latitude of first raw and column T-point (jphgr_msh = 1)59 ppe1_deg = 999999.0 ! zonal grid-spacing (degrees)60 ppe2_deg = 999999.0 ! meridional grid-spacing (degrees)61 ppe1_m = 999999.0 ! zonal grid-spacing (degrees)62 ppe2_m = 999999.0 ! meridional grid-spacing (degrees)63 49 ppsur = -2033.194295283385 ! ORCA r4, r2 and r05 coefficients 64 50 ppa0 = 155.8325369664153 ! (default coefficients) -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/CONFIG/GYRE_BFM/EXP00/namelist_cfg
r6595 r6596 24 24 cp_cfg = "gyre" ! name of the configuration 25 25 jp_cfg = 1 ! resolution of the configuration 26 jpidta = 32 ! 1st lateral dimension ( >= jpi ) = 30*jp_cfg+227 jpjdta = 22 ! 2nd " " ( >= jpj ) = 20*jp_cfg+228 jpkdta = 31 ! number of levels ( >= jpk )29 jpiglo = 32 ! 1st dimension of global domain --> i = jpidta30 jpjglo = 22 ! 2nd - - --> j = jpjdta31 jpizoom = 1 ! left bottom (i,j) indices of the zoom32 jpjzoom = 1 ! in data domain indices33 26 jperio = 0 ! lateral cond. type (between 0 and 6) 34 27 / … … 47 40 nn_bathy = 0 ! compute (=0) or read (=1) the bathymetry file 48 41 rn_rdt = 7200. ! time step for the dynamics 49 jphgr_msh = 5 ! type of horizontal mesh50 ppglam0 = 0.0 ! longitude of first raw and column T-point (jphgr_msh = 1)51 ppgphi0 = 29.0 ! latitude of first raw and column T-point (jphgr_msh = 1)52 ppe1_deg = 999999.0 ! zonal grid-spacing (degrees)53 ppe2_deg = 999999.0 ! meridional grid-spacing (degrees)54 ppe1_m = 999999.0 ! zonal grid-spacing (degrees)55 ppe2_m = 999999.0 ! meridional grid-spacing (degrees)56 42 ppsur = -2033.194295283385 ! ORCA r4, r2 and r05 coefficients 57 43 ppa0 = 155.8325369664153 ! (default coefficients) -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/CONFIG/GYRE_PISCES/EXP00/namelist_cfg
r6595 r6596 17 17 cp_cfg = "gyre" ! name of the configuration 18 18 jp_cfg = 1 ! resolution of the configuration 19 jpidta = 32 ! 1st lateral dimension ( >= jpi ) = 30*jp_cfg+220 jpjdta = 22 ! 2nd " " ( >= jpj ) = 20*jp_cfg+221 jpkdta = 31 ! number of levels ( >= jpk )22 jpiglo = 32 ! 1st dimension of global domain --> i = jpidta23 jpjglo = 22 ! 2nd - - --> j = jpjdta24 jpizoom = 1 ! left bottom (i,j) indices of the zoom25 jpjzoom = 1 ! in data domain indices26 19 jperio = 0 ! lateral cond. type (between 0 and 6) 27 20 / … … 37 30 nn_bathy = 0 ! compute (=0) or read (=1) the bathymetry file 38 31 rn_rdt = 7200. ! time step for the dynamics 39 jphgr_msh = 5 ! type of horizontal mesh40 ppglam0 = 0.0 ! longitude of first raw and column T-point (jphgr_msh = 1)41 ppgphi0 = 29.0 ! latitude of first raw and column T-point (jphgr_msh = 1)42 ppe1_deg = 999999.0 ! zonal grid-spacing (degrees)43 ppe2_deg = 999999.0 ! meridional grid-spacing (degrees)44 ppe1_m = 999999.0 ! zonal grid-spacing (degrees)45 ppe2_m = 999999.0 ! meridional grid-spacing (degrees)46 32 ppsur = -2033.194295283385 ! ORCA r4, r2 and r05 coefficients 47 33 ppa0 = 155.8325369664153 ! (default coefficients) -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/CONFIG/GYRE_XIOS/EXP00/namelist_cfg
r6595 r6596 17 17 cp_cfg = "gyre" ! name of the configuration 18 18 jp_cfg = 1 ! resolution of the configuration 19 jpidta = 32 ! 1st lateral dimension ( >= jpi ) = 30*jp_cfg+220 jpjdta = 22 ! 2nd " " ( >= jpj ) = 20*jp_cfg+221 jpkdta = 31 ! number of levels ( >= jpk )22 jpiglo = 32 ! 1st dimension of global domain --> i = jpidta23 jpjglo = 22 ! 2nd - - --> j = jpjdta24 jpizoom = 1 ! left bottom (i,j) indices of the zoom25 jpjzoom = 1 ! in data domain indices26 19 jperio = 0 ! lateral cond. type (between 0 and 6) 27 20 / … … 41 34 nn_bathy = 0 ! compute (=0) or read (=1) the bathymetry file 42 35 rn_rdt = 7200. ! time step for the dynamics 43 ! nn_baro = 60 ! number of barotropic time step ("key_dynspg_ts")44 jphgr_msh = 5 ! type of horizontal mesh45 ppglam0 = 0.0 ! longitude of first raw and column T-point (jphgr_msh = 1)46 ppgphi0 = 29.0 ! latitude of first raw and column T-point (jphgr_msh = 1)47 ppe1_deg = 999999.0 ! zonal grid-spacing (degrees)48 ppe2_deg = 999999.0 ! meridional grid-spacing (degrees)49 ppe1_m = 999999.0 ! zonal grid-spacing (degrees)50 ppe2_m = 999999.0 ! meridional grid-spacing (degrees)51 36 ppsur = -2033.194295283385 ! ORCA r4, r2 and r05 coefficients 52 37 ppa0 = 155.8325369664153 ! (default coefficients) -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/CONFIG/ORCA2_LIM/EXP00/1_namelist_cfg
r6595 r6596 35 35 &namdom ! space and time domain (bathymetry, mesh, timestep) 36 36 !----------------------------------------------------------------------- 37 jphgr_msh = 0 ! type of horizontal mesh38 ppglam0 = 999999.0 ! longitude of first raw and column T-point (jphgr_msh = 1)39 ppgphi0 = 999999.0 ! latitude of first raw and column T-point (jphgr_msh = 1)40 ppe1_deg = 999999.0 ! zonal grid-spacing (degrees)41 ppe2_deg = 999999.0 ! meridional grid-spacing (degrees)42 ppe1_m = 999999.0 ! zonal grid-spacing (degrees)43 ppe2_m = 999999.0 ! meridional grid-spacing (degrees)44 37 ppsur = -4762.96143546300 ! ORCA r4, r2 and r05 coefficients 45 38 ppa0 = 255.58049070440 ! (default coefficients) -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/CONFIG/ORCA2_LIM/EXP00/namelist_cfg
r6595 r6596 34 34 &namdom ! space and time domain (bathymetry, mesh, timestep) 35 35 !----------------------------------------------------------------------- 36 jphgr_msh = 0 ! type of horizontal mesh37 ppglam0 = 999999.0 ! longitude of first raw and column T-point (jphgr_msh = 1)38 ppgphi0 = 999999.0 ! latitude of first raw and column T-point (jphgr_msh = 1)39 ppe1_deg = 999999.0 ! zonal grid-spacing (degrees)40 ppe2_deg = 999999.0 ! meridional grid-spacing (degrees)41 ppe1_m = 999999.0 ! zonal grid-spacing (degrees)42 ppe2_m = 999999.0 ! meridional grid-spacing (degrees)43 36 ppsur = -4762.96143546300 ! ORCA r4, r2 and r05 coefficients 44 37 ppa0 = 255.58049070440 ! (default coefficients) -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/CONFIG/ORCA2_LIM3/EXP00/namelist_cfg
r6595 r6596 33 33 &namdom ! space and time domain (bathymetry, mesh, timestep) 34 34 !----------------------------------------------------------------------- 35 jphgr_msh = 0 ! type of horizontal mesh36 ppglam0 = 999999.0 ! longitude of first raw and column T-point (jphgr_msh = 1)37 ppgphi0 = 999999.0 ! latitude of first raw and column T-point (jphgr_msh = 1)38 ppe1_deg = 999999.0 ! zonal grid-spacing (degrees)39 ppe2_deg = 999999.0 ! meridional grid-spacing (degrees)40 ppe1_m = 999999.0 ! zonal grid-spacing (degrees)41 ppe2_m = 999999.0 ! meridional grid-spacing (degrees)42 35 ppsur = -4762.96143546300 ! ORCA r4, r2 and r05 coefficients 43 36 ppa0 = 255.58049070440 ! (default coefficients) -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/CONFIG/ORCA2_LIM_CFC_C14b/EXP00/namelist_cfg
r6595 r6596 49 49 &namdom ! space and time domain (bathymetry, mesh, timestep) 50 50 !----------------------------------------------------------------------- 51 jphgr_msh = 0 ! type of horizontal mesh52 ppglam0 = 999999.0 ! longitude of first raw and column T-point (jphgr_msh = 1)53 ppgphi0 = 999999.0 ! latitude of first raw and column T-point (jphgr_msh = 1)54 ppe1_deg = 999999.0 ! zonal grid-spacing (degrees)55 ppe2_deg = 999999.0 ! meridional grid-spacing (degrees)56 ppe1_m = 999999.0 ! zonal grid-spacing (degrees)57 ppe2_m = 999999.0 ! meridional grid-spacing (degrees)58 51 ppsur = -4762.96143546300 ! ORCA r4, r2 and r05 coefficients 59 52 ppa0 = 255.58049070440 ! (default coefficients) -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/CONFIG/ORCA2_LIM_PISCES/EXP00/namelist_cfg
r6595 r6596 30 30 &namdom ! space and time domain (bathymetry, mesh, timestep) 31 31 !----------------------------------------------------------------------- 32 jphgr_msh = 0 ! type of horizontal mesh33 ppglam0 = 999999.0 ! longitude of first raw and column T-point (jphgr_msh = 1)34 ppgphi0 = 999999.0 ! latitude of first raw and column T-point (jphgr_msh = 1)35 ppe1_deg = 999999.0 ! zonal grid-spacing (degrees)36 ppe2_deg = 999999.0 ! meridional grid-spacing (degrees)37 ppe1_m = 999999.0 ! zonal grid-spacing (degrees)38 ppe2_m = 999999.0 ! meridional grid-spacing (degrees)39 32 ppsur = -4762.96143546300 ! ORCA r4, r2 and r05 coefficients 40 33 ppa0 = 255.58049070440 ! (default coefficients) -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/CONFIG/ORCA2_OFF_PISCES/EXP00/namelist_cfg
r6595 r6596 35 35 nn_msh = 1 ! create (=1) a mesh file or not (=0) 36 36 rn_rdt = 21600. ! time step for the dynamics 37 jphgr_msh = 0 ! type of horizontal mesh 38 ppglam0 = 999999.0 ! longitude of first raw and column T-point (jphgr_msh = 1) 39 ppgphi0 = 999999.0 ! latitude of first raw and column T-point (jphgr_msh = 1) 40 ppe1_deg = 999999.0 ! zonal grid-spacing (degrees) 41 ppe2_deg = 999999.0 ! meridional grid-spacing (degrees) 42 ppe1_m = 999999.0 ! zonal grid-spacing (degrees) 43 ppe2_m = 999999.0 ! meridional grid-spacing (degrees) 37 ! 44 38 ppsur = -4762.96143546300 ! ORCA r4, r2 and r05 coefficients 45 39 ppa0 = 255.58049070440 ! (default coefficients) -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/CONFIG/ORCA2_SAS_LIM/EXP00/namelist_cfg
r6595 r6596 32 32 &namdom ! space and time domain (bathymetry, mesh, timestep) 33 33 !----------------------------------------------------------------------- 34 jphgr_msh = 0 ! type of horizontal mesh35 ppglam0 = 999999.0 ! longitude of first raw and column T-point (jphgr_msh = 1)36 ppgphi0 = 999999.0 ! latitude of first raw and column T-point (jphgr_msh = 1)37 ppe1_deg = 999999.0 ! zonal grid-spacing (degrees)38 ppe2_deg = 999999.0 ! meridional grid-spacing (degrees)39 ppe1_m = 999999.0 ! zonal grid-spacing (degrees)40 ppe2_m = 999999.0 ! meridional grid-spacing (degrees)41 34 ppsur = -4762.96143546300 ! ORCA r4, r2 and r05 coefficients 42 35 ppa0 = 255.58049070440 ! (default coefficients) -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/CONFIG/SHARED/namelist_ref
r6595 r6596 77 77 cp_cfz = "no zoom" ! name of the zoom of configuration 78 78 jp_cfg = 0 ! resolution of the configuration 79 jpidta = 10 ! 1st lateral dimension ( >= jpi )80 jpjdta = 12 ! 2nd " " ( >= jpj )81 jpkdta = 31 ! number of levels ( >= jpk )82 jpiglo = 10 ! 1st dimension of global domain --> i =jpidta83 jpjglo = 12 ! 2nd - - --> j =jpjdta84 jpizoom = 1 ! left bottom (i,j) indices of the zoom85 jpjzoom = 1 ! in data domain indices86 79 jperio = 0 ! lateral cond. type (between 0 and 6) 87 80 ! = 0 closed ; = 1 cyclic East-West … … 141 134 rn_rdt = 5760. ! time step for the dynamics (and tracer if nn_acc=0) 142 135 rn_atfp = 0.1 ! asselin time filter parameter 143 ln_crs = .false. ! Logical switch for coarsening module 144 jphgr_msh = 0 ! type of horizontal mesh 145 ! = 0 curvilinear coordinate on the sphere read in coordinate.nc 146 ! = 1 geographical mesh on the sphere with regular grid-spacing 147 ! = 2 f-plane with regular grid-spacing 148 ! = 3 beta-plane with regular grid-spacing 149 ! = 4 Mercator grid with T/U point at the equator 150 ppglam0 = 0.0 ! longitude of first raw and column T-point (jphgr_msh = 1) 151 ppgphi0 = -35.0 ! latitude of first raw and column T-point (jphgr_msh = 1) 152 ppe1_deg = 1.0 ! zonal grid-spacing (degrees) 153 ppe2_deg = 0.5 ! meridional grid-spacing (degrees) 154 ppe1_m = 5000.0 ! zonal grid-spacing (degrees) 155 ppe2_m = 5000.0 ! meridional grid-spacing (degrees) 136 ln_crs = .false. ! Logical switch for coarsening module 137 ! 156 138 ppsur = -4762.96143546300 ! ORCA r4, r2 and r05 coefficients 157 139 ppa0 = 255.58049070440 ! (default coefficients) -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/LIM_SRC_2/dom_ice_2.F90
r3764 r6596 27 27 ! ! (otherwise = jpj+10 (SH) or -10 (SH) ) 28 28 29 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: fs2cor , fcor !: coriolis factor and coeficient30 29 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: covrai !: sine of geographic latitude 31 30 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: area !: surface of grid cell … … 48 47 ierr(:) = 0 49 48 ! 50 ALLOCATE( fs2cor(jpi,jpj) , fcor(jpi,jpj) , & 51 & covrai(jpi,jpj) , area(jpi,jpj) , tms(jpi,jpj) , tmu(jpi,jpj) , & 49 ALLOCATE( covrai(jpi,jpj) , area(jpi,jpj) , tms(jpi,jpj) , tmu(jpi,jpj) , & 52 50 & wght (jpi,jpj,2,2) , STAT=ierr(1) ) 53 51 ! -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/LIM_SRC_2/limistate_2.F90
r5541 r6596 79 79 ENDIF 80 80 ! 81 IF( f cor(ji,jj) >= 0.e0) THEN !-- Northern hemisphere.81 IF( ff_t(ji,jj) >= 0._wp ) THEN !-- Northern hemisphere. 82 82 hicif(ji,jj) = zidto * hginn 83 83 frld(ji,jj) = zidto * alinn + ( 1.0 - zidto ) * 1.0 -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/LIM_SRC_2/limmsh_2.F90
r3625 r6596 70 70 ENDIF 71 71 72 IF( jphgr_msh == 2 .OR. jphgr_msh == 3 .OR. jphgr_msh == 5 ) &73 & CALL ctl_stop(' Coriolis parameter in LIM not set for f- or beta-plane' )74 75 72 !---------------------------------------------------------- 76 73 ! Initialization of local and some global (common) variables … … 79 76 njeq = INT( jpj / 2 ) !i bug mpp potentiel 80 77 njeqm1 = njeq - 1 81 82 fcor(:,:) = 2. * omega * SIN( gphit(:,:) * rad ) ! coriolis factor at T-point83 78 84 79 !i DO jj = 1, jpj … … 87 82 !i END DO 88 83 89 IF( f cor(1,1) * fcor(1,nlcj) < 0.e0 ) THEN ! local domain include both hemisphere84 IF( ff_t(1,1) * ff_t(1,nlcj) < 0.e0 ) THEN ! local domain include both hemisphere 90 85 l_jeq = .TRUE. 91 86 njeq = 1 92 DO WHILE ( njeq <= jpj .AND. f cor(1,njeq) < 0.e0 )87 DO WHILE ( njeq <= jpj .AND. ff_t(1,njeq) < 0.e0 ) 93 88 njeq = njeq + 1 94 89 END DO 95 90 IF(lwp ) WRITE(numout,*) ' the equator is inside the domain at about njeq = ', njeq 96 ELSEIF( f cor(1,1) < 0.e0 ) THEN91 ELSEIF( ff_t(1,1) < 0.e0 ) THEN 97 92 l_jeq = .FALSE. 98 93 njeq = jpj -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/LIM_SRC_2/limrhg_2.F90
r5836 r6596 163 163 DO ji = 1 , jpi 164 164 ! only the sinus changes its sign with the hemisphere 165 zsang(ji,jj) = SIGN( 1._wp, f cor(ji,jj) ) * sangvg ! only the sinus changes its sign with the hemisphere165 zsang(ji,jj) = SIGN( 1._wp, ff_t(ji,jj) ) * sangvg ! only the sinus changes its sign with the hemisphere 166 166 ! 167 167 zmasst(ji,jj) = tms(ji,jj) * ( rhosn * hsnm(ji,jj) + rhoic * hicm(ji,jj) ) … … 198 198 & + zmasst(ji,jj-1) * wght(ji,jj,2,1) + zmasst(ji-1,jj-1) * wght(ji,jj,1,1) ) * zusw 199 199 zcorl(ji,jj) = zmass(ji,jj) & 200 & *( f cor(ji,jj ) * wght(ji,jj,2,2) + fcor(ji-1,jj )*wght(ji,jj,1,2) &201 & + f cor(ji,jj-1) * wght(ji,jj,2,1) + fcor(ji-1,jj-1)*wght(ji,jj,1,1) ) * zusw200 & *( ff_t(ji,jj ) * wght(ji,jj,2,2) + ff_t(ji-1,jj )*wght(ji,jj,1,2) & 201 & + ff_t(ji,jj-1) * wght(ji,jj,2,1) + ff_t(ji-1,jj-1)*wght(ji,jj,1,1) ) * zusw 202 202 203 203 ! Wind stress. -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/LIM_SRC_2/limthd_2.F90
r6140 r6596 347 347 ! Tricky trick : add 2 to frld in the Southern Hemisphere 348 348 !-------------------------------------------------------- 349 IF( f cor(1,1) < 0.e0) THEN349 IF( ff_t(1,1) < 0._wp ) THEN 350 350 DO jj = 1, njeqm1 351 351 DO ji = 1, jpi -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/LIM_SRC_2/limtrp_2.F90
r4624 r6596 234 234 !-------------------------------------------------------------------! 235 235 DO jj = 1, jpj 236 zindhe = MAX( 0. e0, SIGN( 1.e0, fcor(1,jj) ) ) ! = 0 for SH, =1 for NH236 zindhe = MAX( 0._wp, SIGN( 1._wp, ff_t(1,jj) ) ) ! = 0 for SH, =1 for NH 237 237 DO ji = 1, jpi 238 238 ! -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/LIM_SRC_3/dom_ice.F90
r5123 r6596 20 20 INTEGER, PUBLIC :: njeq , njeqm1 !: j-index of the equator if it is inside the domain 21 21 22 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: fcor !: coriolis coefficient23 22 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: wght !: weight of the 4 neighbours to compute averages 24 23 … … 37 36 !!------------------------------------------------------------------- 38 37 ! 39 ALLOCATE( fcor(jpi,jpj),wght(jpi,jpj,2,2), STAT = dom_ice_alloc )38 ALLOCATE( wght(jpi,jpj,2,2), STAT = dom_ice_alloc ) 40 39 ! 41 40 IF( dom_ice_alloc /= 0 ) CALL ctl_warn( 'dom_ice_alloc: failed to allocate arrays.' ) -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/LIM_SRC_3/limistate.F90
r6140 r6596 168 168 DO jj = 1, jpj 169 169 DO ji = 1, jpi 170 IF( f cor(ji,jj) >= 0._wp ) THEN170 IF( ff_t(ji,jj) >= 0._wp ) THEN 171 171 zht_i_ini(ji,jj) = rn_hti_ini_n 172 172 zht_s_ini(ji,jj) = rn_hts_ini_n -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/LIM_SRC_3/limmsh.F90
r5123 r6596 54 54 ENDIF 55 55 56 IF( jphgr_msh == 2 .OR. jphgr_msh == 3 .OR. jphgr_msh == 5 ) & 57 & CALL ctl_stop(' Coriolis parameter in LIM not set for f- or beta-plane') 58 59 ! !== coriolis factor & Equator position ==! 56 ! !== Equator position ==! 60 57 njeq = INT( jpj / 2 ) 61 58 njeqm1 = njeq - 1 62 59 ! 63 fcor(:,:) = 2. * omega * SIN( gphit(:,:) * rad ) ! coriolis factor 64 ! 65 IF( fcor(1,1) * fcor(1,nlcj) < 0.e0 ) THEN ! local domain include both hemisphere 60 IF( ff_t(1,1) * ff_t(1,nlcj) < 0._wp ) THEN ! local domain include both hemisphere 66 61 l_jeq = .TRUE. 67 62 njeq = 1 68 DO WHILE ( njeq <= jpj .AND. f cor(1,njeq) < 0.e0)63 DO WHILE ( njeq <= jpj .AND. ff_t(1,njeq) < 0._wp ) 69 64 njeq = njeq + 1 70 65 END DO 71 66 IF(lwp ) WRITE(numout,*) ' the equator is inside the domain at about njeq = ', njeq 72 ELSEIF( f cor(1,1) < 0.e0) THEN67 ELSEIF( ff_t(1,1) < 0._wp ) THEN 73 68 l_jeq = .FALSE. 74 69 njeq = jpj … … 84 79 85 80 ! !== metric coefficients for sea ice dynamic ==! 86 wght(:,:,:,:) = 0. e081 wght(:,:,:,:) = 0._wp 87 82 !!gm Optimisation : wght to be defined at F-point, not I-point and change in limrhg 88 83 DO jj = 2, jpj 89 84 DO ji = 2, jpi 90 zusden = 1. e0/ ( ( e1t(ji,jj) + e1t(ji-1,jj ) ) &91 & * ( e2t(ji,jj) + e2t(ji ,jj-1) ) )85 zusden = 1._wp / ( ( e1t(ji,jj) + e1t(ji-1,jj ) ) & 86 & * ( e2t(ji,jj) + e2t(ji ,jj-1) ) ) 92 87 wght(ji,jj,1,1) = zusden * e1t(ji ,jj) * e2t(ji,jj ) 93 88 wght(ji,jj,1,2) = zusden * e1t(ji ,jj) * e2t(ji,jj-1) -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/LIM_SRC_3/limrhg.F90
r5836 r6596 267 267 zmass1(ji,jj) = ( zt12 * zc1 + zt11 * zc2 ) / ( zt11 + zt12 + zepsi ) 268 268 zmass2(ji,jj) = ( zt22 * zc1 + zt21 * zc3 ) / ( zt21 + zt22 + zepsi ) 269 zcorl1(ji,jj) = zmass1(ji,jj) * ( e1t(ji+1,jj) * f cor(ji,jj) + e1t(ji,jj) * fcor(ji+1,jj) ) &269 zcorl1(ji,jj) = zmass1(ji,jj) * ( e1t(ji+1,jj) * ff_t(ji,jj) + e1t(ji,jj) * ff_t(ji+1,jj) ) & 270 270 & / ( e1t(ji,jj) + e1t(ji+1,jj) + zepsi ) 271 zcorl2(ji,jj) = zmass2(ji,jj) * ( e2t(ji,jj+1) * f cor(ji,jj) + e2t(ji,jj) * fcor(ji,jj+1) ) &271 zcorl2(ji,jj) = zmass2(ji,jj) * ( e2t(ji,jj+1) * ff_t(ji,jj) + e2t(ji,jj) * ff_t(ji,jj+1) ) & 272 272 & / ( e2t(ji,jj+1) + e2t(ji,jj) + zepsi ) 273 273 ! -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/NST_SRC/agrif_user.F90
r6140 r6596 41 41 jpidta = jpiglo 42 42 jpjdta = jpjglo 43 jpizoom = 144 jpjzoom = 145 43 nperio = 0 46 44 jperio = 0 -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/OFF_SRC/domrea.F90
r6140 r6596 118 118 & nn_write, ln_iscpl , ln_mskland , ln_cfmeta , ln_clobber, nn_chunksz, nn_euler 119 119 NAMELIST/namdom/ nn_bathy , rn_bathy , rn_e3zps_min, rn_e3zps_rat , nn_msh , rn_hmin , rn_isfhmin,& 120 & rn_atfp , rn_rdt , nn_baro , nn_closea , ln_crs , jphgr_msh, & 121 & ppglam0, ppgphi0, ppe1_deg, ppe2_deg, ppe1_m, ppe2_m, & 120 & rn_atfp , rn_rdt , nn_baro , nn_closea , ln_crs , & 122 121 & ppsur, ppa0, ppa1, ppkth, ppacr, ppdzmin, pphmax, ldbletanh, & 123 122 & ppa2, ppkth2, ppacr2 … … 229 228 WRITE(numout,*) ' time-splitting: nb of sub time-step nn_baro = ', nn_baro 230 229 WRITE(numout,*) ' suppression of closed seas (=0) nn_closea = ', nn_closea 231 WRITE(numout,*) ' type of horizontal mesh jphgr_msh = ', jphgr_msh 232 WRITE(numout,*) ' longitude of first raw and column T-point ppglam0 = ', ppglam0 233 WRITE(numout,*) ' latitude of first raw and column T-point ppgphi0 = ', ppgphi0 234 WRITE(numout,*) ' zonal grid-spacing (degrees) ppe1_deg = ', ppe1_deg 235 WRITE(numout,*) ' meridional grid-spacing (degrees) ppe2_deg = ', ppe2_deg 236 WRITE(numout,*) ' zonal grid-spacing (degrees) ppe1_m = ', ppe1_m 237 WRITE(numout,*) ' meridional grid-spacing (degrees) ppe2_m = ', ppe2_m 230 238 231 WRITE(numout,*) ' ORCA r4, r2 and r05 coefficients ppsur = ', ppsur 239 232 WRITE(numout,*) ' ppa0 = ', ppa0 -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/OFF_SRC/nemogcm.F90
r6140 r6596 155 155 & nn_bench, nn_timing, nn_diacfl 156 156 NAMELIST/namcfg/ cp_cfg, cp_cfz, jp_cfg, jpidta, jpjdta, jpkdta, jpiglo, jpjglo, & 157 & jp izoom, jpjzoom, jperio, ln_use_jattr157 & jperio, ln_use_jattr 158 158 !!---------------------------------------------------------------------- 159 159 cltxt = '' … … 351 351 WRITE(numout,*) ' configuration name cp_cfg = ', TRIM(cp_cfg) 352 352 WRITE(numout,*) ' configuration resolution jp_cfg = ', jp_cfg 353 WRITE(numout,*) ' 1st lateral dimension ( >= jpi ) jpidta = ', jpidta354 WRITE(numout,*) ' 2nd " " ( >= jpj ) jpjdta = ', jpjdta355 WRITE(numout,*) ' 3nd " " jpkdta = ', jpkdta356 WRITE(numout,*) ' 1st dimension of global domain in i jpiglo = ', jpiglo357 WRITE(numout,*) ' 2nd - - in j jpjglo = ', jpjglo358 WRITE(numout,*) ' left bottom i index of the zoom (in data domain) jpizoom = ', jpizoom359 WRITE(numout,*) ' left bottom j index of the zoom (in data domain) jpizoom = ', jpjzoom360 353 WRITE(numout,*) ' lateral cond. type (between 0 and 6) jperio = ', jperio 361 354 WRITE(numout,*) ' use file attribute if exists as i/p j-start ln_use_jattr = ', ln_use_jattr … … 400 393 ENDIF 401 394 ! 402 IF( nbench == 1 ) THEN ! Benchmark403 SELECT CASE ( cp_cfg )404 CASE ( 'gyre' ) ; CALL ctl_warn( ' The Benchmark is activated ' )405 CASE DEFAULT ; CALL ctl_stop( ' The Benchmark is based on the GYRE configuration:', &406 & ' cp_cfg="gyre" in namelsit &namcfg or set nbench = 0' )407 END SELECT408 ENDIF409 !410 395 IF( lk_c1d .AND. .NOT.lk_iomput ) CALL ctl_stop( 'nemo_ctl: The 1D configuration must be used ', & 411 396 & 'with the IOM Input/Output manager. ' , & -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/OPA_SRC/BDY/bdyini.F90
r6140 r6596 769 769 ! is = mjg(1) + 1 ! if monotasking and no zoom, is=2 770 770 ! in = mjg(1) + nlcj-1 - 1 ! if monotasking and no zoom, in=jpjm1 771 iwe = mig(1) - jpizoom+ 2 ! if monotasking and no zoom, iw=2772 ies = mig(1) + nlci - jpizoom- 1 ! if monotasking and no zoom, ie=jpim1773 iso = mjg(1) - jpjzoom+ 2 ! if monotasking and no zoom, is=2774 ino = mjg(1) + nlcj - jpjzoom- 1 ! if monotasking and no zoom, in=jpjm1771 iwe = mig(1) - 1 + 2 ! if monotasking and no zoom, iw=2 772 ies = mig(1) + nlci-1 - 1 ! if monotasking and no zoom, ie=jpim1 773 iso = mjg(1) - 1 + 2 ! if monotasking and no zoom, is=2 774 ino = mjg(1) + nlcj-1 - 1 ! if monotasking and no zoom, in=jpjm1 775 775 776 776 ALLOCATE( nbondi_bdy(nb_bdy)) … … 785 785 ! Work out dimensions of boundary data on each neighbour process 786 786 IF(nbondi == 0) THEN 787 iw_b(1) = jpizoom+ nimppt(nowe+1)788 ie_b(1) = jpizoom+ nimppt(nowe+1)+nlcit(nowe+1)-3789 is_b(1) = jpjzoom+ njmppt(nowe+1)790 in_b(1) = jpjzoom+ njmppt(nowe+1)+nlcjt(nowe+1)-3791 792 iw_b(2) = jpizoom+ nimppt(noea+1)793 ie_b(2) = jpizoom+ nimppt(noea+1)+nlcit(noea+1)-3794 is_b(2) = jpjzoom+ njmppt(noea+1)795 in_b(2) = jpjzoom+ njmppt(noea+1)+nlcjt(noea+1)-3787 iw_b(1) = 1 + nimppt(nowe+1) 788 ie_b(1) = 1 + nimppt(nowe+1)+nlcit(nowe+1)-3 789 is_b(1) = 1 + njmppt(nowe+1) 790 in_b(1) = 1 + njmppt(nowe+1)+nlcjt(nowe+1)-3 791 792 iw_b(2) = 1 + nimppt(noea+1) 793 ie_b(2) = 1 + nimppt(noea+1)+nlcit(noea+1)-3 794 is_b(2) = 1 + njmppt(noea+1) 795 in_b(2) = 1 + njmppt(noea+1)+nlcjt(noea+1)-3 796 796 ELSEIF(nbondi == 1) THEN 797 iw_b(1) = jpizoom+ nimppt(nowe+1)798 ie_b(1) = jpizoom+ nimppt(nowe+1)+nlcit(nowe+1)-3799 is_b(1) = jpjzoom+ njmppt(nowe+1)800 in_b(1) = jpjzoom+ njmppt(nowe+1)+nlcjt(nowe+1)-3797 iw_b(1) = 1 + nimppt(nowe+1) 798 ie_b(1) = 1 + nimppt(nowe+1)+nlcit(nowe+1)-3 799 is_b(1) = 1 + njmppt(nowe+1) 800 in_b(1) = 1 + njmppt(nowe+1)+nlcjt(nowe+1)-3 801 801 ELSEIF(nbondi == -1) THEN 802 iw_b(2) = jpizoom+ nimppt(noea+1)803 ie_b(2) = jpizoom+ nimppt(noea+1)+nlcit(noea+1)-3804 is_b(2) = jpjzoom+ njmppt(noea+1)805 in_b(2) = jpjzoom+ njmppt(noea+1)+nlcjt(noea+1)-3802 iw_b(2) = 1 + nimppt(noea+1) 803 ie_b(2) = 1 + nimppt(noea+1)+nlcit(noea+1)-3 804 is_b(2) = 1 + njmppt(noea+1) 805 in_b(2) = 1 + njmppt(noea+1)+nlcjt(noea+1)-3 806 806 ENDIF 807 807 808 808 IF(nbondj == 0) THEN 809 iw_b(3) = jpizoom+ nimppt(noso+1)810 ie_b(3) = jpizoom+ nimppt(noso+1)+nlcit(noso+1)-3811 is_b(3) = jpjzoom+ njmppt(noso+1)812 in_b(3) = jpjzoom+ njmppt(noso+1)+nlcjt(noso+1)-3813 814 iw_b(4) = jpizoom+ nimppt(nono+1)815 ie_b(4) = jpizoom+ nimppt(nono+1)+nlcit(nono+1)-3816 is_b(4) = jpjzoom+ njmppt(nono+1)817 in_b(4) = jpjzoom+ njmppt(nono+1)+nlcjt(nono+1)-3809 iw_b(3) = 1 + nimppt(noso+1) 810 ie_b(3) = 1 + nimppt(noso+1)+nlcit(noso+1)-3 811 is_b(3) = 1 + njmppt(noso+1) 812 in_b(3) = 1 + njmppt(noso+1)+nlcjt(noso+1)-3 813 814 iw_b(4) = 1 + nimppt(nono+1) 815 ie_b(4) = 1 + nimppt(nono+1)+nlcit(nono+1)-3 816 is_b(4) = 1 + njmppt(nono+1) 817 in_b(4) = 1 + njmppt(nono+1)+nlcjt(nono+1)-3 818 818 ELSEIF(nbondj == 1) THEN 819 iw_b(3) = jpizoom+ nimppt(noso+1)820 ie_b(3) = jpizoom+ nimppt(noso+1)+nlcit(noso+1)-3821 is_b(3) = jpjzoom+ njmppt(noso+1)822 in_b(3) = jpjzoom+ njmppt(noso+1)+nlcjt(noso+1)-3819 iw_b(3) = 1 + nimppt(noso+1) 820 ie_b(3) = 1 + nimppt(noso+1)+nlcit(noso+1)-3 821 is_b(3) = 1 + njmppt(noso+1) 822 in_b(3) = 1 + njmppt(noso+1)+nlcjt(noso+1)-3 823 823 ELSEIF(nbondj == -1) THEN 824 iw_b(4) = jpizoom+ nimppt(nono+1)825 ie_b(4) = jpizoom+ nimppt(nono+1)+nlcit(nono+1)-3826 is_b(4) = jpjzoom+ njmppt(nono+1)827 in_b(4) = jpjzoom+ njmppt(nono+1)+nlcjt(nono+1)-3824 iw_b(4) = 1 + nimppt(nono+1) 825 ie_b(4) = 1 + nimppt(nono+1)+nlcit(nono+1)-3 826 is_b(4) = 1 + njmppt(nono+1) 827 in_b(4) = 1 + njmppt(nono+1)+nlcjt(nono+1)-3 828 828 ENDIF 829 829 … … 899 899 ! idx_bdy(ib_bdy)%nbi(icount,igrd) = nbidta(ib,igrd,ib_bdy)- mig(1)+1 900 900 ! idx_bdy(ib_bdy)%nbj(icount,igrd) = nbjdta(ib,igrd,ib_bdy)- mjg(1)+1 901 idx_bdy(ib_bdy)%nbi(icount,igrd) = nbidta(ib,igrd,ib_bdy)- mig(1)+ jpizoom902 idx_bdy(ib_bdy)%nbj(icount,igrd) = nbjdta(ib,igrd,ib_bdy)- mjg(1)+ jpjzoom901 idx_bdy(ib_bdy)%nbi(icount,igrd) = nbidta(ib,igrd,ib_bdy)- mig(1)+1 902 idx_bdy(ib_bdy)%nbj(icount,igrd) = nbjdta(ib,igrd,ib_bdy)- mjg(1)+1 903 903 ! check if point has to be sent 904 904 ii = idx_bdy(ib_bdy)%nbi(icount,igrd) -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/OPA_SRC/C1D/domc1d.F90
r6140 r6596 24 24 25 25 PUBLIC dom_c1d ! called in domcfg.F90 26 27 INTEGER :: jpizoom = 1 !: left bottom (i,j) indices of the zoom 28 INTEGER :: jpjzoom = 1 !: in data domain indices 26 29 27 30 !!---------------------------------------------------------------------- -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/OPA_SRC/C1D/dyncor_c1d.F90
r6140 r6596 49 49 IF(lwp) WRITE(numout,*) '~~~~~~~' 50 50 51 SELECT CASE( jphgr_msh ) ! type of horizontal mesh52 !53 CASE ( 0, 1, 4 ) ! mesh on the sphere54 ff(:,:) = 2. * omega * SIN( rad * gphit(:,:) )55 !56 CASE ( 2 ) ! f-plane at ppgphi057 ff(:,:) = 2. * omega * SIN( rad * ppgphi0 )58 IF(lwp) WRITE(numout,*) ' f-plane: Coriolis parameter = constant = ', ff(1,1)59 !60 CASE ( 3 ) ! beta-plane61 zbeta = 2. * omega * COS( rad * ppgphi0 ) / ra ! beta at latitude ppgphi062 zphi0 = ppgphi0 - FLOAT( jpjglo/2) * ppe2_m *1.e-3 / ( ra * rad ) ! latitude of the first row F-points63 zf0 = 2. * omega * SIN( rad * zphi0 ) ! compute f0 1st point south64 ff(:,:) = ( zf0 + zbeta * gphit(:,:) * 1.e+3 ) ! f = f0 +beta* y ( y=0 at south)65 IF(lwp) WRITE(numout,*) ' Beta-plane: Beta parameter = constant = ', ff(1,1)66 IF(lwp) WRITE(numout,*) ' Coriolis parameter varies from ', ff(1,1),' to ', ff(1,jpj)67 !68 CASE ( 5 ) ! beta-plane and rotated domain69 zbeta = 2. * omega * COS( rad * ppgphi0 ) / ra ! beta at latitude ppgphi070 zphi0 = 15.e0 ! latitude of the first row F-points71 zf0 = 2. * omega * SIN( rad * zphi0 ) ! compute f0 1st point south72 ff(:,:) = ( zf0 + zbeta * ABS( gphit(:,:) - zphi0 ) * rad * ra ) ! f = f0 +beta* y ( y=0 at south)73 IF(lwp) WRITE(numout,*) ' Beta-plane: Beta parameter = constant = ', ff(1,1)74 IF(lwp) WRITE(numout,*) ' Coriolis parameter varies from ', ff(1,1),' to ', ff(1,jpj)75 !76 END SELECT77 51 ! 78 52 END SUBROUTINE cor_c1d … … 100 74 DO jj = 2, jpjm1 101 75 DO ji = fs_2, fs_jpim1 ! vector opt. 102 ua(ji,jj,jk) = ua(ji,jj,jk) + ff (ji,jj) * vn(ji,jj,jk)103 va(ji,jj,jk) = va(ji,jj,jk) - ff (ji,jj) * un(ji,jj,jk)76 ua(ji,jj,jk) = ua(ji,jj,jk) + ff_t(ji,jj) * vn(ji,jj,jk) 77 va(ji,jj,jk) = va(ji,jj,jk) - ff_t(ji,jj) * un(ji,jj,jk) 104 78 END DO 105 79 END DO -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/OPA_SRC/CRS/crsdom.F90
r6140 r6596 2023 2023 nimpp_crs = nimppt_crs(nproc + 1) 2024 2024 2025 ! No coarsening with zoom2026 IF( jpizoom /= 1 .OR. jpjzoom /= 1) STOP2027 2028 2025 DO ji = 1, jpi_crs 2029 2026 mig_crs(ji) = ji + nimpp_crs - 1 -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/OPA_SRC/CRS/crsini.F90
r6140 r6596 11 11 !!---------------------------------------------------------------------- 12 12 USE par_kind, ONLY: wp 13 USE par_oce ! For parameter jpi,jpj ,jphgr_msh13 USE par_oce ! For parameter jpi,jpj 14 14 USE dom_oce ! For parameters in par_oce 15 15 USE crs ! Coarse grid domain … … 170 170 ! 3.c.2 Coriolis factor 171 171 172 SELECT CASE( jphgr_msh ) ! type of horizontal mesh 173 174 CASE ( 0, 1, 4 ) ! mesh on the sphere 175 176 ff_crs(:,:) = 2. * omega * SIN( rad * gphif_crs(:,:) ) 177 178 CASE DEFAULT 179 180 IF(lwp) WRITE(numout,*) 'crsini.F90. crs_init. Only jphgr_msh = 0, 1 or 4 supported' 172 !!gm Not sure CRS needs Coriolis parameter.... 173 !!gm If needed, then update this to have Coriolis at both f- and t-points 174 175 ff_crs(:,:) = 2. * omega * SIN( rad * gphif_crs(:,:) ) 176 177 CALL ctl_warn( 'crsini: CAUTION, CRS only designed for Coriolis defined on the sphere' ) 181 178 182 END SELECT183 179 184 180 ! 3.d.1 mbathy ( vertical k-levels of bathymetry ) -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/OPA_SRC/DIA/diadct.F90
r6140 r6596 424 424 IF( iiglo==jpidta .AND. nimpp==1 ) iiglo = 2 425 425 426 iiloc=iiglo- jpizoom+1-nimpp+1 ! local coordinates of the point427 ijloc=ijglo- jpjzoom+1-njmpp+1 ! "426 iiloc=iiglo-nimpp+1 ! local coordinates of the point 427 ijloc=ijglo-njmpp+1 ! " 428 428 429 429 !verify if the point is on the local domain:(1,nlei)*(1,nlej) … … 444 444 WRITE(numout,*)" List of points selected by the proc:" 445 445 DO jpt = 1,iptloc 446 iiglo = secs(jsec)%listPoint(jpt)%I + jpizoom - 1 +nimpp - 1447 ijglo = secs(jsec)%listPoint(jpt)%J + jpjzoom - 1 +njmpp - 1446 iiglo = secs(jsec)%listPoint(jpt)%I + nimpp - 1 447 ijglo = secs(jsec)%listPoint(jpt)%J + njmpp - 1 448 448 WRITE(numout,*)' # I J : ',iiglo,ijglo 449 449 ENDDO … … 452 452 IF(jsec==nn_secdebug .AND. secs(jsec)%nb_point .NE. 0)THEN 453 453 DO jpt = 1,iptloc 454 iiglo = secs(jsec)%listPoint(jpt)%I + jpizoom - 1 +nimpp - 1455 ijglo = secs(jsec)%listPoint(jpt)%J + jpjzoom - 1 +njmpp - 1454 iiglo = secs(jsec)%listPoint(jpt)%I + nimpp - 1 455 ijglo = secs(jsec)%listPoint(jpt)%J + njmpp - 1 456 456 ENDDO 457 457 ENDIF … … 468 468 IF(jsec==nn_secdebug .AND. secs(jsec)%nb_point .NE. 0)THEN 469 469 DO jpt = 1,secs(jsec)%nb_point 470 iiglo = secs(jsec)%listPoint(jpt)%I + jpizoom - 1 +nimpp - 1471 ijglo = secs(jsec)%listPoint(jpt)%J + jpjzoom - 1 +njmpp - 1470 iiglo = secs(jsec)%listPoint(jpt)%I + nimpp - 1 471 ijglo = secs(jsec)%listPoint(jpt)%J + njmpp - 1 472 472 ENDDO 473 473 ENDIF … … 479 479 iptloc = secs(jsec)%nb_point 480 480 DO jpt = 1,iptloc 481 iiglo = secs(jsec)%listPoint(jpt)%I + jpizoom - 1 +nimpp - 1482 ijglo = secs(jsec)%listPoint(jpt)%J + jpjzoom - 1 +njmpp - 1481 iiglo = secs(jsec)%listPoint(jpt)%I + nimpp - 1 482 ijglo = secs(jsec)%listPoint(jpt)%J + njmpp - 1 483 483 WRITE(numout,*)' # I J : ',iiglo,ijglo 484 484 CALL FLUSH(numout) -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/OPA_SRC/DOM/dom_oce.F90
r6140 r6596 57 57 INTEGER, PUBLIC :: nn_baro !: Number of barotropic iterations during one baroclinic step (rdt) 58 58 REAL(wp), PUBLIC :: rn_bt_cmax !: Maximum allowed courant number (used if ln_bt_auto=T) 59 60 !! Horizontal grid parameters for domhgr61 !! =====================================62 INTEGER :: jphgr_msh !: type of horizontal mesh63 ! ! = 0 curvilinear coordinate on the sphere read in coordinate.nc64 ! ! = 1 geographical mesh on the sphere with regular grid-spacing65 ! ! = 2 f-plane with regular grid-spacing66 ! ! = 3 beta-plane with regular grid-spacing67 ! ! = 4 Mercator grid with T/U point at the equator68 69 REAL(wp) :: ppglam0 !: longitude of first raw and column T-point (jphgr_msh = 1)70 REAL(wp) :: ppgphi0 !: latitude of first raw and column T-point (jphgr_msh = 1)71 ! ! used for Coriolis & Beta parameters (jphgr_msh = 2 or 3)72 REAL(wp) :: ppe1_deg !: zonal grid-spacing (degrees)73 REAL(wp) :: ppe2_deg !: meridional grid-spacing (degrees)74 REAL(wp) :: ppe1_m !: zonal grid-spacing (degrees)75 REAL(wp) :: ppe2_m !: meridional grid-spacing (degrees)76 59 77 60 !! Vertical grid parameter for domzgr … … 102 85 103 86 ! !!! associated variables 104 INTEGER , PUBLIC 105 REAL(wp), PUBLIC 106 REAL(wp), PUBLIC 87 INTEGER , PUBLIC :: neuler !: restart euler forward option (0=Euler) 88 REAL(wp), PUBLIC :: atfp1 !: asselin time filter coeff. (atfp1= 1-2*atfp) 89 REAL(wp), PUBLIC :: r2dt !: = 2*rdt except at nit000 (=rdt) if neuler=0 107 90 108 91 !!---------------------------------------------------------------------- 109 92 !! space domain parameters 110 93 !!---------------------------------------------------------------------- 111 LOGICAL, PUBLIC :: lzoom = .FALSE. !: zoom flag112 LOGICAL, PUBLIC :: lzoom_e = .FALSE. !: East zoom type flag113 LOGICAL, PUBLIC :: lzoom_w = .FALSE. !: West zoom type flag114 LOGICAL, PUBLIC :: lzoom_s = .FALSE. !: South zoom type flag115 LOGICAL, PUBLIC :: lzoom_n = .FALSE. !: North zoom type flag116 117 94 ! !!! domain parameters linked to mpp 118 95 INTEGER, PUBLIC :: nperio !: type of lateral boundary condition … … 166 143 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: e1e2f , r1_e1e2f !: associated metrics at f-point 167 144 ! 168 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: ff !: coriolis factor[1/s]145 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: ff_f, ff_t !: coriolis factor at f- and t-point [1/s] 169 146 170 147 !!---------------------------------------------------------------------- … … 229 206 !! --------------------------------------------------------------------- 230 207 INTEGER , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: mbathy !: number of ocean level (=0, 1, ... , jpk-1) 231 INTEGER , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: mbkt !: vertical index of the bottom last T- ocean level 232 INTEGER , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: mbku, mbkv !: vertical index of the bottom last U- and W- ocean level 208 INTEGER , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: mbkt, mbku, mbkv !: bottom last wet T-, U- and W-level 233 209 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: bathy !: ocean depth (meters) 234 210 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: tmask_i !: interior domain T-point mask 235 211 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: tmask_h !: internal domain T-point mask (Figure 8.5 NEMO book) 236 212 237 INTEGER , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: misfdep !: top first ocean level 238 INTEGER , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: mikt, miku, mikv, mikf !: first wet T-, U-, V-, F- oceanlevel (ISF)239 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: risfdep !: Iceshelf draft 213 INTEGER , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: misfdep !: top first ocean level (ISF) 214 INTEGER , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: mikt, miku, mikv, mikf !: top first wet T-, U-, V-, F-level (ISF) 215 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: risfdep !: Iceshelf draft (ISF) 240 216 241 217 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: ssmask, ssumask, ssvmask, ssfmask !: surface mask at T-,U-, V- and F-pts … … 319 295 & njmppt(jpnij) , ibonjt(jpnij) , nldit(jpnij) , nldjt(jpnij) , & 320 296 & nleit(jpnij) , nlejt(jpnij) , & 321 & mi0(jpidta) , mi1 (jpidta), mj0(jpjdta) , mj1 (jpjdta) ,&322 & tpol(jpiglo) , fpol(jpiglo) , STAT=ierr(2) )297 & mi0(jpidta) , mi1 (jpidta), mj0(jpjdta) , mj1 (jpjdta) , & 298 & tpol(jpiglo) , fpol(jpiglo) , STAT=ierr(2) ) 323 299 ! 324 300 ALLOCATE( glamt(jpi,jpj) , glamu(jpi,jpj) , glamv(jpi,jpj) , glamf(jpi,jpj) , & … … 332 308 & e1e2v(jpi,jpj) , r1_e1e2v(jpi,jpj) , e1_e2v(jpi,jpj) , & 333 309 & e1e2f(jpi,jpj) , r1_e1e2f(jpi,jpj) , & 334 & ff (jpi,jpj), STAT=ierr(3) )335 ! 336 ALLOCATE( gdept_0(jpi,jpj,jpk) , gdepw_0(jpi,jpj,jpk) , gde3w_0(jpi,jpj,jpk) , &310 & ff_f (jpi,jpj) , ff_t (jpi,jpj) , STAT=ierr(3) ) 311 ! 312 ALLOCATE( gdept_0(jpi,jpj,jpk) , gdepw_0(jpi,jpj,jpk) , gde3w_0(jpi,jpj,jpk) , & 337 313 & gdept_b(jpi,jpj,jpk) , gdepw_b(jpi,jpj,jpk) , & 338 314 & gdept_n(jpi,jpj,jpk) , gdepw_n(jpi,jpj,jpk) , gde3w_n(jpi,jpj,jpk) , STAT=ierr(4) ) … … 364 340 & hift (jpi,jpj) , hifu (jpi,jpj) , rx1(jpi,jpj) , STAT=ierr(8) ) 365 341 366 ALLOCATE( mbathy(jpi,jpj) , bathy (jpi,jpj) , & 367 & tmask_i(jpi,jpj) , tmask_h(jpi,jpj) , & 368 & ssmask (jpi,jpj) , ssumask(jpi,jpj) , ssvmask(jpi,jpj) , ssfmask(jpi,jpj) , & 369 & mbkt (jpi,jpj) , mbku (jpi,jpj) , mbkv (jpi,jpj) , STAT=ierr(9) ) 370 371 ! (ISF) Allocation of basic array 372 ALLOCATE( misfdep(jpi,jpj) , risfdep(jpi,jpj), & 373 & mikt(jpi,jpj), miku(jpi,jpj), mikv(jpi,jpj) , & 374 & mikf(jpi,jpj), STAT=ierr(10) ) 375 376 ALLOCATE( tmask(jpi,jpj,jpk) , umask(jpi,jpj,jpk), & 377 & vmask(jpi,jpj,jpk) , fmask(jpi,jpj,jpk), STAT=ierr(11) ) 342 ALLOCATE( mbathy (jpi,jpj) , bathy (jpi,jpj) , & 343 & tmask_i(jpi,jpj) , tmask_h(jpi,jpj) , & 344 & ssmask (jpi,jpj) , ssumask(jpi,jpj) , ssvmask(jpi,jpj) , ssfmask(jpi,jpj) , & 345 & mbkt (jpi,jpj) , mbku (jpi,jpj) , mbkv (jpi,jpj) , STAT=ierr(9) ) 346 347 ALLOCATE( misfdep(jpi,jpj) , mikt(jpi,jpj) , miku(jpi,jpj) , & 348 & risfdep(jpi,jpj) , mikv(jpi,jpj) , mikf(jpi,jpj) , STAT=ierr(10) ) 349 350 ALLOCATE( tmask(jpi,jpj,jpk) , umask(jpi,jpj,jpk) , & 351 & vmask(jpi,jpj,jpk) , fmask(jpi,jpj,jpk) , STAT=ierr(11) ) 378 352 379 353 ALLOCATE( wmask(jpi,jpj,jpk) , wumask(jpi,jpj,jpk), wvmask(jpi,jpj,jpk) , STAT=ierr(12) ) -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/OPA_SRC/DOM/domain.F90
r6140 r6596 166 166 & ln_cfmeta, ln_iscpl 167 167 NAMELIST/namdom/ nn_bathy, rn_bathy , rn_e3zps_min, rn_e3zps_rat, nn_msh, rn_hmin, rn_isfhmin, & 168 & rn_atfp , rn_rdt , nn_closea , ln_crs , jphgr_msh , & 169 & ppglam0, ppgphi0, ppe1_deg, ppe2_deg, ppe1_m, ppe2_m, & 168 & rn_atfp , rn_rdt , nn_closea , ln_crs , & 170 169 & ppsur, ppa0, ppa1, ppkth, ppacr, ppdzmin, pphmax, ldbletanh, & 171 170 & ppa2, ppkth2, ppacr2 … … 295 294 WRITE(numout,*) ' suppression of closed seas (=0) nn_closea = ', nn_closea 296 295 WRITE(numout,*) ' online coarsening of dynamical fields ln_crs = ', ln_crs 297 WRITE(numout,*) ' type of horizontal mesh jphgr_msh = ', jphgr_msh 298 WRITE(numout,*) ' longitude of first raw and column T-point ppglam0 = ', ppglam0 299 WRITE(numout,*) ' latitude of first raw and column T-point ppgphi0 = ', ppgphi0 300 WRITE(numout,*) ' zonal grid-spacing (degrees) ppe1_deg = ', ppe1_deg 301 WRITE(numout,*) ' meridional grid-spacing (degrees) ppe2_deg = ', ppe2_deg 302 WRITE(numout,*) ' zonal grid-spacing (degrees) ppe1_m = ', ppe1_m 303 WRITE(numout,*) ' meridional grid-spacing (degrees) ppe2_m = ', ppe2_m 296 304 297 WRITE(numout,*) ' ORCA r4, r2 and r05 coefficients ppsur = ', ppsur 305 298 WRITE(numout,*) ' ppa0 = ', ppa0 -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/OPA_SRC/DOM/domcfg.F90
r6140 r6596 9 9 10 10 !!---------------------------------------------------------------------- 11 !! dom_cfg 11 !! dom_cfg : initialize the domain configuration 12 12 !!---------------------------------------------------------------------- 13 USE dom_oce ! ocean space and time domain 14 USE phycst ! physical constants 15 USE in_out_manager ! I/O manager 16 USE lib_mpp ! distributed memory computing library 17 USE timing ! Timing 18 USE c1d ! 1D configuration 19 USE domc1d ! 1D configuration: column location 13 USE dom_oce ! ocean space and time domain 14 USE phycst ! physical constants 15 ! 16 USE in_out_manager ! I/O manager 17 USE lib_mpp ! distributed memory computing library 18 USE timing ! Timing 19 USE c1d ! 1D configuration 20 USE domc1d ! 1D configuration: column location 20 21 21 22 IMPLICIT NONE … … 71 72 !! *** ROUTINE dom_glo *** 72 73 !! 73 !! ** Purpose : initialization for global domain, zoomand local domain74 !! ** Purpose : initialization for global and local domain 74 75 !! 75 76 !! ** Method : 76 77 !! 77 !! ** Action : - mig , mjg :78 !! - mi0 , mi1 :79 !! - mj0, , mj1 :78 !! ** Action : - mig , mjg : local domain indices ==> global domain indices 79 !! - mi0 , mi1 : global domain indices ==> local domain indices 80 !! - mj0,, mj1 (global point not in the local domain ==> mi0>mi1 and/or mj0>mj1) 80 81 !!---------------------------------------------------------------------- 81 82 INTEGER :: ji, jj ! dummy loop argument 82 83 !!---------------------------------------------------------------------- 83 ! ! recalculate jpizoom/jpjzoom given lat/lon 84 !!gm This should be removed with the new configuration interface 85 ! ! recalculate jp_izoom/jp_jzoom given lat/lon 84 86 IF( lk_c1d .AND. ln_c1d_locpt ) CALL dom_c1d( rn_lat1d, rn_lon1d ) 87 !!gm end 85 88 ! 86 89 ! ! ============== ! 87 90 ! ! Local domain ! 88 91 ! ! ============== ! 89 DO ji = 1, jpi ! local domain indices ==> datadomain indices90 mig(ji) = ji + jpizoom - 1 +nimpp - 192 DO ji = 1, jpi ! local domain indices ==> global domain indices 93 mig(ji) = ji + nimpp - 1 91 94 END DO 92 95 DO jj = 1, jpj 93 mjg(jj) = jj + jpjzoom - 1 +njmpp - 196 mjg(jj) = jj + njmpp - 1 94 97 END DO 95 98 ! 96 ! ! datadomain indices ==> local domain indices99 ! ! global domain indices ==> local domain indices 97 100 ! ! (return (m.0,m.1)=(1,0) if data domain gridpoint is to the west/south of the 98 101 ! !local domain, or (m.0,m.1)=(jp.+1,jp.) to the east/north of local domain. 99 DO ji = 1, jpi dta100 mi0(ji) = MAX( 1 , MIN( ji - jpizoom + 1- nimpp + 1, jpi+1 ) )101 mi1(ji) = MAX( 0 , MIN( ji - jpizoom + 1- nimpp + 1, jpi ) )102 DO ji = 1, jpiglo 103 mi0(ji) = MAX( 1 , MIN( ji - nimpp + 1, jpi+1 ) ) 104 mi1(ji) = MAX( 0 , MIN( ji - nimpp + 1, jpi ) ) 102 105 END DO 103 DO jj = 1, jpj dta104 mj0(jj) = MAX( 1 , MIN( jj - jpjzoom + 1- njmpp + 1, jpj+1 ) )105 mj1(jj) = MAX( 0 , MIN( jj - jpjzoom + 1- njmpp + 1, jpj ) )106 DO jj = 1, jpjglo 107 mj0(jj) = MAX( 1 , MIN( jj - njmpp + 1, jpj+1 ) ) 108 mj1(jj) = MAX( 0 , MIN( jj - njmpp + 1, jpj ) ) 106 109 END DO 107 110 IF(lwp) THEN ! control print 108 111 WRITE(numout,*) 109 WRITE(numout,*) 'dom_glo : domain: data /local '112 WRITE(numout,*) 'dom_glo : domain: global <<==>> local ' 110 113 WRITE(numout,*) '~~~~~~~ ' 111 WRITE(numout,*) ' data input domain : jpidta = ', jpidta, & 112 & ' jpjdta = ', jpjdta, ' jpkdta = ', jpkdta 113 WRITE(numout,*) ' global or zoom domain: jpiglo = ', jpiglo, & 114 & ' jpjglo = ', jpjglo, ' jpk = ', jpk 115 WRITE(numout,*) ' local domain : jpi = ', jpi , & 116 & ' jpj = ', jpj , ' jpk = ', jpk 114 WRITE(numout,*) ' global domain: jpiglo = ', jpiglo, ' jpjglo = ', jpjglo, ' jpkglo = ', jpkglo 115 WRITE(numout,*) ' local domain: jpi = ', jpi , ' jpj = ', jpj , ' jpk = ', jpk 117 116 WRITE(numout,*) 118 WRITE(numout,*) ' south-west indices jpizoom = ', jpizoom, &119 & ' jpjzoom = ', jpjzoom120 117 IF( nn_print >= 1 ) THEN 121 118 WRITE(numout,*) … … 125 122 WRITE(numout,*) ' conversion data ==> local i-index domain' 126 123 WRITE(numout,*) ' starting index' 127 WRITE(numout,25) (mi0(ji),ji = 1,jpi dta)124 WRITE(numout,25) (mi0(ji),ji = 1,jpiglo) 128 125 WRITE(numout,*) ' ending index' 129 WRITE(numout,25) (mi1(ji),ji = 1,jpi dta)126 WRITE(numout,25) (mi1(ji),ji = 1,jpiglo) 130 127 WRITE(numout,*) 131 128 WRITE(numout,*) ' conversion local ==> data j-index domain' … … 134 131 WRITE(numout,*) ' conversion data ==> local j-index domain' 135 132 WRITE(numout,*) ' starting index' 136 WRITE(numout,25) (mj0(jj),jj = 1,jpj dta)133 WRITE(numout,25) (mj0(jj),jj = 1,jpjglo) 137 134 WRITE(numout,*) ' ending index' 138 WRITE(numout,25) (mj1(jj),jj = 1,jpj dta)135 WRITE(numout,25) (mj1(jj),jj = 1,jpjglo) 139 136 ENDIF 140 137 ENDIF 141 138 25 FORMAT( 100(10x,19i4,/) ) 142 139 143 ! ! ============== !144 ! ! Zoom domain !145 ! ! ============== !146 ! ! zoom control147 IF( jpiglo + jpizoom - 1 > jpidta .OR. &148 jpjglo + jpjzoom - 1 > jpjdta ) &149 & CALL ctl_stop( ' global or zoom domain exceed the data domain ! ' )150 151 ! ! set zoom flag152 IF( jpiglo < jpidta .OR. jpjglo < jpjdta ) lzoom = .TRUE.153 154 ! ! set zoom type flags155 IF( lzoom .AND. jpizoom /= 1 ) lzoom_w = .TRUE. !156 IF( lzoom .AND. jpjzoom /= 1 ) lzoom_s = .TRUE.157 IF( lzoom .AND. jpiglo + jpizoom -1 /= jpidta ) lzoom_e = .TRUE.158 IF( lzoom .AND. jpjglo + jpjzoom -1 /= jpjdta ) lzoom_n = .TRUE.159 IF(lwp) THEN160 WRITE(numout,*)161 WRITE(numout,*) ' zoom flags : '162 WRITE(numout,*) ' lzoom = ', lzoom , ' (T = zoom, F = global )'163 WRITE(numout,*) ' lzoom_e = ', lzoom_e, ' (T = forced closed east boundary)'164 WRITE(numout,*) ' lzoom_w = ', lzoom_w, ' (T = forced closed west boundary)'165 WRITE(numout,*) ' lzoom_s = ', lzoom_s, ' (T = forced closed South boundary)'166 WRITE(numout,*) ' lzoom_n = ', lzoom_n, ' (T = forced closed North boundary)'167 ENDIF168 IF( ( lzoom_e .OR. lzoom_w ) .AND. ( jperio == 1 .OR. jperio == 4 .OR. jperio == 6 ) ) &169 & CALL ctl_stop( ' Your zoom choice is inconsistent with east-west cyclic boundary condition' )170 IF( lzoom_n .AND. ( 3 <= jperio .AND. jperio <= 6 ) ) &171 & CALL ctl_stop( ' Your zoom choice is inconsistent with North fold boundary condition' )172 173 ! ! Pre-defined arctic/antarctic zoom of ORCA configuration flag174 IF( cp_cfg == "orca" ) THEN175 SELECT CASE ( jp_cfg )176 CASE ( 2 ) ! ORCA_R2 configuration177 IF( cp_cfz == "arctic" .AND. jpiglo == 142 .AND. jpjglo == 53 .AND. &178 & jpizoom == 21 .AND. jpjzoom == 97 ) THEN179 IF(lwp) WRITE(numout,*) ' ORCA configuration: arctic zoom '180 ENDIF181 IF( cp_cfz == "antarctic" .AND. jpiglo == jpidta .AND. jpjglo == 50 .AND. &182 & jpizoom == 1 .AND. jpjzoom == 1 ) THEN183 IF(lwp) WRITE(numout,*) ' ORCA configuration: antarctic zoom '184 ENDIF185 !186 CASE ( 05 ) ! ORCA_R05 configuration187 IF( cp_cfz == "arctic" .AND. jpiglo == 562 .AND. jpjglo == 202 .AND. &188 & jpizoom == 81 .AND. jpjzoom == 301 ) THEN189 IF(lwp) WRITE(numout,*) ' ORCA configuration: arctic zoom '190 ENDIF191 IF( cp_cfz == "antarctic" .AND. jpiglo == jpidta .AND. jpjglo == 187 .AND. &192 & jpizoom == 1 .AND. jpjzoom == 1 ) THEN193 IF(lwp) WRITE(numout,*) ' ORCA configuration: antarctic zoom '194 ENDIF195 END SELECT196 !197 ENDIF198 140 ! 199 141 END SUBROUTINE dom_glo -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/OPA_SRC/DOM/domhgr.F90
r6595 r6596 95 95 CALL hgr_read ( glamt , glamu , glamv , glamf , & ! geographic position (required) 96 96 & gphit , gphiu , gphiv , gphif , & ! - - 97 & iff , ff ,& ! Coriolis parameter (if not on the sphere)97 & iff , ff_f , ff_t , & ! Coriolis parameter (if not on the sphere) 98 98 & e1t , e1u , e1v , e1f , & ! scale factors (required) 99 99 & e2t , e2u , e2v , e2f , & ! - - - … … 106 106 CALL usr_def_hgr( glamt , glamu , glamv , glamf , & ! geographic position (required) 107 107 & gphit , gphiu , gphiv , gphif , & ! 108 & iff , ff ,& ! Coriolis parameter (if domain not on the sphere)108 & iff , ff_f , ff_t , & ! Coriolis parameter (if domain not on the sphere) 109 109 & e1t , e1u , e1v , e1f , & ! scale factors (required) 110 110 & e2t , e2u , e2v , e2f , & ! … … 116 116 ! 117 117 IF( iff == 0 ) THEN ! Coriolis parameter has not been defined 118 IF(lwp) WRITE(numout,*) ' Coriolis parameter calculated on the sphere from gphif' 119 ff(:,:) = 2. * omega * SIN( rad * gphif(:,:) ) ! compute it on the sphere 118 IF(lwp) WRITE(numout,*) ' Coriolis parameter calculated on the sphere from gphif & gphit' 119 ff_f(:,:) = 2. * omega * SIN( rad * gphif(:,:) ) ! compute it on the sphere at f-point 120 ff_t(:,:) = 2. * omega * SIN( rad * gphit(:,:) ) ! - - - at t-point 120 121 ELSE 121 122 IF(lwp) WRITE(numout,*) ' Coriolis parameter have been read in "mesh_mask" file' … … 153 154 SUBROUTINE hgr_read( plamt , plamu , plamv , plamf , & ! gridpoints position (required) 154 155 & pphit , pphiu , pphiv , pphif , & 155 & kff , pff ,& ! Coriolis parameter (if not on the sphere)156 & kff , pff_f , pff_t , & ! Coriolis parameter (if not on the sphere) 156 157 & pe1t , pe1u , pe1v , pe1f , & ! scale factors (required) 157 158 & pe2t , pe2u , pe2v , pe2f , & … … 166 167 REAL(wp), DIMENSION(:,:), INTENT(out) :: pphit, pphiu, pphiv, pphif ! latitude outputs 167 168 INTEGER , INTENT(out) :: kff ! =1 Coriolis parameter read here, =0 otherwise 168 REAL(wp), DIMENSION(:,:), INTENT(out) :: pff 169 REAL(wp), DIMENSION(:,:), INTENT(out) :: pff_f, pff_t ! Coriolis factor at f-point (if found in file) 169 170 REAL(wp), DIMENSION(:,:), INTENT(out) :: pe1t, pe1u, pe1v, pe1f ! i-scale factors 170 171 REAL(wp), DIMENSION(:,:), INTENT(out) :: pe2t, pe2u, pe2v, pe2f ! j-scale factors … … 210 211 CALL iom_get( inum, jpdom_data, 'e2f' , pe2f , lrowattr=ln_use_jattr ) 211 212 ! 212 IF( iom_varid( inum, 'ff', ldstop = .FALSE. ) > 0 ) THEN 213 IF(lwp) WRITE(numout,*) ' ff read in mesh_mask file' 214 CALL iom_get( inum, jpdom_data, 'ff' , ff , lrowattr=ln_use_jattr ) 213 IF( iom_varid( inum, 'ff_f', ldstop = .FALSE. ) > 0 .AND. & 214 & iom_varid( inum, 'ff_t', ldstop = .FALSE. ) > 0 ) THEN 215 IF(lwp) WRITE(numout,*) ' Coriolis factor at f- and t-points read in mesh_mask file' 216 CALL iom_get( inum, jpdom_data, 'ff_f' , ff_f , lrowattr=ln_use_jattr ) 217 CALL iom_get( inum, jpdom_data, 'ff_t' , ff_t , lrowattr=ln_use_jattr ) 215 218 kff = 1 216 219 ELSE -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/OPA_SRC/DOM/domngb.F90
r6140 r6596 62 62 END SELECT 63 63 64 IF (jphgr_msh /= 2 .AND. jphgr_msh /= 3) THEN 65 zlon = MOD( plon + 720., 360. ) ! plon between 0 and 360 66 zglam(:,:) = MOD( zglam(:,:) + 720., 360. ) ! glam between 0 and 360 67 IF( zlon > 270. ) zlon = zlon - 360. ! zlon between -90 and 270 68 IF( zlon < 90. ) WHERE( zglam(:,:) > 180. ) zglam(:,:) = zglam(:,:) - 360. ! glam between -180 and 180 69 zglam(:,:) = zglam(:,:) - zlon 70 ELSE 71 zglam(:,:) = zglam(:,:) - plon 72 END IF 64 zlon = MOD( plon + 720., 360. ) ! plon between 0 and 360 65 zglam(:,:) = MOD( zglam(:,:) + 720., 360. ) ! glam between 0 and 360 66 IF( zlon > 270. ) zlon = zlon - 360. ! zlon between -90 and 270 67 IF( zlon < 90. ) WHERE( zglam(:,:) > 180. ) zglam(:,:) = zglam(:,:) - 360. ! glam between -180 and 180 68 zglam(:,:) = zglam(:,:) - zlon 73 69 74 70 zgphi(:,:) = zgphi(:,:) - plat -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/OPA_SRC/DOM/domwri.F90
r6595 r6596 256 256 CALL iom_rstput( 0, 0, inum3, 'e2f', e2f, ktype = jp_r8 ) 257 257 258 CALL iom_rstput( 0, 0, inum3, 'ff', ff, ktype = jp_r8 ) ! ! coriolis factor 258 CALL iom_rstput( 0, 0, inum3, 'ff_f', ff_f, ktype = jp_r8 ) ! ! coriolis factor 259 CALL iom_rstput( 0, 0, inum3, 'ff_t', ff_t, ktype = jp_r8 ) 259 260 260 261 ! note that mbkt is set to 1 over land ==> use surface tmask -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90
r6152 r6596 24 24 !! dom_zgr : defined the ocean vertical coordinate system 25 25 !! zgr_bat : bathymetry fields (levels and meters) 26 !! zgr_bat_zoom : modify the bathymetry field if zoom domain27 26 !! zgr_bat_ctl : check the bathymetry files 28 27 !! zgr_bot_level: deepest ocean level for t-, u, and v-points … … 149 148 ! final adjustment of mbathy & check 150 149 ! ----------------------------------- 151 IF( lzoom ) CALL zgr_bat_zoom ! correct mbathy in case of zoom subdomain152 150 IF( .NOT.lk_c1d ) CALL zgr_bat_ctl ! check bathymetry (mbathy) and suppress isolated ocean points 153 151 CALL zgr_bot_level ! deepest ocean level for t-, u- and v-points … … 225 223 ! 226 224 #if defined key_agrif 227 za1 = ( ppdzmin - pphmax / FLOAT(jpkdta-1) ) &228 & / ( TANH((1-ppkth)/ppacr) - ppacr/ FLOAT(jpkdta-1) * ( LOG( COSH( (jpkdta - ppkth) / ppacr) )&229 & - LOG( COSH( ( 1- ppkth) / ppacr) ) ) )225 za1 = ( ppdzmin - pphmax / REAL( jpkdta-1 , wp ) ) & 226 & / ( TANH((1-ppkth)/ppacr) - ppacr/REAL( jpkdta-1 , wp ) * ( LOG( COSH( (jpkdta - ppkth) / ppacr) )& 227 & - LOG( COSH( ( 1 - ppkth) / ppacr) ) ) ) 230 228 #else 231 229 za1 = ( ppdzmin - pphmax / FLOAT(jpkm1) ) & … … 429 427 zdta(:,:) = gdepw_1d(jpk) ! last w-point depth 430 428 h_oce = gdepw_1d(jpk) 431 ENDIF432 ELSE ! bump centered in the basin433 IF(lwp) WRITE(numout,*)434 IF(lwp) WRITE(numout,*) ' bathymetry field: flat basin with a bump'435 ii_bump = jpidta / 2 ! i-index of the bump center436 ij_bump = jpjdta / 2 ! j-index of the bump center437 r_bump = 50000._wp ! bump radius (meters)438 h_bump = 2700._wp ! bump height (meters)439 h_oce = gdepw_1d(jpk) ! background ocean depth (meters)440 IF(lwp) WRITE(numout,*) ' bump characteristics: '441 IF(lwp) WRITE(numout,*) ' bump center (i,j) = ', ii_bump, ii_bump442 IF(lwp) WRITE(numout,*) ' bump height = ', h_bump , ' meters'443 IF(lwp) WRITE(numout,*) ' bump radius = ', r_bump , ' index'444 IF(lwp) WRITE(numout,*) ' background ocean depth = ', h_oce , ' meters'445 !446 DO jj = 1, jpjdta ! zdta :447 DO ji = 1, jpidta448 zi = FLOAT( ji - ii_bump ) * ppe1_m / r_bump449 zj = FLOAT( jj - ij_bump ) * ppe2_m / r_bump450 zdta(ji,jj) = h_oce - h_bump * EXP( -( zi*zi + zj*zj ) )451 END DO452 END DO453 ! ! idta :454 IF( ln_sco ) THEN ! s-coordinate (zsc ): idta()=jpk455 idta(:,:) = jpkm1456 ELSE ! z-coordinate (zco or zps): step-like topography457 idta(:,:) = jpkm1458 DO jk = 1, jpkm1459 WHERE( gdept_1d(jk) < zdta(:,:) .AND. zdta(:,:) <= gdept_1d(jk+1) ) idta(:,:) = jk460 END DO461 429 ENDIF 462 430 ENDIF … … 605 573 606 574 607 SUBROUTINE zgr_bat_zoom608 !!----------------------------------------------------------------------609 !! *** ROUTINE zgr_bat_zoom ***610 !!611 !! ** Purpose : - Close zoom domain boundary if necessary612 !! - Suppress Med Sea from ORCA R2 and R05 arctic zoom613 !!614 !! ** Method :615 !!616 !! ** Action : - update mbathy: level bathymetry (in level index)617 !!----------------------------------------------------------------------618 INTEGER :: ii0, ii1, ij0, ij1 ! temporary integers619 !!----------------------------------------------------------------------620 !621 IF(lwp) WRITE(numout,*)622 IF(lwp) WRITE(numout,*) ' zgr_bat_zoom : modify the level bathymetry for zoom domain'623 IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~'624 !625 ! Zoom domain626 ! ===========627 !628 ! Forced closed boundary if required629 IF( lzoom_s ) mbathy( : , mj0(jpjzoom):mj1(jpjzoom) ) = 0630 IF( lzoom_w ) mbathy( mi0(jpizoom):mi1(jpizoom) , : ) = 0631 IF( lzoom_e ) mbathy( mi0(jpiglo+jpizoom-1):mi1(jpiglo+jpizoom-1) , : ) = 0632 IF( lzoom_n ) mbathy( : , mj0(jpjglo+jpjzoom-1):mj1(jpjglo+jpjzoom-1) ) = 0633 !634 ! Configuration specific domain modifications635 ! (here, ORCA arctic configuration: suppress Med Sea)636 IF( cp_cfg == "orca" .AND. cp_cfz == "arctic" ) THEN637 SELECT CASE ( jp_cfg )638 ! ! =======================639 CASE ( 2 ) ! ORCA_R2 configuration640 ! ! =======================641 IF(lwp) WRITE(numout,*) ' ORCA R2 arctic zoom: suppress the Med Sea'642 ii0 = 141 ; ii1 = 162 ! Sea box i,j indices643 ij0 = 98 ; ij1 = 110644 ! ! =======================645 CASE ( 05 ) ! ORCA_R05 configuration646 ! ! =======================647 IF(lwp) WRITE(numout,*) ' ORCA R05 arctic zoom: suppress the Med Sea'648 ii0 = 563 ; ii1 = 642 ! zero over the Med Sea boxe649 ij0 = 314 ; ij1 = 370650 END SELECT651 !652 mbathy( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0 ! zero over the Med Sea boxe653 !654 ENDIF655 !656 END SUBROUTINE zgr_bat_zoom657 575 658 576 -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/OPA_SRC/DOM/istate.F90
r6579 r6596 34 34 USE domvvl ! varying vertical mesh 35 35 USE iscplrst ! ice sheet coupling 36 USE usrdef ! User defined routine 36 37 ! 37 38 USE in_out_manager ! I/O manager … … 41 42 USE wrk_nemo ! Memory allocation 42 43 USE timing ! Timing 43 USE usrdef ! User defined routine44 45 46 44 47 45 IMPLICIT NONE … … 136 134 ub_b(:,:) = 0._wp ; vb_b(:,:) = 0._wp 137 135 ! 138 !!gm the use of umsak & vmask is not necessary belo xas un, vn, ub, vb are always masked136 !!gm the use of umsak & vmask is not necessary below as un, vn, ub, vb are always masked 139 137 DO jk = 1, jpkm1 140 138 DO jj = 1, jpj … … 159 157 END SUBROUTINE istate_init 160 158 159 !!====================================================================== 161 160 END MODULE istate -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90
r6152 r6596 69 69 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:) :: wgtbtp1, wgtbtp2 !: 1st & 2nd weights used in time filtering of barotropic fields 70 70 71 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: zwz !: ff /h at F points71 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: zwz !: ff_f/h at F points 72 72 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: ftnw, ftne !: triad of coriolis parameter 73 73 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: ftsw, ftse !: (only used with een vorticity scheme) … … 220 220 IF( kt == nit000 .OR. .NOT.ln_linssh ) THEN 221 221 IF( ln_dynvor_een ) THEN !== EEN scheme ==! 222 SELECT CASE( nn_een_e3f ) !* ff /e3 at F-point222 SELECT CASE( nn_een_e3f ) !* ff_f/e3 at F-point 223 223 CASE ( 0 ) ! original formulation (masked averaging of e3t divided by 4) 224 224 DO jj = 1, jpjm1 … … 226 226 zwz(ji,jj) = ( ht_n(ji ,jj+1) + ht_n(ji+1,jj+1) + & 227 227 & ht_n(ji ,jj ) + ht_n(ji+1,jj ) ) * 0.25_wp 228 IF( zwz(ji,jj) /= 0._wp ) zwz(ji,jj) = ff (ji,jj) / zwz(ji,jj)228 IF( zwz(ji,jj) /= 0._wp ) zwz(ji,jj) = ff_f(ji,jj) / zwz(ji,jj) 229 229 END DO 230 230 END DO … … 236 236 & / ( MAX( 1._wp, tmask(ji ,jj+1, 1) + tmask(ji+1,jj+1, 1) + & 237 237 & tmask(ji ,jj , 1) + tmask(ji+1,jj , 1) ) ) 238 IF( zwz(ji,jj) /= 0._wp ) zwz(ji,jj) = ff (ji,jj) / zwz(ji,jj)238 IF( zwz(ji,jj) /= 0._wp ) zwz(ji,jj) = ff_f(ji,jj) / zwz(ji,jj) 239 239 END DO 240 240 END DO … … 285 285 END DO 286 286 END DO 287 zwz(:,:) = ff (:,:) * zwz(:,:)287 zwz(:,:) = ff_f(:,:) * zwz(:,:) 288 288 ENDIF 289 289 ENDIF -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/OPA_SRC/DYN/dynvor.F90
r6140 r6596 237 237 SELECT CASE( kvor ) !== vorticity considered ==! 238 238 CASE ( np_COR ) !* Coriolis (planetary vorticity) 239 zwz(:,:) = ff (:,:)239 zwz(:,:) = ff_f(:,:) 240 240 CASE ( np_RVO ) !* relative vorticity 241 241 DO jj = 1, jpjm1 … … 256 256 DO jj = 1, jpjm1 257 257 DO ji = 1, fs_jpim1 ! vector opt. 258 zwz(ji,jj) = ff (ji,jj) + ( e2v(ji+1,jj ) * vn(ji+1,jj ,jk) - e2v(ji,jj) * vn(ji,jj,jk) &259 & - e1u(ji ,jj+1) * un(ji ,jj+1,jk) + e1u(ji,jj) * un(ji,jj,jk) ) &260 & * r1_e1e2f(ji,jj)258 zwz(ji,jj) = ff_f(ji,jj) + ( e2v(ji+1,jj ) * vn(ji+1,jj ,jk) - e2v(ji,jj) * vn(ji,jj,jk) & 259 & - e1u(ji ,jj+1) * un(ji ,jj+1,jk) + e1u(ji,jj) * un(ji,jj,jk) ) & 260 & * r1_e1e2f(ji,jj) 261 261 END DO 262 262 END DO … … 264 264 DO jj = 1, jpjm1 265 265 DO ji = 1, fs_jpim1 ! vector opt. 266 zwz(ji,jj) = ff (ji,jj)&266 zwz(ji,jj) = ff_f(ji,jj) & 267 267 & + ( ( vn(ji+1,jj ,jk) + vn (ji,jj,jk) ) * ( e2v(ji+1,jj ) - e2v(ji,jj) ) & 268 268 & - ( un(ji ,jj+1,jk) + un (ji,jj,jk) ) * ( e1u(ji ,jj+1) - e1u(ji,jj) ) ) & … … 357 357 SELECT CASE( kvor ) !== vorticity considered ==! 358 358 CASE ( np_COR ) !* Coriolis (planetary vorticity) 359 zwz(:,:) = ff (:,:)359 zwz(:,:) = ff_f(:,:) 360 360 CASE ( np_RVO ) !* relative vorticity 361 361 DO jj = 1, jpjm1 … … 376 376 DO jj = 1, jpjm1 377 377 DO ji = 1, fs_jpim1 ! vector opt. 378 zwz(ji,jj) = ff (ji,jj) + ( e2v(ji+1,jj ) * vn(ji+1,jj ,jk) - e2v(ji,jj) * vn(ji,jj,jk) &379 & - e1u(ji ,jj+1) * un(ji ,jj+1,jk) + e1u(ji,jj) * un(ji,jj,jk) ) &380 & * r1_e1e2f(ji,jj)378 zwz(ji,jj) = ff_f(ji,jj) + ( e2v(ji+1,jj ) * vn(ji+1,jj ,jk) - e2v(ji,jj) * vn(ji,jj,jk) & 379 & - e1u(ji ,jj+1) * un(ji ,jj+1,jk) + e1u(ji,jj) * un(ji,jj,jk) ) & 380 & * r1_e1e2f(ji,jj) 381 381 END DO 382 382 END DO … … 384 384 DO jj = 1, jpjm1 385 385 DO ji = 1, fs_jpim1 ! vector opt. 386 zwz(ji,jj) = ff (ji,jj)&386 zwz(ji,jj) = ff_f(ji,jj) & 387 387 & + ( ( vn(ji+1,jj ,jk) + vn (ji,jj,jk) ) * ( e2v(ji+1,jj ) - e2v(ji,jj) ) & 388 388 & - ( un(ji ,jj+1,jk) + un (ji,jj,jk) ) * ( e1u(ji ,jj+1) - e1u(ji,jj) ) ) & … … 506 506 DO jj = 1, jpjm1 507 507 DO ji = 1, fs_jpim1 ! vector opt. 508 zwz(ji,jj) = ff (ji,jj) * z1_e3f(ji,jj)508 zwz(ji,jj) = ff_f(ji,jj) * z1_e3f(ji,jj) 509 509 END DO 510 510 END DO … … 528 528 DO jj = 1, jpjm1 529 529 DO ji = 1, fs_jpim1 ! vector opt. 530 zwz(ji,jj) = ( ff (ji,jj) + ( e2v(ji+1,jj ) * vn(ji+1,jj ,jk) - e2v(ji,jj) * vn(ji,jj,jk) &531 & - e1u(ji ,jj+1) * un(ji ,jj+1,jk) + e1u(ji,jj) * un(ji,jj,jk) ) &532 & * r1_e1e2f(ji,jj) ) * z1_e3f(ji,jj)530 zwz(ji,jj) = ( ff_f(ji,jj) + ( e2v(ji+1,jj ) * vn(ji+1,jj ,jk) - e2v(ji,jj) * vn(ji,jj,jk) & 531 & - e1u(ji ,jj+1) * un(ji ,jj+1,jk) + e1u(ji,jj) * un(ji,jj,jk) ) & 532 & * r1_e1e2f(ji,jj) ) * z1_e3f(ji,jj) 533 533 END DO 534 534 END DO … … 536 536 DO jj = 1, jpjm1 537 537 DO ji = 1, fs_jpim1 ! vector opt. 538 zwz(ji,jj) = ( ff (ji,jj)&538 zwz(ji,jj) = ( ff_f(ji,jj) & 539 539 & + ( ( vn(ji+1,jj ,jk) + vn (ji,jj,jk) ) * ( e2v(ji+1,jj ) - e2v(ji,jj) ) & 540 540 & - ( un(ji ,jj+1,jk) + un (ji,jj,jk) ) * ( e1u(ji ,jj+1) - e1u(ji,jj) ) ) & -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/OPA_SRC/FLO/floblk.F90
r6140 r6596 106 106 222 DO jfl = 1, jpnfl 107 107 # if defined key_mpp_mpi 108 IF( (iil(jfl) >= (mig(nldi)-jpizoom+1)) .AND. (iil(jfl) <= (mig(nlei)-jpizoom+1)) .AND. &109 (ijl(jfl) >= (mjg(nldj)-jpjzoom+1)) .AND. (ijl(jfl) <= (mjg(nlej)-jpjzoom+1))) THEN110 iiloc(jfl) = iil(jfl) - (mig(1)-jpizoom+1) + 1111 ijloc(jfl) = ijl(jfl) - (mjg(1)-jpjzoom+1) + 1108 IF( iil(jfl) >= mig(nldi) .AND. iil(jfl) <= mig(nlei) .AND. & 109 ijl(jfl) >= mjg(nldj) .AND. ijl(jfl) <= mjg(nlej) ) THEN 110 iiloc(jfl) = iil(jfl) - mig(1) + 1 111 ijloc(jfl) = ijl(jfl) - mjg(1) + 1 112 112 # else 113 113 iiloc(jfl) = iil(jfl) -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/OPA_SRC/FLO/flodom.F90
r6140 r6596 234 234 235 235 ! Translation of this distances (in meter) in indexes 236 zgifl(jfl)= (iimfl(jfl)-0.5) + zdxab/e1u(iimfl(jfl)-1,ijmfl(jfl)) + (mig(1)- jpizoom)237 zgjfl(jfl)= (ijmfl(jfl)-0.5) + zdyad/e2v(iimfl(jfl),ijmfl(jfl)-1) + (mjg(1)- jpjzoom)236 zgifl(jfl)= (iimfl(jfl)-0.5) + zdxab/e1u(iimfl(jfl)-1,ijmfl(jfl)) + (mig(1)-1) 237 zgjfl(jfl)= (ijmfl(jfl)-0.5) + zdyad/e2v(iimfl(jfl),ijmfl(jfl)-1) + (mjg(1)-1) 238 238 zgkfl(jfl) = (( gdepw_n(iimfl(jfl),ijmfl(jfl),ikmfl(jfl)+1) - flzz(jfl) )* ikmfl(jfl)) & 239 239 & / ( gdepw_n(iimfl(jfl),ijmfl(jfl),ikmfl(jfl)+1) & -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/OPA_SRC/FLO/florst.F90
r6140 r6596 102 102 IF( lk_mpp ) THEN 103 103 DO jfl = 1, jpnfl 104 IF( (INT(tpifl(jfl)) >= (mig(nldi)-jpizoom+1)) .AND. &105 &(INT(tpifl(jfl)) <= (mig(nlei)-jpizoom+1)) .AND. &106 &(INT(tpjfl(jfl)) >= (mjg(nldj)-jpjzoom+1)) .AND. &107 &(INT(tpjfl(jfl)) <= (mjg(nlej)-jpjzoom+1)) ) THEN104 IF( (INT(tpifl(jfl)) >= mig(nldi)) .AND. & 105 &(INT(tpifl(jfl)) <= mig(nlei)) .AND. & 106 &(INT(tpjfl(jfl)) >= mjg(nldj)) .AND. & 107 &(INT(tpjfl(jfl)) <= mjg(nlej)) ) THEN 108 108 iperproc(narea) = iperproc(narea)+1 109 109 ENDIF -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/OPA_SRC/ICB/icbutl.F90
r5215 r6596 72 72 uo_e(:,:) = 0._wp ; uo_e(1:jpi, 1:jpj) = ssu_m(:,:) * umask(:,:,1) 73 73 vo_e(:,:) = 0._wp ; vo_e(1:jpi, 1:jpj) = ssv_m(:,:) * vmask(:,:,1) 74 ff_e(:,:) = 0._wp ; ff_e(1:jpi, 1:jpj) = ff 74 ff_e(:,:) = 0._wp ; ff_e(1:jpi, 1:jpj) = ff_f (:,:) 75 75 tt_e(:,:) = 0._wp ; tt_e(1:jpi, 1:jpj) = sst_m(:,:) 76 76 fr_e(:,:) = 0._wp ; fr_e(1:jpi, 1:jpj) = fr_i (:,:) -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/OPA_SRC/LBC/mppini_2.h90
r6140 r6596 109 109 CALL iom_getatt(inum, 'open_ocean_jstart', jstartrow ) ! -999 is returned if the attribute is not found 110 110 jstartrow = MAX(1,jstartrow) 111 CALL iom_get ( inum, jpdom_unknown, 'Bathy_level', zdta, kstart=(/jpizoom,jpjzoom+jstartrow-1/), kcount=(/jpiglo,jpjglo/) )111 CALL iom_get( inum, jpdom_unknown, 'Bathy_level', zdta, kstart=(/1,1+jstartrow-1/), kcount=(/jpiglo,jpjglo/) ) 112 112 ELSE 113 113 CALL iom_open ( 'bathy_meter.nc', inum ) ! Meter bathy in case of partial steps 114 114 IF ( ln_isfcav ) THEN 115 CALL iom_get ( inum, jpdom_unknown, 'Bathymetry_isf' , zdta, kstart=(/jpizoom,jpjzoom/), kcount=(/jpiglo,jpjglo/) )115 CALL iom_get( inum, jpdom_unknown, 'Bathymetry_isf' , zdta, kstart=(/1,1/), kcount=(/jpiglo,jpjglo/) ) 116 116 ELSE 117 117 ! Optionally use a file attribute (open_ocean_jstart) to set a start row for reading from the global file … … 119 119 CALL iom_getatt(inum, 'open_ocean_jstart', jstartrow ) ! -999 is returned if the attribute is not found 120 120 jstartrow = MAX(1,jstartrow) 121 CALL iom_get ( inum, jpdom_unknown, 'Bathymetry' , zdta, kstart=(/jpizoom,jpjzoom+jstartrow-1/) & 122 & , kcount=(/jpiglo,jpjglo/) ) 121 CALL iom_get( inum, jpdom_unknown, 'Bathymetry' , zdta, kstart=(/1,1+jstartrow-1/), kcount=(/jpiglo,jpjglo/) ) 123 122 ENDIF 124 123 ENDIF … … 129 128 IF ( ln_isfcav ) THEN 130 129 CALL iom_open ( 'bathy_meter.nc', inum ) ! Meter bathy in case of partial steps 131 CALL iom_get ( inum, jpdom_unknown, 'isf_draft' , zdtaisf, kstart=(/ jpizoom,jpjzoom/), kcount=(/jpiglo,jpjglo/) )130 CALL iom_get ( inum, jpdom_unknown, 'isf_draft' , zdtaisf, kstart=(/1,1/), kcount=(/jpiglo,jpjglo/) ) 132 131 END IF 133 132 CALL iom_close (inum) 134 133 135 ! land/sea mask over the global /zoomdomain134 ! land/sea mask over the global domain 136 135 137 136 imask(:,:)=1 -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/OPA_SRC/LDF/ldftra.F90
r6140 r6596 298 298 ! 299 299 INTEGER :: ji, jj, jk ! dummy loop indices 300 REAL(wp) :: zaht, zah t_min, z1_f20 ! local scalar300 REAL(wp) :: zaht, zahf, zaht_min, z1_f20 ! local scalar 301 301 !!---------------------------------------------------------------------- 302 302 ! … … 327 327 DO jj = 1, jpj 328 328 DO ji = 1, jpi 329 zaht = ( 1._wp - MIN( 1._wp , ABS( ff(ji,jj) * z1_f20 ) ) ) * ( rn_aht_0 - zaht_min ) 329 !!gm CAUTION : here we assume lat/lon grid in 20deg N/S band (like all ORCA cfg) 330 !! ==>>> The Coriolis value is identical for t- & u_points, and for v- and f-points 331 zaht = ( 1._wp - MIN( 1._wp , ABS( ff_t(ji,jj) * z1_f20 ) ) ) * ( rn_aht_0 - zaht_min ) 332 zahf = ( 1._wp - MIN( 1._wp , ABS( ff_f(ji,jj) * z1_f20 ) ) ) * ( rn_aht_0 - zaht_min ) 330 333 ahtu(ji,jj,1) = ( MAX( zaht_min, ahtu(ji,jj,1) ) + zaht ) * umask(ji,jj,1) ! min value zaht_min 331 ahtv(ji,jj,1) = ( MAX( zaht_min, ahtv(ji,jj,1) ) + zah t) * vmask(ji,jj,1) ! increase within 20S-20N334 ahtv(ji,jj,1) = ( MAX( zaht_min, ahtv(ji,jj,1) ) + zahf ) * vmask(ji,jj,1) ! increase within 20S-20N 332 335 END DO 333 336 END DO … … 568 571 DO jj = 2, jpjm1 569 572 DO ji = fs_2, fs_jpim1 ! vector opt. 570 zzaei = MIN( 1._wp, ABS( ff (ji,jj) * z1_f20 ) ) * zaeiw(ji,jj) ! tropical decrease573 zzaei = MIN( 1._wp, ABS( ff_t(ji,jj) * z1_f20 ) ) * zaeiw(ji,jj) ! tropical decrease 571 574 zaeiw(ji,jj) = MIN( zzaei , paei0 ) ! Max value = paei0 572 575 END DO -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_if.F90
r6140 r6596 134 134 ! # qns = zqrp -2(-4) watt/m2 if climatological ice and opa ice (zfr_obs=1, fr_i=1) 135 135 ! (-2=arctic, -4=antarctic) 136 zqi = -3. + SIGN( 1. e0, ff(ji,jj) )136 zqi = -3. + SIGN( 1._wp, ff_f(ji,jj) ) 137 137 qns(ji,jj) = ( ( 1.- zfr_obs ) * qns(ji,jj) & 138 138 & + zfr_obs * fr_i(ji,jj) * zqi ) * tmask(ji,jj,1) & -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/OPA_SRC/SBC/sbcisf.F90
r6140 r6596 536 536 END SUBROUTINE sbc_isf_cav 537 537 538 538 539 SUBROUTINE sbc_isf_gammats(pgt, pgs, pqhisf, pqwisf ) 539 540 !!---------------------------------------------------------------------- … … 635 636 636 637 !! compute eta* (stability parameter) 637 zetastar = 1._wp / ( SQRT(1._wp + MAX(zxsiN * zustar(ji,jj) / ( ABS(ff (ji,jj)) * zmols * zRc ), 0.0_wp)))638 zetastar = 1._wp / ( SQRT(1._wp + MAX(zxsiN * zustar(ji,jj) / ( ABS(ff_f(ji,jj)) * zmols * zRc ), 0._wp))) 638 639 639 640 !! compute the sublayer thickness … … 641 642 642 643 !! compute gamma turb 643 zgturb = 1._wp / vkarmn * LOG(zustar(ji,jj) * zxsiN * zetastar * zetastar / ( ABS(ff (ji,jj)) * zhnu )) &644 zgturb = 1._wp / vkarmn * LOG(zustar(ji,jj) * zxsiN * zetastar * zetastar / ( ABS(ff_f(ji,jj)) * zhnu )) & 644 645 & + 1._wp / ( 2 * zxsiN * zetastar ) - 1._wp / vkarmn 645 646 -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_mle.F90
r6140 r6596 329 329 DO jj = 2, jpj ! "coriolis+ time^-1" at u- & v-points 330 330 DO ji = fs_2, jpi ! vector opt. 331 zfu = ( ff (ji,jj) + ff(ji,jj-1) ) * 0.5_wp332 zfv = ( ff (ji,jj) + ff(ji-1,jj) ) * 0.5_wp331 zfu = ( ff_f(ji,jj) + ff_f(ji,jj-1) ) * 0.5_wp 332 zfv = ( ff_f(ji,jj) + ff_f(ji-1,jj) ) * 0.5_wp 333 333 rfu(ji,jj) = SQRT( zfu * zfu + z1_t2 ) 334 334 rfv(ji,jj) = SQRT( zfv * zfv + z1_t2 ) … … 347 347 ! 348 348 z1_t2 = 1._wp / ( rn_time * rn_time ) 349 r1_ft(:,:) = 2._wp * omega * SIN( rad * gphit(:,:) ) 350 r1_ft(:,:) = 1._wp / SQRT( r1_ft(:,:) * r1_ft(:,:) + z1_t2 ) 349 r1_ft(:,:) = 1._wp / SQRT( ff_t(:,:) * ff_t(:,:) + z1_t2 ) 351 350 ! 352 351 ENDIF -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/OPA_SRC/nemogcm.F90
r6595 r6596 239 239 INTEGER :: ios, inum ! - - 240 240 REAL(wp) :: ziglo, zjglo, zkglo ! local scalars 241 CHARACTER(len=120), DIMENSION(16) :: cltxt, cltxt2, clnam 241 CHARACTER(len=120), DIMENSION(16) :: cltxt, cltxt2, clnam, clbug 242 242 ! 243 243 NAMELIST/namctl/ ln_ctl , nn_print, nn_ictls, nn_ictle, & 244 244 & nn_isplt, nn_jsplt, nn_jctls, nn_jctle, & 245 245 & nn_timing, nn_diacfl 246 NAMELIST/namcfg/ ln_read_cfg, cp_cfg, cp_cfz, jp_cfg, jpidta, jpjdta, jpkdta, jpiglo, jpjglo,&247 & jp izoom, jpjzoom, jperio, ln_use_jattr246 NAMELIST/namcfg/ ln_read_cfg, cp_cfg, cp_cfz, jp_cfg, & 247 & jperio, ln_use_jattr 248 248 !!---------------------------------------------------------------------- 249 249 ! 250 250 cltxt = '' 251 251 cltxt2 = '' 252 clnam = '' 252 clnam = '' 253 clbug = '' 253 254 cxios_context = 'nemo' 254 255 ! … … 257 258 CALL ctl_opn( numnam_cfg, 'namelist_cfg', 'OLD', 'FORMATTED', 'SEQUENTIAL', -1, 6, .FALSE. ) 258 259 ! 260 261 !!gm WRITE(clbug(1),*) ' before namelist / namctl read nstop', nstop 262 259 263 REWIND( numnam_ref ) ! Namelist namctl in reference namelist : Control prints 260 264 READ ( numnam_ref, namctl, IOSTAT = ios, ERR = 901 ) … … 265 269 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namctl in configuration namelist', .TRUE. ) 266 270 271 272 !!gm WRITE(clbug(2),*) ' before namelist namcfg read nstop', nstop 273 267 274 ! 268 275 REWIND( numnam_ref ) ! Namelist namcfg in reference namelist … … 273 280 READ ( numnam_cfg, namcfg, IOSTAT = ios, ERR = 904 ) 274 281 904 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namcfg in configuration namelist', .TRUE. ) 282 283 !!gm WRITE(clbug(3),*) ' after namelist namcfg read nstop', nstop 275 284 276 285 ! !--------------------------! … … 291 300 jpk = jpkglo 292 301 jpidta = jpiglo !!gm jpidta, jpjdta : to be suppressed 293 jpjdta = jpjglo !!gm together with jpizoom, jpjzoom and all associated variables... 302 jpjdta = jpjglo !!gm 303 jpkdta = jpkglo 294 304 ! 295 305 #if defined key_agrif … … 301 311 jpidta = jpiglo 302 312 jpjdta = jpjglo 303 jpizoom = 1304 jpjzoom = 1305 313 nperio = 0 306 314 jperio = 0 … … 338 346 ENDIF 339 347 #endif 348 340 349 narea = narea + 1 ! mynode return the rank of proc (0 --> jpnij -1 ) 341 350 … … 376 385 jpj = ( jpjglo -2*jprecj + (jpnj-1) ) / jpnj + 2*jprecj ! second dim. 377 386 #endif 378 ENDIF 379 jpk = jpkdta ! third dim 387 ENDIF 388 389 jpk = jpkdta ! third dim 390 380 391 #if defined key_agrif 381 382 383 384 385 #endif 386 387 388 389 392 ! simple trick to use same vertical grid as parent but different number of levels: 393 ! Save maximum number of levels in jpkdta, then define all vertical grids with this number. 394 ! Suppress once vertical online interpolation is ok 395 IF(.NOT.Agrif_Root()) jpkdta = Agrif_Parent( jpkdta ) 396 #endif 397 jpim1 = jpi-1 ! inner domain indices 398 jpjm1 = jpj-1 ! " " 399 jpkm1 = jpk-1 ! " " 400 jpij = jpi*jpj ! jpi x j 390 401 391 402 IF(lwp) THEN ! open listing units … … 393 404 CALL ctl_opn( numout, 'ocean.output', 'REPLACE', 'FORMATTED', 'SEQUENTIAL', -1, 6, .FALSE., narea ) 394 405 ! 406 407 DO ji = 1, SIZE(clbug) 408 IF( TRIM(clbug (ji)) /= '' ) WRITE(numout,*) clbug(ji) ! bug print 409 END DO 410 WRITE(numout,*) 411 412 413 414 395 415 WRITE(numout,*) 396 416 WRITE(numout,*) ' CNRS - NERC - Met OFFICE - MERCATOR-ocean - INGV - CMCC' … … 416 436 ! allocate arrays 417 437 CALL nemo_alloc() 438 439 WRITE(numout,*) ' -after alloc-- nstop', nstop 418 440 419 441 ! !-------------------------------! … … 581 603 WRITE(numout,*) ' configuration zoom name cp_cfz = ', TRIM(cp_cfz) 582 604 WRITE(numout,*) ' configuration resolution jp_cfg = ', jp_cfg 583 WRITE(numout,*) ' 1st lateral dimension ( >= jpiglo ) jpidta = ', jpidta584 WRITE(numout,*) ' 2nd " " ( >= jpjglo ) jpjdta = ', jpjdta585 WRITE(numout,*) ' 3nd " " jpkdta = ', jpkdta586 WRITE(numout,*) ' 1st dimension of global domain in i jpiglo = ', jpiglo587 WRITE(numout,*) ' 2nd - - in j jpjglo = ', jpjglo588 WRITE(numout,*) ' left bottom i index of the zoom (in data domain) jpizoom = ', jpizoom589 WRITE(numout,*) ' left bottom j index of the zoom (in data domain) jpizoom = ', jpjzoom590 605 WRITE(numout,*) ' lateral cond. type (between 0 and 6) jperio = ', jperio 591 606 WRITE(numout,*) ' use file attribute if exists as i/p j-start ln_use_jattr = ', ln_use_jattr -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/OPA_SRC/par_oce.F90
r6595 r6596 33 33 INTEGER :: jp_cfg !: resolution of the configuration 34 34 35 ! data size !!! * size of all input files * 36 INTEGER :: jpidta !: 1st lateral dimension ( >= jpi ) 37 INTEGER :: jpjdta !: 2nd " " ( >= jpj ) 38 INTEGER :: jpkdta !: number of levels ( >= jpk ) 35 !!--------------------------------------------------------------------- 36 !! Domain Matrix size 37 !!--------------------------------------------------------------------- 39 38 40 ! global or zoom domain size !!! * computational domain * 39 !!gm TO BE SUPRESSED 40 ! data size !!! * size of all input files * 41 INTEGER :: jpidta !: 1st lateral dimension 42 INTEGER :: jpjdta !: 2nd " " 43 INTEGER :: jpkdta !: number of levels 44 !!gm END 45 46 ! global domain size !!! * total computational domain * 41 47 INTEGER :: jpiglo !: 1st dimension of global domain --> i-direction 42 48 INTEGER :: jpjglo !: 2nd - - --> j-direction 43 49 INTEGER :: jpkglo !: 3nd - - --> k levels 44 50 45 ! zoom starting position 46 INTEGER :: jpizoom !: left bottom (i,j) indices of the zoom 47 INTEGER :: jpjzoom !: in data domain indices 51 #if defined key_agrif 52 53 !!gm BUG ? I'm surprised by the calculation below of nbcellsx and nbcellsy before jpiglo,jpjglo 54 !!gm has been assigned to a value.... 55 !!gm 56 57 ! global domain size for AGRIF !!! * total AGRIF computational domain * 58 INTEGER, PUBLIC, PARAMETER :: nbghostcells = 1 !: number of ghost cells 59 INTEGER, PUBLIC :: nbcellsx = jpiglo - 2 - 2*nbghostcells !: number of cells in i-direction 60 INTEGER, PUBLIC :: nbcellsy = jpjglo - 2 - 2*nbghostcells !: number of cells in j-direction 61 #endif 62 63 ! local domain size !!! * local computational domain * 64 INTEGER, PUBLIC :: jpi ! = ( jpiglo-2*jpreci + (jpni-1) ) / jpni + 2*jpreci !: first dimension 65 INTEGER, PUBLIC :: jpj ! = ( jpjglo-2*jprecj + (jpnj-1) ) / jpnj + 2*jprecj !: second dimension 66 INTEGER, PUBLIC :: jpk ! = jpkdta 67 INTEGER, PUBLIC :: jpim1 ! = jpi-1 !: inner domain indices 68 INTEGER, PUBLIC :: jpjm1 ! = jpj-1 !: - - - 69 INTEGER, PUBLIC :: jpkm1 ! = jpk-1 !: - - - 70 INTEGER, PUBLIC :: jpij ! = jpi*jpj !: jpi x jpj 71 48 72 49 73 ! Domain characteristics 50 INTEGER :: jperio 51 ! 52 ! 53 ! 54 ! 55 ! 74 INTEGER :: jperio !: lateral cond. type (between 0 and 6) 75 ! ! = 0 closed ; = 1 cyclic East-West 76 ! ! = 2 equatorial symmetric ; = 3 North fold T-point pivot 77 ! ! = 4 cyclic East-West AND North fold T-point pivot 78 ! ! = 5 North fold F-point pivot 79 ! ! = 6 cyclic East-West AND North fold F-point pivot 56 80 57 81 ! Input file read offset 58 LOGICAL :: ln_use_jattr 59 60 61 62 82 LOGICAL :: ln_use_jattr !: Use file global attribute: open_ocean_jstart to determine start j-row 83 ! when reading input from those netcdf files that have the 84 ! attribute defined. This is designed to enable input files associated 85 ! with the extended grids used in the under ice shelf configurations to 86 ! be used without redundant rows when the ice shelves are not in use. 63 87 64 88 !! Values set to pp_not_used indicates that this parameter is not used in THIS config. … … 66 90 REAL(wp) :: pp_not_used = 999999._wp !: vertical grid parameter 67 91 REAL(wp) :: pp_to_be_computed = 999999._wp !: - - - 68 69 70 92 71 93 … … 77 99 INTEGER, PUBLIC, PARAMETER :: jp_sal = 2 !: indice for salinity 78 100 79 !!---------------------------------------------------------------------80 !! Domain Matrix size (if AGRIF, they are not all parameters)81 !!---------------------------------------------------------------------82 #if defined key_agrif83 INTEGER, PUBLIC, PARAMETER :: nbghostcells = 1 !: number of ghost cells84 INTEGER, PUBLIC :: nbcellsx = jpiglo - 2 - 2*nbghostcells !: number of cells in i-direction85 INTEGER, PUBLIC :: nbcellsy = jpjglo - 2 - 2*nbghostcells !: number of cells in j-direction86 !87 #endif88 INTEGER, PUBLIC :: jpi ! = ( jpiglo-2*jpreci + (jpni-1) ) / jpni + 2*jpreci !: first dimension89 INTEGER, PUBLIC :: jpj ! = ( jpjglo-2*jprecj + (jpnj-1) ) / jpnj + 2*jprecj !: second dimension90 INTEGER, PUBLIC :: jpk ! = jpkdta91 INTEGER, PUBLIC :: jpim1 ! = jpi-1 !: inner domain indices92 INTEGER, PUBLIC :: jpjm1 ! = jpj-1 !: - - -93 INTEGER, PUBLIC :: jpkm1 ! = jpk-1 !: - - -94 INTEGER, PUBLIC :: jpij ! = jpi*jpj !: jpi x jpj95 101 96 102 !!---------------------------------------------------------------------- -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/OPA_SRC/usrdef.F90
r6595 r6596 87 87 SUBROUTINE usr_def_hgr( plamt , plamu , plamv , plamf , & ! geographic position (required) 88 88 & pphit , pphiu , pphiv , pphif , & ! 89 & kff , pff ,& ! Coriolis parameter (if domain not on the sphere)89 & kff , pff_f , pff_t , & ! Coriolis parameter (if domain not on the sphere) 90 90 & pe1t , pe1u , pe1v , pe1f , & ! scale factors (required) 91 91 & pe2t , pe2u , pe2v , pe2f , & ! … … 112 112 REAL(wp), DIMENSION(:,:), INTENT(out) :: pphit, pphiu, pphiv, pphif ! latitude outputs [degrees] 113 113 INTEGER , INTENT(out) :: kff ! =1 Coriolis parameter computed here, =0 otherwise 114 REAL(wp), DIMENSION(:,:), INTENT(out) :: pff 114 REAL(wp), DIMENSION(:,:), INTENT(out) :: pff_f, pff_t ! Coriolis factor at f-point [1/s] 115 115 REAL(wp), DIMENSION(:,:), INTENT(out) :: pe1t, pe1u, pe1v, pe1f ! i-scale factors [m] 116 116 REAL(wp), DIMENSION(:,:), INTENT(out) :: pe2t, pe2u, pe2v, pe2f ! j-scale factors [m] … … 130 130 IF(lwp) WRITE(numout,*) ' beta-plane with regular grid-spacing and rotated domain (GYRE configuration)' 131 131 ! 132 ! !== grid point position ==!133 ! 134 zlam1 = -85._wp ! position of gridpoint (i,j) = (1,jpjglo)132 ! !== grid point position ==! 133 ! 134 zlam1 = -85._wp ! position of gridpoint (i,j) = (1,jpjglo) 135 135 zphi1 = 29._wp 136 136 ! 137 ze1 = 106000. / REAL( nn_GYRE , wp ) ! gridspacing in meters138 ! 139 zsin_alpha = - SQRT( 2._wp ) * 0.5_wp ! angle: 45 degrees137 ze1 = 106000._wp / REAL( nn_GYRE , wp ) ! gridspacing in meters 138 ! 139 zsin_alpha = - SQRT( 2._wp ) * 0.5_wp ! angle: 45 degrees 140 140 zcos_alpha = SQRT( 2._wp ) * 0.5_wp 141 141 ze1deg = ze1 / (ra * rad) … … 179 179 END DO 180 180 ! 181 ! !== Horizontal scale factors ==! (in meters)181 ! !== Horizontal scale factors ==! (in meters) 182 182 ! 183 ! ! constant grid spacing183 ! ! constant grid spacing 184 184 pe1t(:,:) = ze1 ; pe2t(:,:) = ze1 185 185 pe1u(:,:) = ze1 ; pe2u(:,:) = ze1 … … 187 187 pe1f(:,:) = ze1 ; pe2f(:,:) = ze1 188 188 ! 189 ! ! NO reduction of grid size in some straits190 ke1e2u_v = 0 ! ==>> u_ & v_surfaces will be computed in dom_ghr routine191 ! 192 ! 193 ! !== Coriolis parameter ==!189 ! ! NO reduction of grid size in some straits 190 ke1e2u_v = 0 ! ==>> u_ & v_surfaces will be computed in dom_ghr routine 191 ! 192 ! 193 ! !== Coriolis parameter ==! 194 194 kff = 1 ! indicate not to compute ff afterward 195 195 ! … … 200 200 zf0 = 2. * omega * SIN( rad * zphi0 ) ! compute f0 1st point south 201 201 ! 202 pff(:,:) = ( zf0 + zbeta * ABS( pphif(:,:) - zphi0 ) * rad * ra ) ! f = f0 +beta* y ( y=0 at south) 202 pff_f(:,:) = ( zf0 + zbeta * ABS( pphif(:,:) - zphi0 ) * rad * ra ) ! f = f0 +beta* y ( y=0 at south) 203 pff_t(:,:) = ( zf0 + zbeta * ABS( pphit(:,:) - zphi0 ) * rad * ra ) ! f = f0 +beta* y ( y=0 at south) 203 204 ! 204 205 IF(lwp) WRITE(numout,*) ' beta-plane used. beta = ', zbeta, ' 1/(s.m)' -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/SAO_SRC/nemogcm.F90
r5600 r6596 119 119 INTEGER :: ilocal_comm ! local integer 120 120 INTEGER :: ios 121 CHARACTER(len=80), DIMENSION(16) :: cltxt 121 !!gm CHARACTER(len=80), DIMENSION(16) :: cltxt 122 CHARACTER(len=80), DIMENSION(-10:16) :: cltxt 122 123 ! 123 124 NAMELIST/namctl/ ln_ctl, nn_print, nn_ictls, nn_ictle, & 124 125 & nn_isplt, nn_jsplt, nn_jctls, nn_jctle, & 125 126 & nn_bench, nn_timing 126 NAMELIST/namcfg/ cp_cfg, cp_cfz, jp_cfg, jpidta, jpjdta, jpkdta, jpiglo, jpjglo,&127 & jp izoom, jpjzoom, jperio, ln_use_jattr127 NAMELIST/namcfg/ cp_cfg, cp_cfz, jp_cfg, & 128 & jperio, ln_use_jattr 128 129 !!---------------------------------------------------------------------- 129 130 ! … … 161 162 jpidta = jpiglo 162 163 jpjdta = jpjglo 163 jpizoom = 1164 jpjzoom = 1165 164 nperio = 0 166 165 jperio = 0 … … 333 332 WRITE(numout,*) ' configuration zoom name cp_cfz = ', TRIM(cp_cfz) 334 333 WRITE(numout,*) ' configuration resolution jp_cfg = ', jp_cfg 335 WRITE(numout,*) ' 1st lateral dimension ( >= jpi ) jpidta = ', jpidta336 WRITE(numout,*) ' 2nd " " ( >= jpj ) jpjdta = ', jpjdta337 WRITE(numout,*) ' 3nd " " jpkdta = ', jpkdta338 WRITE(numout,*) ' 1st dimension of global domain in i jpiglo = ', jpiglo339 WRITE(numout,*) ' 2nd - - in j jpjglo = ', jpjglo340 WRITE(numout,*) ' left bottom i index of the zoom (in data domain) jpizoom = ', jpizoom341 WRITE(numout,*) ' left bottom j index of the zoom (in data domain) jpizoom = ', jpjzoom342 334 WRITE(numout,*) ' lateral cond. type (between 0 and 6) jperio = ', jperio 343 335 WRITE(numout,*) ' use file attribute if exists as i/p j-start ln_use_jattr = ', ln_use_jattr … … 382 374 ENDIF 383 375 ! 384 IF( nbench == 1 ) THEN ! Benchmark385 SELECT CASE ( cp_cfg )386 CASE ( 'gyre' ) ; CALL ctl_warn( ' The Benchmark is activated ' )387 CASE DEFAULT ; CALL ctl_stop( ' The Benchmark is based on the GYRE configuration:', &388 & ' cp_cfg = "gyre" in namelist &namcfg or set nbench = 0' )389 END SELECT390 ENDIF391 !392 376 IF( 1_wp /= SIGN(1._wp,-0._wp) ) CALL ctl_stop( 'nemo_ctl: The intrinsec SIGN function follows ', & 393 377 & 'f2003 standard. ' , & -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/SAS_SRC/nemogcm.F90
r6165 r6596 185 185 & nn_isplt, nn_jsplt, nn_jctls, nn_jctle, & 186 186 & nn_bench, nn_timing, nn_diacfl 187 NAMELIST/namcfg/ cp_cfg, cp_cfz, jp_cfg, jpidta, jpjdta, jpkdta, jpiglo, jpjglo,&188 & jp izoom, jpjzoom, jperio, ln_use_jattr187 NAMELIST/namcfg/ cp_cfg, cp_cfz, jp_cfg, & 188 & jperio, ln_use_jattr 189 189 !!---------------------------------------------------------------------- 190 190 ! … … 230 230 jpidta = jpiglo 231 231 jpjdta = jpjglo 232 jpizoom = 1233 jpjzoom = 1234 232 nperio = 0 235 233 jperio = 0 … … 414 412 WRITE(numout,*) ' configuration zoom name cp_cfz = ', TRIM(cp_cfz) 415 413 WRITE(numout,*) ' configuration resolution jp_cfg = ', jp_cfg 416 WRITE(numout,*) ' 1st lateral dimension ( >= jpi ) jpidta = ', jpidta417 WRITE(numout,*) ' 2nd " " ( >= jpj ) jpjdta = ', jpjdta418 WRITE(numout,*) ' 3nd " " jpkdta = ', jpkdta419 WRITE(numout,*) ' 1st dimension of global domain in i jpiglo = ', jpiglo420 WRITE(numout,*) ' 2nd - - in j jpjglo = ', jpjglo421 WRITE(numout,*) ' left bottom i index of the zoom (in data domain) jpizoom = ', jpizoom422 WRITE(numout,*) ' left bottom j index of the zoom (in data domain) jpizoom = ', jpjzoom423 414 WRITE(numout,*) ' lateral cond. type (between 0 and 6) jperio = ', jperio 424 415 WRITE(numout,*) ' use file attribute if exists as i/p j-start ln_use_jattr = ', ln_use_jattr … … 463 454 ENDIF 464 455 ! 465 IF( nbench == 1 ) THEN ! Benchmark466 SELECT CASE ( cp_cfg )467 CASE ( 'gyre' ) ; CALL ctl_warn( ' The Benchmark is activated ' )468 CASE DEFAULT ; CALL ctl_stop( ' The Benchmark is based on the GYRE configuration:', &469 & ' cp_cfg="gyre" in namelist &namcfg or set nbench = 0' )470 END SELECT471 ENDIF472 !473 456 IF( 1_wp /= SIGN(1._wp,-0._wp) ) CALL ctl_stop( 'nemo_ctl: The intrinsec SIGN function follows ', & 474 457 & 'f2003 standard. ' , & -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/TOP_SRC/TRP/trcdmp.F90
r6309 r6596 201 201 ENDIF 202 202 ! 203 IF( lzoom .AND. .NOT.lk_c1d ) nn_zdmp_tr = 0 ! restoring to climatology at closed north or south boundaries204 203 SELECT CASE ( nn_zdmp_tr ) 205 204 CASE ( 0 ) ; IF(lwp) WRITE(numout,*) ' tracer damping throughout the water column' -
branches/2016/dev_r6409_SIMPLIF_2_usrdef/NEMOGCM/NEMO/TOP_SRC/TRP/trdmxl_trc.F90
r6140 r6596 428 428 ENDIF 429 429 430 IF ( cp_cfg .NE. 'gyre' ) THEN ! other than GYRE configuration 431 ! GYRE : for diagnostic fields, are needed if cyclic B.C. are present, but not for purely MPI comm. 432 ! therefore we do not call lbc_lnk in GYRE config. (closed basin, no cyclic B.C.) 430 !!gm Test removed, nothing specific to a configuration should survive out of usrdef modules 431 !!gm IF ( cp_cfg .NE. 'gyre' ) THEN ! other than GYRE configuration 432 !!gm ! GYRE : for diagnostic fields, are needed if cyclic B.C. are present, but not for purely MPI comm. 433 !!gm ! therefore we do not call lbc_lnk in GYRE config. (closed basin, no cyclic B.C.) 433 434 DO jn = 1, jptra 434 435 IF( ln_trdtrc(jn) ) THEN … … 438 439 ENDIF 439 440 END DO 440 ENDIF 441 !!gm ENDIF 442 441 443 ! ====================================================================== 442 444 ! II. Cumulate the trends over the analysis window
Note: See TracChangeset
for help on using the changeset viewer.