Changeset 900


Ignore:
Timestamp:
2008-04-22T20:13:41+02:00 (13 years ago)
Author:
rblod
Message:

Update 1D configuration according to SBC and LIM3, see ticket #117

Location:
trunk/NEMO
Files:
13 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/C1D_SRC/c1d.F90

    r899 r900  
    1 MODULE ini1d 
     1MODULE c1d 
    22   !!====================================================================== 
    3    !!                     ***  MODULE  ini1D  *** 
    4    !! Ocean state   :  1D initialization 
     3   !!                     ***  MODULE  c1d  *** 
     4   !! Ocean domain  :  1D configuration 
    55   !!===================================================================== 
    6 #if defined key_c1d 
     6   !! History :   2.0  !  2004-09  (C. Ethe)  Original code 
     7   !!             3.0  !  2008-04 (G. Madec)  adaptation to SBC 
    78   !!---------------------------------------------------------------------- 
    8    !!   'key_cf1d'               1D Configuration 
    9    !!---------------------------------------------------------------------- 
    10    !!   init_1d   : initial mask 
    11    !!---------------------------------------------------------------------- 
    12    !! * Modules used 
    13    USE dom_oce         ! ocean space and time domain  
    14    USE phycst 
    15    USE in_out_manager 
    169 
    1710   IMPLICIT NONE 
    1811   PRIVATE 
    1912 
    20    !! * Share Module variables 
    21    LOGICAL, PUBLIC, PARAMETER ::  lk_c1d = .TRUE.       !: 1D flag 
    22  
    23    !! * Routine accessibility 
    24    PUBLIC init_1d   ! routine called by OPA.F90 
     13#if defined key_c1d 
     14   LOGICAL, PUBLIC, PARAMETER ::   lk_c1d = .TRUE.    !: 1D config. flag activated 
     15#else 
     16   LOGICAL, PUBLIC, PARAMETER ::   lk_c1d = .FALSE.   !: 1D config. flag de-activated 
     17#endif 
    2518 
    2619   !!---------------------------------------------------------------------- 
    27    !!   OPA 9.0 , LOCEAN-IPSL (2005)  
    28    !! $Header$  
    29    !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt  
    30    !!---------------------------------------------------------------------- 
    31  
    32 CONTAINS 
    33  
    34    SUBROUTINE init_1d 
    35       !!---------------------------------------------------------------------- 
    36       !!                   ***  ROUTINE init_1d  *** 
    37       !!  
    38       !! ** Purpose :   Re-Initialization of masks on 1D configuration 
    39       !! 
    40       !! ** Method  : 
    41       !! 
    42       !! History : 
    43       !!   9.0  !  04-09  (C. Ethe) 1D configuration 
    44       !!---------------------------------------------------------------------- 
    45       !! * Local declarations 
    46       !!---------------------------------------------------------------------- 
    47  
    48       IF(lwp) WRITE(numout,*) 
    49       IF(lwp) WRITE(numout,*) 'init_1d :  masks on 1D configuration' 
    50       IF(lwp) WRITE(numout,*) '~~~~~~~~~' 
    51  
    52       ! set umask and vmask equal tmask in 1D configuration 
    53       umask(:,:,:) = tmask(:,:,:) 
    54       vmask(:,:,:) = tmask(:,:,:)      
    55  
    56    END SUBROUTINE init_1d 
    57  
    58 #else 
    59    !!---------------------------------------------------------------------- 
    60    !!   Default key                                     NO 1D Config 
    61    !!---------------------------------------------------------------------- 
    62    LOGICAL , PUBLIC, PARAMETER ::   lk_c1d = .FALSE.    !: internal damping flag 
    63 CONTAINS 
    64    SUBROUTINE init_1d       ! Empty routine 
    65  
    66    END SUBROUTINE init_1d 
    67 #endif 
    68  
     20   !! NEMO/C1D 3.0 , LOCEAN-IPSL (2008)  
     21   !! $Id:$  
     22   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
    6923   !!===================================================================== 
    70 END MODULE ini1d 
     24END MODULE c1d 
  • trunk/NEMO/C1D_SRC/diawri_c1d.F90

    r899 r900  
    1 MODULE diawri1d 
     1MODULE diawri_c1d 
    22   !!====================================================================== 
    3    !!                     ***  MODULE  diawri1d  *** 
     3   !!                     ***  MODULE  diawri_c1d  *** 
    44   !! Ocean diagnostics :  write ocean output files 
    55   !!===================================================================== 
     6   !! History :   2.0  !  2004-10  (C. Ethe)  1D Configuration 
     7   !!             3.0  !  2008-04  (G. Madec)  adaptation to SBC 
     8   !!---------------------------------------------------------------------- 
    69#if defined key_c1d 
    710   !!---------------------------------------------------------------------- 
    8    !!   'key_c1d'               1D Configuration 
     11   !!   'key_c1d'                                          1D Configuration 
    912   !!----------------------------------------------------------------------   
    10    !!---------------------------------------------------------------------- 
    11    !! * Modules used 
     13   !!   dia_wri_c1d       : create the standart NetCDF output files 
     14   !!---------------------------------------------------------------------- 
    1215   USE oce             ! ocean dynamics and tracers  
    1316   USE dom_oce         ! ocean space and time domain 
     
    1518   USE sbc_oce         ! surface boundary condition: ocean 
    1619   USE sbc_ice         ! surface boundary condition: ice 
     20   USE sbcmod          ! surface Boundary Codition 
     21   USE sbcssr          ! surface boundary condition: restauring to SSS and or SST 
    1722   USE zdftke          ! TKE vertical mixing 
    1823   USE zdfkpp          ! KPP vertical mixing 
     
    2631   USE diawri 
    2732   USE zdfddm          ! vertical  physics: double diffusion 
    28    USE diahth          ! thermocline diagnostics 
    2933   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    3034   USE in_out_manager  ! I/O manager 
     35   USE ioipsl 
    3136 
    3237   IMPLICIT NONE 
    3338   PRIVATE 
    3439 
    35    !! * Accessibility 
    36    PUBLIC dia_wri_1d                 ! routines called by step.F90 
    37    !! * Module variables 
    38    INTEGER ::   & 
    39       nid_T, nz_T, nh_T, ndim_T, ndim_hT,      &   ! grid_T file 
    40       ndex(1)                                      ! ??? 
    41    INTEGER, DIMENSION(jpi*jpj) ::   & 
    42       ndex_hT 
    43    INTEGER, DIMENSION(jpi*jpj*jpk) ::   & 
    44       ndex_T 
     40   PUBLIC dia_wri_c1d                 ! routines called by step.F90 
     41 
     42   INTEGER ::   nid_T, nz_T, nh_T, ndim_T, ndim_hT, ndex(1)   ! grid_T file 
     43   INTEGER, DIMENSION(jpi*jpj)     ::   ndex_hT 
     44   INTEGER, DIMENSION(jpi*jpj*jpk) ::   ndex_T 
    4545 
    4646   !! * Substitutions 
    4747#  include "zdfddm_substitute.h90" 
    4848   !!---------------------------------------------------------------------- 
    49    !!   OPA 9.0 , LOCEAN-IPSL  (2005) 
     49   !! NEMO/C1D 3.0 , LOCEAN-IPSL  (2008) 
    5050   !! $Id$ 
    51    !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt 
     51   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
    5252   !!---------------------------------------------------------------------- 
    5353 
    5454CONTAINS 
    55    !!---------------------------------------------------------------------- 
    56    !!   Default option                                   NetCDF output file 
    57    !!---------------------------------------------------------------------- 
    58    !!   dia_wri_1d       : create the standart NetCDF output files 
    59    !!   dia_wri_state_1d : create an output NetCDF file for a single 
    60    !!                      instantaeous ocean state and forcing fields 
    61    !!---------------------------------------------------------------------- 
    62  
    63    SUBROUTINE dia_wri_1d( kt, kindic ) 
     55 
     56   SUBROUTINE dia_wri_c1d( kt, kindic ) 
    6457      !!--------------------------------------------------------------------- 
    65       !!                  ***  ROUTINE dia_wri_1d  *** 
     58      !!                  ***  ROUTINE dia_wri_c1d  *** 
    6659      !!                    
    6760      !! ** Purpose :   Standard output of opa: dynamics and tracer fields  
     
    7568      !!      IF kindic =0, time step loop 
    7669      !!      IF kindic >0, output of fields before the time step loop 
    77       !! 
    78       !! History : 
    79       !!        !  91-03  (M.-A. Foujols)  Original code 
    80       !!        !  91-11  (G. Madec) 
    81       !!        !  92-06  (M. Imbard)  correction restart file 
    82       !!        !  92-07  (M. Imbard)  split into diawri and rstwri 
    83       !!        !  93-03  (M. Imbard)  suppress writibm 
    84       !!        !  98-01  (C. Levy)  NETCDF format using ioipsl INTERFACE 
    85       !!        !  99-02  (E. Guilyardi)  name of netCDF files + variables 
    86       !!   8.5  !  02-09  (G. Madec)  F90: Free form and module 
    87       !!   9.0  !  04-10  (C. Ethe)   1D Configuration 
    88       !!    "   !  05-11  (V. Garnier) Surface pressure gradient organization 
    8970      !!---------------------------------------------------------------------- 
    90       !! * Modules used 
    91       USE ioipsl 
    92  
    93       !! * Arguments 
    9471      INTEGER, INTENT( in ) ::   kt      ! ocean time-step index 
    9572      INTEGER, INTENT( in ) ::   kindic  !  
    96  
    97       !! * Local declarations 
    98       LOGICAL ::   ll_print = .FALSE.    ! =T print and flush numout 
    99       CHARACTER (len=40) ::           & 
    100          clhstnam, clop, clmx            ! temporary names 
    101       INTEGER ::   inum = 11             ! temporary logical unit 
    102       INTEGER ::   & 
    103          ji, jj, ik                      ! dummy loop indices 
    104       INTEGER ::   & 
    105          iimi, iima, ipk, it,         &  ! temporary integers 
    106          ijmi, ijma                      !    "          " 
    107       REAL(wp) ::   & 
    108          zsto, zout, zmax,            &  ! temporary scalars 
    109          zjulian, zdt                    !    "         " 
    110       REAL(wp), DIMENSION(jpi,jpj) :: & 
    111          zw2d                            ! temporary workspace 
     73      !! 
     74      LOGICAL ::   ll_print = .FALSE.                ! =T print and flush numout 
     75      CHARACTER (len=40) ::   clhstnam, clop, clmx   ! temporary names 
     76      INTEGER ::   inum = 11                         ! temporary logical unit 
     77      INTEGER ::   ji, jj, ik                        ! dummy loop indices 
     78      INTEGER ::   iimi, iima, ipk, it, ijmi, ijma   ! temporary integers 
     79      REAL(wp) ::   zsto, zout, zmax, zjulian, zdt   ! temporary scalars 
     80      REAL(wp), DIMENSION(jpi,jpj) ::   zw2d         ! temporary workspace 
    11281      !!---------------------------------------------------------------------- 
    11382       
     
    146115      ! ----------------------------------------------------------------- 
    147116 
    148       IF(ll_print) WRITE(numout,*) 'dia_wri_1d kt = ', kt, ' kindic ', kindic 
     117      IF(ll_print) WRITE(numout,*) 'dia_wri_c1d kt = ', kt, ' kindic ', kindic 
    149118 
    150119      IF( kt == nit000 ) THEN 
     
    192161         CALL histdef( nid_T, "sosaline", "Sea Surface Salinity"               , "PSU"    ,   &  ! sss 
    193162            &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout ) 
    194  
    195 !!$#if ! defined key_dynspg_rl && ( defined key_lim2 || defined key_lim2 ) 
    196 !!$         ! sowaflup = sowaflep + sorunoff + sowafldp + a term associated to 
    197 !!$         !    internal damping to Levitus that can be diagnosed from others 
    198 !!$         ! sowaflcd = sowaflep + sorunoff + sowafldp + iowaflup 
    199 !!$         CALL histdef( nid_T, "iowaflup", "Ice=>ocean net freshwater"          , "kg/m2/s",   &  ! fsalt 
    200 !!$            &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout ) 
    201 !!$         CALL histdef( nid_T, "sowaflep", "atmos=>ocean net freshwater"        , "kg/m2/s",   &  ! fmass 
    202 !!$            &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout ) 
    203 !!$#endif 
    204163         CALL histdef( nid_T, "sowaflup", "Net Upward Water Flux"              , "Kg/m2/s",   &  ! emp 
    205164            &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout ) 
    206          CALL histdef( nid_T, "sorunoff", "Runoffs"                            , "Kg/m2/s",   &  ! runoffs 
    207             &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout ) 
     165!!       CALL histdef( nid_T, "sorunoff", "Runoffs"                            , "Kg/m2/s",   &  ! runoffs 
     166!!          &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout ) 
    208167         CALL histdef( nid_T, "sowaflcd", "concentration/dilution water flux"  , "kg/m2/s",   &  ! emps 
    209168            &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout ) 
     
    228187         CALL histdef( nid_T, "soicecov", "Ice Cover"                          , "[0,1]"  ,   &  ! freeze 
    229188            &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout ) 
    230 #if ! defined key_coupled  
    231          CALL histdef( nid_T, "sohefldp", "Surface Heat Flux: Damping"         , "W/m2"   ,   &  ! qrp 
    232             &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout ) 
    233          CALL histdef( nid_T, "sowafldp", "Surface Water Flux: Damping"        , "Kg/m2/s",   &  ! erp 
    234             &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout ) 
    235          CALL histdef( nid_T, "sosafldp", "Surface salt flux: damping"         , "Kg/m2/s",   &  ! erp * sn 
    236             &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout ) 
    237 #endif 
    238  
    239 #if ( defined key_coupled && ! ( defined key_lim3 || defined key_lim2 ) )  
    240          CALL histdef( nid_T, "sohefldp", "Surface Heat Flux: Damping"         , "W/m2"   ,   &  ! qrp 
    241             &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout ) 
    242          CALL histdef( nid_T, "sowafldp", "Surface Water Flux: Damping"        , "Kg/m2/s",   &  ! erp 
    243             &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout ) 
    244          CALL histdef( nid_T, "sosafldp", "Surface salt flux: Damping"         , "Kg/m2/s",   &  ! erp * sn 
    245             &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout ) 
    246 #endif 
     189         IF( ln_ssr ) THEN 
     190            CALL histdef( nid_T, "sohefldp", "Surface Heat Flux: Damping"         , "W/m2"   ,   &  ! qrp 
     191               &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout ) 
     192            CALL histdef( nid_T, "sowafldp", "Surface Water Flux: Damping"        , "Kg/m2/s",   &  ! erp 
     193               &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout ) 
     194            CALL histdef( nid_T, "sosafldp", "Surface salt flux: damping"         , "Kg/m2/s",   &  ! erp * sn 
     195               &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout ) 
     196         ENDIF 
    247197         clmx ="l_max(only(x))"    ! max index on a period 
    248198         CALL histdef( nid_T, "sobowlin", "Bowl Index"                         , "W-point",   &  ! bowl INDEX  
    249199            &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clmx, zsto, zout ) 
    250 #if defined key_diahth 
    251          CALL histdef( nid_T, "sothedep", "Thermocline Depth"                  , "m"      ,   & ! hth 
    252             &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout ) 
    253          CALL histdef( nid_T, "so20chgt", "Depth of 20C isotherm"              , "m"      ,   & ! hd20 
    254             &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout ) 
    255          CALL histdef( nid_T, "so28chgt", "Depth of 28C isotherm"              , "m"      ,   & ! hd28 
    256             &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout ) 
    257          CALL histdef( nid_T, "sohtc300", "Heat content 300 m"                 , "W"      ,   & ! htc3 
    258             &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout ) 
    259 #endif 
    260  
    261 #if ( defined key_lim3 || defined key_lim2 ) && defined key_coupled 
    262          CALL histdef( nid_T,"soicetem" , "Ice Surface Temperature"            , "K"      ,   &  ! tn_ice 
    263             &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout ) 
    264          CALL histdef( nid_T,"soicealb" , "Ice Albedo"                         , "[0,1]"  ,   &  ! alb_ice 
    265             &          jpi, jpj, nh_T, 1  , 1, 1  , -99 , 32, clop, zsto, zout ) 
    266 #endif  
    267  
    268200         !                                                                                      !!! nid_U : 3D 
    269201         CALL histdef( nid_T, "vozocrtx", "Zonal Current"                      , "m/s"    ,   &  ! un 
     
    288220            &          jpi, jpj, nh_T, 1  , 1, 1  , - 99, 32, clop, zsto, zout ) 
    289221#if defined key_zdftke 
    290          !                                                                                      !!! nid_W : 3D 
    291222         CALL histdef( nid_T, "votlsdis", " Dissipation Turbulent Lenght Scale", "m"      ,   &  ! e_dis 
    292223            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 
    293          ! 
    294224         CALL histdef( nid_T, "votlsmix", " Mixing Turbulent Lenght Scale"     , "m"      ,   &  ! e_mix 
    295225            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 
    296          ! 
    297226         CALL histdef( nid_T, "votlspdl", " Prandl Number",                      "-"       ,   &  ! e_pdl 
    298227            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 
    299          ! 
    300228         CALL histdef( nid_T, "votlsric", " Local Richardson Number",            "-"       ,   &  ! e_ric 
    301229            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 
    302          ! 
    303230         CALL histdef( nid_T, "votkeend", "TKE: Turbulent kinetic energy"       , "m2/s"   ,   &  ! TKE 
    304231            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 
    305232#endif 
    306233#if defined key_zdfkpp 
    307          !                                                                                      !!! nid_W : 3D 
    308234         CALL histdef( nid_T, "vokpprig", " Gradient Richardson Number"        ,  "-"      ,   &  ! rig 
    309235            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 
    310          ! 
    311236         CALL histdef( nid_T, "vokpprib", " Bulk Richardson Number    "        ,  "-"      ,   &   ! rib 
    312237            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 
    313          ! 
    314238         CALL histdef( nid_T, "vokppbsf", " Buoyancy forcing          "        , "N/m2"    ,   &  ! sokppbsf 
    315239            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 
    316          ! 
    317240         CALL histdef( nid_T, "vokppmol", "Moning Obukhov length scale     "   , "m"       ,   &  ! sokppmol 
    318241            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 
     
    321244         CALL histdef( nid_T, "voeosbn2", "Brunt-Vaisala Frequency"             , "m2/s2"  ,   &  ! rn2 
    322245            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 
    323  
    324246         CALL histdef( nid_T, "votkeavt", "Vertical Eddy Diffusivity"          , "m2/s"   ,   &  ! avt 
    325247            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 
    326  
    327248         CALL histdef( nid_T, "votkeevd", "Enhanced Vertical Diffusivity",       "m2/s"   ,   &  ! avt_evd 
    328249            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 
    329  
    330250         CALL histdef( nid_T, "votkeavm", "Vertical Eddy Viscosity",             "m2/s"   ,   &  ! avmu 
    331251            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 
     
    333253         CALL histdef( nid_T, "votkeevm", "Enhanced Vertical Viscosity",         "m2/s"   ,   &  ! avmu_evd 
    334254            &          jpi, jpj, nh_T, ipk, 1, ipk, nz_T, 32, clop, zsto, zout ) 
    335  
    336255         IF( lk_zdfddm ) THEN 
    337256            CALL histdef( nid_T,"voddmavs","Salt Vertical Eddy Diffusivity"    , "m2/s"   ,   &  ! avs 
     
    364283      CALL histwrite( nid_T, "sosstsst", it, tn(:,:,1)     , ndim_hT, ndex_hT )   ! sea surface temperature 
    365284      CALL histwrite( nid_T, "sosaline", it, sn(:,:,1)     , ndim_hT, ndex_hT )   ! sea surface salinity 
    366 #if ! defined key_dynspg_rl && ( defined key_lim3 || defined key_lim2 ) 
    367       CALL histwrite( nid_T, "iowaflup", it, fsalt(:,:)    , ndim_hT, ndex_hT )   ! ice=>ocean water flux 
    368       CALL histwrite( nid_T, "sowaflep", it, fmass(:,:)    , ndim_hT, ndex_hT )   ! atmos=>ocean water flux 
    369 #endif 
    370285      CALL histwrite( nid_T, "sowaflup", it, emp           , ndim_hT, ndex_hT )   ! upward water flux 
    371       CALL histwrite( nid_T, "sorunoff", it, runoff        , ndim_hT, ndex_hT )   ! runoff 
     286!!    CALL histwrite( nid_T, "sorunoff", it, runoff        , ndim_hT, ndex_hT )   ! runoff 
    372287      CALL histwrite( nid_T, "sowaflcd", it, emps          , ndim_hT, ndex_hT )   ! c/d water flux 
    373288      zw2d(:,:) = emps(:,:) * sn(:,:,1) * tmask(:,:,1) 
     
    390305      CALL histwrite( nid_T, "somixhgt", it, hmld          , ndim_hT, ndex_hT )   ! turbocline depth 
    391306      CALL histwrite( nid_T, "soicecov", it, freeze        , ndim_hT, ndex_hT )   ! ice cover  
    392 #if ! defined key_coupled 
    393       CALL histwrite( nid_T, "sohefldp", it, qrp           , ndim_hT, ndex_hT )   ! heat flux damping 
    394       CALL histwrite( nid_T, "sowafldp", it, erp           , ndim_hT, ndex_hT )   ! freshwater flux damping 
    395       zw2d(:,:) = erp(:,:) * sn(:,:,1) * tmask(:,:,1) 
    396       CALL histwrite( nid_T, "sosafldp", it, zw2d          , ndim_hT, ndex_hT )   ! salt flux damping 
    397 #endif 
    398 #if ( defined key_coupled && ! ( defined key_lim3 || defined key_lim2 ) )  
    399       CALL histwrite( nid_T, "sohefldp", it, qrp           , ndim_hT, ndex_hT )   ! heat flux damping 
    400       CALL histwrite( nid_T, "sowafldp", it, erp           , ndim_hT, ndex_hT )   ! freshwater flux damping 
     307      IF( ln_ssr ) THEN 
     308         CALL histwrite( nid_T, "sohefldp", it, qrp           , ndim_hT, ndex_hT )   ! heat flux damping 
     309         CALL histwrite( nid_T, "sowafldp", it, erp           , ndim_hT, ndex_hT )   ! freshwater flux damping 
    401310         zw2d(:,:) = erp(:,:) * sn(:,:,1) * tmask(:,:,1) 
    402       CALL histwrite( nid_T, "sosafldp", it, zw2d          , ndim_hT, ndex_hT )   ! salt flux damping 
    403 #endif 
    404          zw2d(:,:) = FLOAT( nmln(:,:) ) * tmask(:,:,1) 
     311         CALL histwrite( nid_T, "sosafldp", it, zw2d          , ndim_hT, ndex_hT )   ! salt flux damping 
     312      ENDIF 
     313      zw2d(:,:) = FLOAT( nmln(:,:) ) * tmask(:,:,1) 
    405314      CALL histwrite( nid_T, "sobowlin", it, zw2d          , ndim_hT, ndex_hT )   ! ??? 
    406  
    407 #if defined key_diahth 
    408       CALL histwrite( nid_T, "sothedep", it, hth           , ndim_hT, ndex_hT )   ! depth of the thermocline 
    409       CALL histwrite( nid_T, "so20chgt", it, hd20          , ndim_hT, ndex_hT )   ! depth of the 20 isotherm 
    410       CALL histwrite( nid_T, "so28chgt", it, hd28          , ndim_hT, ndex_hT )   ! depth of the 28 isotherm 
    411       CALL histwrite( nid_T, "sohtc300", it, htc3          , ndim_hT, ndex_hT )   ! first 300m heaat content 
    412 #endif 
    413 #if ( defined key_lim3 || defined key_lim2 ) &&  defined key_coupled  
    414       CALL histwrite( nid_T, "soicetem", it, tn_ice        , ndim_hT, ndex_hT )   ! surf. ice temperature 
    415       CALL histwrite( nid_T, "soicealb", it, alb_ice       , ndim_hT, ndex_hT )   ! ice albedo 
    416 #endif 
    417  
    418315      CALL histwrite( nid_T, "vozocrtx", it, un            , ndim_T , ndex_T )    ! i-current 
    419316      CALL histwrite( nid_T, "sozotaux", it, utau          , ndim_hT, ndex_hT )   ! i-wind stress 
     
    444341      ! 3. Synchronise and close all files 
    445342      ! --------------------------------------- 
    446       IF( MOD( kt, nwrite ) == 0 .OR. kindic < 0 ) THEN 
    447          CALL histsync( nid_T ) 
    448       ENDIF 
     343      IF( MOD( kt, nwrite ) == 0 .OR. kindic < 0 )   CALL histsync( nid_T ) 
    449344 
    450345      !  Create an output files (output.abort.nc) if S < 0 or u > 20 m/s 
    451346      IF( kindic < 0 )   CALL dia_wri_state( 'output.abort' ) 
    452347 
    453       IF( kt == nitend .OR. kindic < 0 ) THEN 
    454          CALL histclo( nid_T ) 
    455       ENDIF 
    456  
    457    END SUBROUTINE dia_wri_1d 
     348      IF( kt == nitend .OR. kindic < 0 )   CALL histclo( nid_T ) 
     349      ! 
     350   END SUBROUTINE dia_wri_c1d 
     351 
    458352#else 
    459353   !!---------------------------------------------------------------------- 
    460    !!   Default key                                     NO 1D Config 
     354   !!   Default key                                     NO 1D Configuration 
    461355   !!---------------------------------------------------------------------- 
    462356CONTAINS 
    463    SUBROUTINE dia_wri_1d ( kt, kindic ) 
    464       WRITE(*,*) 'dia_wri_1d: You should not have seen this print! error?', kt, kindic 
    465    END SUBROUTINE dia_wri_1d 
     357   SUBROUTINE dia_wri_c1d ( kt, kindic )      ! dummy routine 
     358      WRITE(*,*) 'dia_wri_c1d: You should not have seen this print! error?', kt, kindic 
     359   END SUBROUTINE dia_wri_c1d 
    466360#endif 
    467361 
    468362   !!====================================================================== 
    469 END MODULE diawri1d 
     363END MODULE diawri_c1d 
  • trunk/NEMO/C1D_SRC/dyncor_c1d.F90

    r899 r900  
    1 MODULE dyncor1d 
     1MODULE dyncor_c1d 
    22   !!====================================================================== 
    3    !!                     ***  MODULE  ini1D  *** 
    4    !! Ocean state   :  1D initialization 
     3   !!                     ***  MODULE  dyncor_c1d  *** 
     4   !! Ocean Dynamics :   Coriolis term in 1D configuration 
    55   !!===================================================================== 
     6   !! History :  2.0  !  2004-09  (C. Ethe)  Original code 
     7   !!            3.0  !  2008-04  (G. Madec)  style only 
     8   !!---------------------------------------------------------------------- 
    69#if defined key_c1d 
    710   !!---------------------------------------------------------------------- 
    8    !!   'key_c1d'               1D Configuration 
     11   !!   'key_c1d'                                          1D Configuration 
    912   !!---------------------------------------------------------------------- 
     13   !!   cor_c1d      : Coriolis factor at T-point (1D configuration) 
     14   !!   dyn_cor_c1d  : vorticity trend due to Coriolis at T-point 
    1015   !!---------------------------------------------------------------------- 
    11    !!   fcorio_1d   : Coriolis factor at T-point 
    12    !!   dyn_cor_1d  : vorticity trend due to Coriolis 
    13    !!---------------------------------------------------------------------- 
    14    !! * Modules used 
    15    USE oce            ! ocean dynamics and tracers 
    16    USE dom_oce        ! ocean space and time domain 
    17    USE phycst         ! physical constants 
    18    USE in_out_manager ! I/O manager 
    19    USE prtctl         ! Print control 
     16   USE oce               ! ocean dynamics and tracers 
     17   USE dom_oce           ! ocean space and time domain 
     18   USE phycst            ! physical constants 
     19   USE in_out_manager    ! I/O manager 
     20   USE prtctl            ! Print control 
    2021 
    2122   IMPLICIT NONE 
    2223   PRIVATE 
    2324 
    24    !! * Routine accessibility 
    25    PUBLIC fcorio_1d   ! routine called by OPA.F90 
    26    PUBLIC dyn_cor_1d  ! routine called by step1d.F90 
     25   PUBLIC   cor_c1d      ! routine called by OPA.F90 
     26   PUBLIC   dyn_cor_c1d  ! routine called by step1d.F90 
    2727 
    2828   !! * Substitutions 
    2929#  include "vectopt_loop_substitute.h90" 
    3030   !!---------------------------------------------------------------------- 
    31    !!   OPA 9.0 , LOCEAN-IPSL (2005)  
     31   !! NEMO/C1D  3.0 , LOCEAN-IPSL (2009)  
    3232   !! $Header$  
    33    !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt  
     33   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
    3434   !!---------------------------------------------------------------------- 
    3535 
    3636CONTAINS 
    3737 
    38    SUBROUTINE fcorio_1d 
     38   SUBROUTINE cor_c1d 
    3939      !!---------------------------------------------------------------------- 
    40       !!                   ***  ROUTINE fcorio_1d  *** 
     40      !!                   ***  ROUTINE cor_c1d  *** 
    4141      !!  
    4242      !! ** Purpose : Compute the Coriolis factor at T-point 
    43       !! 
    44       !! ** Method  : 
    45       !! 
    46       !! History : 
    47       !!   9.0  !  04-09  (C. Ethe) 1D configuration 
    4843      !!---------------------------------------------------------------------- 
    49       !! * Local declarations 
    50       !!---------------------------------------------------------------------- 
    51       REAL(wp) ::   & 
    52          zphi0, zbeta, zf0         !  temporary scalars 
    53   
    54  
     44      REAL(wp) ::   zphi0, zbeta, zf0         !  temporary scalars 
    5545      !!---------------------------------------------------------------------- 
    5646 
    57       ! ================= ! 
    58       !  Coriolis factor  ! 
    59       ! ================= ! 
    6047      IF(lwp) WRITE(numout,*) 
    61       IF(lwp) WRITE(numout,*) 'fcorio_1d : Coriolis factor at T-point' 
    62       IF(lwp) WRITE(numout,*) '~~~~~~~~~~~' 
     48      IF(lwp) WRITE(numout,*) 'cor_c1d : Coriolis factor at T-point' 
     49      IF(lwp) WRITE(numout,*) '~~~~~~~' 
    6350 
    6451      SELECT CASE( jphgr_msh )   ! type of horizontal mesh 
    65  
     52      ! 
    6653      CASE ( 0, 1, 4 )               ! mesh on the sphere 
    67  
    6854         ff(:,:) = 2. * omega * SIN( rad * gphit(:,:) )  
    69  
     55         ! 
    7056      CASE ( 2 )                     ! f-plane at ppgphi0  
    71  
    7257         ff(:,:) = 2. * omega * SIN( rad * ppgphi0 ) 
    73  
    7458         IF(lwp) WRITE(numout,*) '          f-plane: Coriolis parameter = constant = ', ff(1,1) 
    75  
     59         ! 
    7660      CASE ( 3 )                     ! beta-plane 
    77  
    7861         zbeta   = 2. * omega * COS( rad * ppgphi0 ) / ra                     ! beta at latitude ppgphi0 
    7962         zphi0   = ppgphi0 - FLOAT( jpjglo/2) * ppe2_m *1.e-3  / ( ra * rad ) ! latitude of the first row F-points 
    8063         zf0     = 2. * omega * SIN( rad * zphi0 )                            ! compute f0 1st point south 
    81  
    8264         ff(:,:) = ( zf0  + zbeta * gphit(:,:) * 1.e+3 )                      ! f = f0 +beta* y ( y=0 at south) 
    83  
    8465         IF(lwp) WRITE(numout,*) '          Beta-plane: Beta parameter = constant = ', ff(1,1) 
    8566         IF(lwp) WRITE(numout,*) '                      Coriolis parameter varies from ', ff(1,1),' to ', ff(1,jpj) 
    86  
     67         ! 
    8768      CASE ( 5 )                     ! beta-plane and rotated domain 
    88  
    8969         zbeta = 2. * omega * COS( rad * ppgphi0 ) / ra                     ! beta at latitude ppgphi0 
    9070         zphi0 = 15.e0                                                      ! latitude of the first row F-points 
    9171         zf0   = 2. * omega * SIN( rad * zphi0 )                            ! compute f0 1st point south 
    92  
    9372         ff(:,:) = ( zf0 + zbeta * ABS( gphit(:,:) - zphi0 ) * rad * ra )   ! f = f0 +beta* y ( y=0 at south) 
    94  
    9573         IF(lwp) WRITE(numout,*) '          Beta-plane: Beta parameter = constant = ', ff(1,1) 
    9674         IF(lwp) WRITE(numout,*) '                      Coriolis parameter varies from ', ff(1,1),' to ', ff(1,jpj) 
    97  
     75         ! 
    9876      END SELECT 
    99  
    100    END SUBROUTINE fcorio_1d 
     77      ! 
     78   END SUBROUTINE cor_c1d 
    10179 
    10280 
    103    SUBROUTINE dyn_cor_1d( kt ) 
     81   SUBROUTINE dyn_cor_c1d( kt ) 
    10482      !!---------------------------------------------------------------------- 
    105       !!                   ***  ROUTINE dyn_cor_1d  *** 
     83      !!                   ***  ROUTINE dyn_cor_c1d  *** 
    10684      !!  
    10785      !! ** Purpose :   Compute the now total vorticity trend and add it to  
     
    11391      !!   9.0  !  04-09  (C. Ethe) 1D configuration 
    11492      !!---------------------------------------------------------------------- 
    115       !! * Arguments 
    116       INTEGER, INTENT( in ) ::   kt        ! ocean time-step index 
    117  
    118       !! * Local declarations 
    119       INTEGER ::   ji, jj, jk              ! dummy loop indices 
    120       REAL(wp) ::   & 
    121          zua, zva                          ! temporary scalars 
    122  
     93      INTEGER, INTENT( in ) ::   kt   ! ocean time-step index 
     94      !! 
     95      INTEGER ::   ji, jj, jk         ! dummy loop indices 
    12396      !!---------------------------------------------------------------------- 
    124  
     97      ! 
    12598      IF( kt == nit000 ) THEN 
    12699         IF(lwp) WRITE(numout,*) 
    127          IF(lwp) WRITE(numout,*) 'dyn_cor_1d : total vorticity trend in 1D' 
     100         IF(lwp) WRITE(numout,*) 'dyn_cor_c1d : total vorticity trend in 1D' 
    128101         IF(lwp) WRITE(numout,*) '~~~~~~~~~~' 
    129102      ENDIF 
    130  
     103      ! 
    131104      DO jk = 1, jpkm1 
    132105         DO jj = 2, jpjm1 
    133106            DO ji = fs_2, fs_jpim1   ! vector opt. 
    134                zua =    ff(ji,jj) * vn(ji,jj,jk) 
    135                zva =  - ff(ji,jj) * un(ji,jj,jk) 
    136                ua(ji,jj,jk) = ua(ji,jj,jk) + zua 
    137                va(ji,jj,jk) = va(ji,jj,jk) + zva 
     107               ua(ji,jj,jk) = ua(ji,jj,jk) + ff(ji,jj) * vn(ji,jj,jk) 
     108               va(ji,jj,jk) = va(ji,jj,jk) - ff(ji,jj) * un(ji,jj,jk) 
    138109            END DO 
    139110         END DO 
    140111      END DO    
    141  
    142       IF(ln_ctl)   THEN 
    143          CALL prt_ctl(tab3d_1=ua, clinfo1=' cor  - Ua: ', mask1=umask, & 
    144             &         tab3d_2=va, clinfo2=' Va: ', mask2=vmask) 
    145       ENDIF 
    146  
    147 !     IF(l_ctl) THEN         ! print sum trends (used for debugging) 
    148 !        zua = SUM( ua(2:nictl,2:njctl,1:jpkm1) * umask(2:nictl,2:njctl,1:jpkm1) ) 
    149 !        zva = SUM( va(2:nictl,2:njctl,1:jpkm1) * vmask(2:nictl,2:njctl,1:jpkm1) ) 
    150 !        WRITE(numout,*) ' cor  - Ua: ', zua-u_ctl, ' Va: ', zva-v_ctl 
    151 !        u_ctl = zua   ;   v_ctl = zva 
    152 !     ENDIF 
    153  
    154    END SUBROUTINE dyn_cor_1d 
     112      ! 
     113      IF(ln_ctl)   CALL prt_ctl( tab3d_1=ua, clinfo1=' cor  - Ua: ', mask1=umask,  & 
     114         &                       tab3d_2=va, clinfo2=' Va: '       , mask2=vmask ) 
     115      ! 
     116   END SUBROUTINE dyn_cor_c1d 
    155117 
    156118#else 
    157119   !!---------------------------------------------------------------------- 
    158    !!   Default key                                     NO 1D Config 
     120   !!   Default key                                     NO 1D Configuration 
    159121   !!---------------------------------------------------------------------- 
    160122CONTAINS 
    161    SUBROUTINE fcorio_1d      ! Empty routine 
    162    END SUBROUTINE fcorio_1d    
    163    SUBROUTINE dyn_cor_1d ( kt ) 
    164       WRITE(*,*) 'dyn_cor_1d: You should not have seen this print! error?', kt 
    165    END SUBROUTINE dyn_cor_1d 
     123   SUBROUTINE cor_c1d              ! Empty routine 
     124   END SUBROUTINE cor_c1d    
     125   SUBROUTINE dyn_cor_c1d ( kt )      ! Empty routine 
     126      WRITE(*,*) 'dyn_cor_c1d: You should not have seen this print! error?', kt 
     127   END SUBROUTINE dyn_cor_c1d 
    166128#endif 
    167129 
    168130   !!===================================================================== 
    169 END MODULE dyncor1d 
     131END MODULE dyncor_c1d 
  • trunk/NEMO/C1D_SRC/dynnxt_c1d.F90

    r899 r900  
    1 MODULE dynnxt1d 
     1MODULE dynnxt_c1d 
    22   !!====================================================================== 
    3    !!                       ***  MODULE  dynnxt1d  *** 
     3   !!                       ***  MODULE  dynnxt_c1d  *** 
    44   !! Ocean dynamics: time stepping in 1D configuration 
    55   !!====================================================================== 
     6   !! History :  2.0  !  2004-10  (C. Ethe)  Original code from dynnxt.F90 
     7   !!            3.0  !  2008-04  (G.madec)  Style only 
     8   !!---------------------------------------------------------------------- 
    69#if defined key_c1d 
    710   !!---------------------------------------------------------------------- 
    8    !!   'key_c1d'               1D Configuration 
     11   !!   'key_c1d'                                          1D Configuration 
    912   !!----------------------------------------------------------------------   
    1013   !!---------------------------------------------------------------------- 
    11    !!   dyn_nxt_1d  : update the horizontal velocity from the momentum trend 
     14   !!   dyn_nxt_c1d : update the horizontal velocity from the momentum trend 
    1215   !!---------------------------------------------------------------------- 
    13    !! * Modules used 
    1416   USE oce             ! ocean dynamics and tracers 
    1517   USE dom_oce         ! ocean space and time domain 
     
    2123   PRIVATE 
    2224 
    23    !! * Accessibility 
    24    PUBLIC dyn_nxt_1d                ! routine called by step.F90 
     25   PUBLIC dyn_nxt_c1d                ! routine called by step.F90 
     26   !!---------------------------------------------------------------------- 
     27   !! NEMO/C1D  3.0 , LOCEAN-IPSL (2008)  
     28   !! $Id:$  
     29   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
    2530   !!---------------------------------------------------------------------- 
    2631 
    2732CONTAINS 
    2833 
    29    SUBROUTINE dyn_nxt_1d ( kt ) 
     34   SUBROUTINE dyn_nxt_c1d ( kt ) 
    3035      !!---------------------------------------------------------------------- 
    31       !!                  ***  ROUTINE dyn_nxt_1d  *** 
     36      !!                  ***  ROUTINE dyn_nxt_c1d  *** 
    3237      !!                    
    3338      !! ** Purpose :   Compute the after horizontal velocity from the  
     
    4651      !! ** Action : - Update ub,vb arrays, the before horizontal velocity 
    4752      !!             - Update un,vn arrays, the now horizontal velocity 
     53      !!---------------------------------------------------------------------- 
     54      INTEGER, INTENT( in ) ::   kt      ! ocean time-step index 
    4855      !! 
    49       !! History : 
    50       !!        !  87-02  (P. Andrich, D. L Hostis)  Original code 
    51       !!        !  90-10  (C. Levy, G. Madec) 
    52       !!        !  93-03  (M. Guyon)  symetrical conditions 
    53       !!        !  97-02  (G. Madec & M. Imbard)  opa, release 8.0 
    54       !!        !  97-04  (A. Weaver)  Euler forward step 
    55       !!        !  97-06  (G. Madec)  lateral boudary cond., lbc routine 
    56       !!   8.5  !  02-08  (G. Madec)  F90: Free form and module 
    57       !!        !  04-10  (C. Ethe) 1D configuration 
    58       !!---------------------------------------------------------------------- 
    59       !! * Arguments 
    60       INTEGER, INTENT( in ) ::   kt      ! ocean time-step index 
    61  
    62       !! * Local declarations 
    63       INTEGER  ::   ji, jj, jk   ! dummy loop indices 
     56      INTEGER  ::   jk           ! dummy loop indices 
    6457      REAL(wp) ::   z2dt         ! temporary scalar 
    65       !!---------------------------------------------------------------------- 
    66       !!   OPA 9.0 , LOCEAN-IPSL (2005)  
    67       !! $Header$  
    68       !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt  
    6958      !!---------------------------------------------------------------------- 
    7059 
    7160      IF( kt == nit000 ) THEN 
    7261         IF(lwp) WRITE(numout,*) 
    73          IF(lwp) WRITE(numout,*) 'dyn_nxt_1d : time stepping on 1D configuation' 
     62         IF(lwp) WRITE(numout,*) 'dyn_nxt_c1d : time stepping on 1D configuation' 
    7463         IF(lwp) WRITE(numout,*) '~~~~~~~' 
    7564      ENDIF 
     
    8372      CALL lbc_lnk( va, 'V', -1. ) 
    8473 
    85       !                                                ! =============== 
    86       DO jk = 1, jpkm1                                 ! Horizontal slab 
    87          !                                             ! =============== 
    88          ! Next velocity 
    89          ! ------------- 
    90          DO jj = 1, jpj                      ! caution: don't use (:,:) for this loop 
    91             DO ji = 1, jpi                   ! it causes optimization problems on NEC in auto-tasking 
    92                ! Leap-frog time stepping 
    93                ua(ji,jj,jk) = ( ub(ji,jj,jk) + z2dt * ua(ji,jj,jk) ) * umask(ji,jj,jk) 
    94                va(ji,jj,jk) = ( vb(ji,jj,jk) + z2dt * va(ji,jj,jk) ) * vmask(ji,jj,jk) 
    95             END DO 
    96          END DO 
    97          !                                             ! =============== 
    98       END DO                                           !   End of slab 
    99       !                                                ! =============== 
     74      DO jk = 1, jpkm1      ! Next Velocity 
     75         ua(:,:,jk) = ( ub(:,:,jk) + z2dt * ua(:,:,jk) ) * umask(:,:,jk) 
     76         va(:,:,jk) = ( vb(:,:,jk) + z2dt * va(:,:,jk) ) * vmask(:,:,jk) 
     77      END DO  
    10078  
    101      !                                                ! =============== 
    102       DO jk = 1, jpkm1                                 ! Horizontal slab 
    103          !                                             ! =============== 
    104          ! Time filter and swap of dynamics arrays 
    105          ! ------------------------------------------ 
    106          IF( neuler == 0 .AND. kt == nit000 ) THEN 
    107             DO jj = 1, jpj                      ! caution: don't use (:,:) for this loop 
    108                DO ji = 1, jpi                   ! it causes optimization problems on NEC in auto-tasking 
    109                   ! Euler (forward) time stepping 
    110                   ub(ji,jj,jk) = un(ji,jj,jk) 
    111                   vb(ji,jj,jk) = vn(ji,jj,jk) 
    112                   un(ji,jj,jk) = ua(ji,jj,jk) 
    113                   vn(ji,jj,jk) = va(ji,jj,jk) 
    114                END DO 
    115             END DO 
    116          ELSE 
    117             DO jj = 1, jpj                      ! caution: don't use (:,:) for this loop 
    118                DO ji = 1, jpi                   ! it causes optimization problems on NEC in auto-tasking 
    119                   ! Leap-frog time stepping 
    120                   ub(ji,jj,jk) = atfp * ( ub(ji,jj,jk) + ua(ji,jj,jk) ) + atfp1 * un(ji,jj,jk) 
    121                   vb(ji,jj,jk) = atfp * ( vb(ji,jj,jk) + va(ji,jj,jk) ) + atfp1 * vn(ji,jj,jk) 
    122                   un(ji,jj,jk) = ua(ji,jj,jk) 
    123                   vn(ji,jj,jk) = va(ji,jj,jk) 
    124                END DO 
    125             END DO 
     79      DO jk = 1, jpkm1      ! Time filter and swap of dynamics arrays 
     80         IF( neuler == 0 .AND. kt == nit000 ) THEN      ! Euler (forward) time stepping 
     81             ub(:,:,:) = un(:,:,:) 
     82             vb(:,:,:) = vn(:,:,:) 
     83             un(:,:,:) = ua(:,:,:) 
     84             vn(:,:,:) = va(:,:,:) 
     85         ELSE                                           ! Leap-frog time stepping 
     86             ub(:,:,:) = atfp * ( ub(:,:,:) + ua(:,:,:) ) + atfp1 * un(:,:,:) 
     87             vb(:,:,:) = atfp * ( vb(:,:,:) + va(:,:,:) ) + atfp1 * vn(:,:,:) 
     88             un(:,:,:) = ua(:,:,:) 
     89             vn(:,:,:) = va(:,:,:) 
    12690         ENDIF 
    127          !                                             ! =============== 
    128       END DO                                           !   End of slab 
    129       !                                                ! =============== 
     91      END DO 
    13092 
    131       IF(ln_ctl)   THEN 
    132          CALL prt_ctl(tab3d_1=un, clinfo1=' nxt_1d  - Un: ', mask1=umask, & 
    133             &         tab3d_2=vn, clinfo2=' Vn: ', mask2=vmask) 
    134       ENDIF 
     93      IF(ln_ctl)   CALL prt_ctl( tab3d_1=un, clinfo1=' nxt_c1d  - Un: ', mask1=umask,   & 
     94         &                       tab3d_2=vn, clinfo2=' Vn: '           , mask2=vmask ) 
     95      ! 
     96   END SUBROUTINE dyn_nxt_c1d 
    13597 
    136 !     IF(l_ctl)   WRITE(numout,*) ' nxt  - Un: ', SUM(un(2:nictl,2:njctl,1:jpkm1)*umask(2:nictl,2:njctl,1:jpkm1)), & 
    137 !     &                                  ' Vn: ', SUM(vn(2:nictl,2:njctl,1:jpkm1)*vmask(2:nictl,2:njctl,1:jpkm1)) 
    138  
    139    END SUBROUTINE dyn_nxt_1d 
    14098#else 
    14199   !!---------------------------------------------------------------------- 
     
    143101   !!---------------------------------------------------------------------- 
    144102CONTAINS 
    145    SUBROUTINE dyn_nxt_1d ( kt ) 
    146       WRITE(*,*) 'dyn_nxt_1d: You should not have seen this print! error?', kt 
    147    END SUBROUTINE dyn_nxt_1d 
     103   SUBROUTINE dyn_nxt_c1d ( kt ) 
     104      WRITE(*,*) 'dyn_nxt_c1d: You should not have seen this print! error?', kt 
     105   END SUBROUTINE dyn_nxt_c1d 
    148106#endif 
     107 
    149108   !!====================================================================== 
    150 END MODULE dynnxt1d 
     109END MODULE dynnxt_c1d 
  • trunk/NEMO/C1D_SRC/step_c1d.F90

    r899 r900  
    1 MODULE step1d 
     1MODULE step_c1d 
    22   !!====================================================================== 
    3    !!                       ***  MODULE step1D  *** 
    4    !! Time-stepping    : manager of the ocean, tracer and ice time stepping 
     3   !!                       ***  MODULE step_c1d  *** 
     4   !! Time-stepping    : manager of the ocean, tracer and ice time stepping - c1d case 
    55   !!====================================================================== 
     6   !! History :   2.0  !  2004-04  (C. Ethe)  adapted from step.F90 for C1D 
     7   !!             3.0  !  2008-04  (G. Madec)  redo the adaptation to include SBC 
     8   !!---------------------------------------------------------------------- 
    69#if defined key_cfg_1d 
    710   !!---------------------------------------------------------------------- 
    8    !!   'key_cfg_1d'               1D Configuration 
     11   !!   'key_cfg_1d'                                       1D Configuration 
    912   !!----------------------------------------------------------------------   
    10    !!---------------------------------------------------------------------- 
    11    !!   stp_1d           : OPA system time-stepping on 1 direction 
    12    !!---------------------------------------------------------------------- 
    13    !! * Modules used 
     13   !!   stp_c1d        : NEMO system time-stepping in c1d case 
     14   !!---------------------------------------------------------------------- 
    1415   USE oce             ! ocean dynamics and tracers variables 
    1516   USE dom_oce         ! ocean space and time domain variables  
    1617   USE zdf_oce         ! ocean vertical physics variables 
    17    USE sbc_oce         ! surface boundary condition: ocean 
    18    USE ldftra_oce 
    19    USE ldfdyn_oce 
    2018   USE in_out_manager  ! I/O manager 
     19   USE iom             ! 
    2120   USE lbclnk 
    2221 
     
    2524   USE dtatem          ! ocean temperature data           (dta_tem routine) 
    2625   USE dtasal          ! ocean salinity    data           (dta_sal routine) 
     26   USE sbcmod          ! surface boundary condition       (sbc     routine) 
     27   USE sbcrnf          ! surface boundary condition: runoff variables 
    2728   USE ocfzpt          ! surface ocean freezing point    (oc_fz_pt routine) 
    2829 
    29    USE trcstp          ! passive tracer time-stepping     (trc_stp routine) 
    30  
     30   USE trcstp          ! passive tracer time-stepping      (trc_stp routine) 
     31 
     32   USE traqsr          ! solar radiation penetration      (tra_qsr routine) 
     33   USE trasbc          ! surface boundary condition       (tra_sbc routine) 
     34   !   zdfkpp          ! KPP non-local tracer fluxes      (tra_kpp routine) 
     35   USE trazdf          ! vertical mixing                  (tra_zdf routine) 
     36   USE tranxt          ! time-stepping                    (tra_nxt routine) 
     37   USE tranpc          ! non-penetrative convection       (tra_npc routine) 
     38 
     39   USE eosbn2          ! equation of state                (eos_bn2 routine) 
     40 
     41   USE dyncor1d        ! Coriolis term (c1d case)         (dyn_cor_1d     ) 
    3142   USE dynzdf          ! vertical diffusion               (dyn_zdf routine) 
    32  
    33    USE traqsr          ! solar radiation penetration      (tra_qsr routine) 
    34    USE tranxt          ! time-stepping                    (tra_nxt routine) 
    35    USE trazdf          ! vertical diffusion               (tra_zdf routine) 
    36    USE trasbc          ! surface boundary condition       (tra_sbc routine) 
    37  
    38    USE eosbn2 
     43   USE dynnxt1d        ! time-stepping                    (dyn_nxt routine) 
    3944 
    4045   USE zdfbfr          ! bottom friction                  (zdf_bfr routine) 
     
    4651   USE zdfmxl          ! Mixed-layer depth                (zdf_mxl routine) 
    4752 
    48    USE dyncor1d 
    49    USE dynnxt1d 
    50    USE diawri1d        ! Standard run outputs             (dia_wri_1d routine) 
    51  
    5253   USE ice_oce         ! sea-ice variable 
    53    USE icestp1d        ! sea-ice time-stepping             (ice_stp routine) 
    54  
    55    USE diawri          ! Standard run outputs             (dia_wri_state routine) 
    56  
     54 
     55   USE diawri          ! Standard run outputs             (dia_wri routine) 
    5756 
    5857   USE stpctl          ! time stepping control            (stp_ctl routine) 
    5958   USE restart         ! ocean restart                    (rst_wri routine) 
    6059   USE prtctl          ! Print control                    (prt_ctl routine) 
     60 
    6161   IMPLICIT NONE 
    6262   PRIVATE 
    6363 
    64    !! * Routine accessibility 
    65    PUBLIC stp_1d            ! called by opa.F90 
     64   PUBLIC stp_c1d      ! called by opa.F90 
    6665 
    6766   !! * Substitutions 
     
    6968#  include "zdfddm_substitute.h90" 
    7069   !!---------------------------------------------------------------------- 
    71    !!   OPA 9.0 , LOCEAN-IPSL (2005)  
    72    !! $Id$ 
    73    !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt  
     70   !! NEMO 3.0 , LOCEAN-IPSL (2008)  
     71   !! $Id:$ 
     72   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt)  
    7473   !!---------------------------------------------------------------------- 
    7574 
    7675CONTAINS 
    7776 
    78    SUBROUTINE stp_1d( kstp ) 
     77   SUBROUTINE stp_c1d( kstp ) 
    7978      !!---------------------------------------------------------------------- 
    80       !!                     ***  ROUTINE stp1D  *** 
     79      !!                     ***  ROUTINE stp_c1d  *** 
    8180      !!                       
    82       !! ** Purpose : - Time stepping of OPA (momentum and active tracer eqs.) 
    83       !!              - Time stepping of LIM (dynamic and thermodynamic eqs.) 
     81      !! ** Purpose :  - Time stepping of SBC including LIM (dynamic and thermodynamic eqs.) 
     82      !!               - Time stepping of OPA (momentum and active tracer eqs.) 
     83      !!               - Time stepping of TOP (passive tracer eqs.) 
    8484      !!  
    8585      !! ** Method  : -1- Update forcings and data   
    86       !!              -2- Update ocean physics  
     86      !!              -2- Update vertical ocean physics  
    8787      !!              -3- Compute the t and s trends  
    8888      !!              -4- Update t and s  
     
    9191      !!              -7- Compute the diagnostics variables (rd,N2, div,cur,w) 
    9292      !!              -8- Outputs and diagnostics 
    93       !! 
    94       !! History : 
    95       !!        !  91-03  ()  Original code 
    96       !!        !  91-11  (G. Madec) 
    97       !!        !  92-06  (M. Imbard)  add a first output record 
    98       !!        !  96-04  (G. Madec)  introduction of dynspg 
    99       !!        !  96-04  (M.A. Foujols)  introduction of passive tracer 
    100       !!   8.0  !  97-06  (G. Madec)  new architecture of call 
    101       !!   8.2  !  97-06  (G. Madec, M. Imbard, G. Roullet)  free surface 
    102       !!   8.2  !  99-02  (G. Madec, N. Grima)  hpg implicit 
    103       !!   8.2  !  00-07  (J-M Molines, M. Imbard)  Open Bondary Conditions 
    104       !!   9.0  !  02-06  (G. Madec)  free form, suppress macro-tasking 
    105       !!        !  04-10  (C. Ethe) 1D configuration 
    10693      !!---------------------------------------------------------------------- 
    107       !! * Arguments 
    108       INTEGER, INTENT( in ) ::   kstp   ! ocean time-step index 
    109  
    110       !! * local declarations 
     94      INTEGER, INTENT(in) ::   kstp   ! ocean time-step index 
     95      INTEGER ::   jk       ! dummy loop indice 
    11196      INTEGER ::   indic    ! error indicator if < 0 
    112 !!      INTEGER ::   ii0, ii1, ij0, ij1   ! temporary integers 
    11397      !! --------------------------------------------------------------------- 
    11498 
    11599      indic = 1                    ! reset to no error condition 
    116       adatrj = adatrj + rdt/86400._wp 
    117100 
    118101      CALL day( kstp )             ! Calendar 
    119102 
    120       !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    121       ! Update data, open boundaries and Forcings 
     103      CALL rst_opn( kstp )         ! Open the restart file 
     104 
     105      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
     106      ! Update data, open boundaries, surface boundary condition (including sea-ice) 
    122107      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    123108 
    124109      IF( lk_dtatem  )   CALL dta_tem( kstp )         ! update 3D temperature data 
    125  
    126       IF( lk_dtasal  )   CALL dta_sal( kstp )         ! Salinity data 
    127  
    128       IF( lk_dtasst  )   CALL dta_sst( kstp )         ! Sea Surface Temperature data 
    129  
    130                          CALL tau( kstp )             ! wind stress 
    131  
    132                          CALL flx_rnf( kstp )         ! runoff data 
    133  
    134                          CALL flx( kstp )             ! heat and freshwater fluxes 
    135  
    136       IF( lk_ice_lim )  THEN  
    137                         CALL ice_stp_1d( kstp )      ! sea-ice model (Update stress & fluxes) 
    138       ELSE 
    139                         CALL oce_sbc( kstp )         ! ocean surface boudaries 
     110      IF( lk_dtasal  )   CALL dta_sal( kstp )         ! update 3D salinity data 
     111 
     112                         CALL sbc    ( kstp )         ! Sea Boundary Condition (including sea-ice) 
     113 
     114      IF( ninist == 1 ) THEN                          ! Output the initial state and forcings 
     115                        CALL dia_wri_state( 'output.init' )   ;   ninist = 0 
    140116      ENDIF 
    141117 
    142       IF( ln_fwb     )   CALL flx_fwb( kstp )         ! freshwater budget 
    143  
    144  
    145       IF( kstp == nit000 ) THEN  
    146          IF( ninist == 1 ) THEN                       ! Output the initial state and forcings 
    147             CALL dia_wri_state( 'output.init' ) 
    148          ENDIF 
    149       ENDIF 
    150  
    151       IF(ln_ctl) THEN         ! print mean trends (used for debugging) 
    152          CALL prt_ctl(tab2d_1=emp    , clinfo1=' emp  -   : ', mask1=tmask, ovlap=1) 
    153          CALL prt_ctl(tab2d_1=emps   , clinfo1=' emps -   : ', mask1=tmask, ovlap=1) 
    154          CALL prt_ctl(tab2d_1=qns    , clinfo1=' qns  -   : ', mask1=tmask, ovlap=1) 
    155          CALL prt_ctl(tab2d_1=qsr    , clinfo1=' qsr  -   : ', mask1=tmask, ovlap=1) 
    156          CALL prt_ctl(tab3d_1=tmask  , clinfo1=' tmask    : ', mask1=tmask, ovlap=1, kdim=jpk) 
    157          CALL prt_ctl(tab3d_1=tn     , clinfo1=' sst  -   : ', mask1=tmask, ovlap=1, kdim=1) 
    158          CALL prt_ctl(tab3d_1=sn     , clinfo1=' sss  -   : ', mask1=tmask, ovlap=1, kdim=1) 
    159          CALL prt_ctl(tab2d_1=utau   , clinfo1=' tau  - u : ', mask1=umask, & 
    160             &         tab2d_2=vtau   , clinfo2='      - v : ', mask2=vmask, ovlap=1) 
    161       ENDIF 
    162  
    163  
    164118 
    165119      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
     
    172126      !----------------------------------------------------------------------- 
    173127 
    174                        CALL bn2( tb, sb, rn2 )              ! before Brunt-Vaisala frequency 
     128                        CALL bn2( tb, sb, rn2 )             ! before Brunt-Vaisala frequency 
    175129       
    176130      !                                                     ! Vertical eddy viscosity and diffusivity coefficients 
    177       IF( lk_zdfric )   CALL zdf_ric( kstp )                       ! Richardson number dependent Kz 
    178       IF( lk_zdftke )   CALL zdf_tke( kstp )                       ! TKE closure scheme for Kz 
    179       IF( lk_zdfkpp )   CALL zdf_kpp( kstp )                       ! KPP scheme for Kz 
    180       IF( lk_zdfcst )   avt (:,:,:) = avt0 * tmask(:,:,:)          ! Constant Kz (reset avt to the background value) 
    181  
    182  
     131      IF( lk_zdfric )   CALL zdf_ric( kstp )                     ! Richardson number dependent Kz 
     132      IF( lk_zdftke )   CALL zdf_tke( kstp )                     ! TKE closure scheme for Kz 
     133      IF( lk_zdfkpp )   CALL zdf_kpp( kstp )                     ! KPP closure scheme for Kz 
     134      IF( lk_zdfcst )   THEN                                     ! Constant Kz (reset avt, avm to the background value) 
     135         avt (:,:,:) = avt0 * tmask(:,:,:) 
     136         avmu(:,:,:) = avm0 * umask(:,:,:) 
     137         avmv(:,:,:) = avm0 * vmask(:,:,:) 
     138      ENDIF 
     139      IF( nn_runoff /=0 ) THEN                              ! increase diffusivity at rivers mouths 
     140         DO jk = 2, nkrnf   ;   avt(:,:,jk) = avt(:,:,jk) + rn_avt_rnf * rnfmsk(:,:)   ;   END DO 
     141      ENDIF 
    183142      IF( ln_zdfevd )   CALL zdf_evd( kstp )                 ! enhanced vertical eddy diffusivity 
    184  
    185       IF( lk_zdfddm .AND. .NOT. lk_zdfkpp)   & 
     143      IF( lk_zdfddm .AND. .NOT. lk_zdfkpp )   & 
    186144         &              CALL zdf_ddm( kstp )                 ! double diffusive mixing 
    187  
    188145                        CALL zdf_bfr( kstp )                 ! bottom friction 
    189  
    190146                        CALL zdf_mxl( kstp )                 ! mixed layer depth 
    191147 
    192  
    193148#if defined key_passivetrc 
    194149      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
     
    197152      ! N.B. ua, va, ta, sa arrays are used as workspace in this section 
    198153      !----------------------------------------------------------------------- 
    199  
    200                                CALL trc_stp( kstp, indic )            ! time-stepping 
    201  
     154                             CALL trc_stp( kstp, indic )            ! time-stepping 
    202155#endif 
    203156 
    204  
    205157      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    206158      ! Active tracers 
     
    208160      ! N.B. ua, va arrays are used as workspace in this section 
    209161      !----------------------------------------------------------------------- 
    210  
    211                                ta(:,:,:) = 0.e0               ! set tracer trends to zero 
    212                                sa(:,:,:) = 0.e0 
    213  
    214                                CALL tra_sbc( kstp )           ! surface boundary condition 
    215  
    216       IF( ln_traqsr        )   CALL tra_qsr( kstp )           ! penetrative solar radiation qsr 
    217  
    218       IF( lk_zdfkpp        )   CALL tra_kpp( kstp )           ! KPP non-local tracer fluxes 
    219  
    220                                CALL tra_zdf( kstp )           ! vertical mixing 
    221  
    222                                CALL tra_nxt( kstp )           ! tracer fields at next time step 
    223  
    224                                CALL eos( tb, sb, rhd, rhop )       ! now (swap=before) in situ density for dynhpg module 
     162                             ta(:,:,:) = 0.e0                ! set tracer trends to zero 
     163                             sa(:,:,:) = 0.e0 
     164 
     165                             CALL tra_sbc    ( kstp )        ! surface boundary condition 
     166      IF( ln_traqsr      )   CALL tra_qsr    ( kstp )        ! penetrative solar radiation qsr 
     167                             CALL tra_adv    ( kstp )        ! horizontal & vertical advection 
     168      IF( lk_zdfkpp )        CALL tra_kpp    ( kstp )        ! KPP non-local tracer fluxes 
     169                             CALL tra_zdf    ( kstp )        ! vertical mixing 
     170                             CALL tra_nxt( kstp )            ! tracer fields at next time step 
     171      IF( ln_zdfnpc      )   CALL tra_npc( kstp )            ! applied non penetrative convective adjustment on (t,s) 
     172                             CALL eos( tb, sb, rhd, rhop )   ! now (swap=before) in situ density for dynhpg module 
    225173 
    226174      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
     
    229177      ! N.B. ta, sa arrays are used as workspace in this section  
    230178      !----------------------------------------------------------------------- 
    231  
    232179                               ua(:,:,:) = 0.e0               ! set dynamics trends to zero 
    233180                               va(:,:,:) = 0.e0 
    234    
    235                                CALL dyn_cor_1d     ( kstp ) 
    236       !                                                       ! vertical diffusion 
    237                                CALL dyn_zdf( kstp )       
    238  
    239 !i bug lbc sur emp 
    240       CALL lbc_lnk( emp, 'T', 1. ) 
    241 !i 
    242   
    243                                 CALL dyn_nxt_1d( kstp )          ! lateral velocity at next time step  
    244  
     181 
     182                               CALL dyn_vor_c1d( kstp )       ! vorticity term including Coriolis 
     183                               CALL dyn_zdf    ( kstp )       ! vertical diffusion 
     184                               CALL dyn_nxt_c1d( kstp )       ! lateral velocity at next time step 
    245185 
    246186      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
     
    249189      ! N.B. ua, va, ta, sa arrays are used as workspace in this section 
    250190      !----------------------------------------------------------------------- 
    251  
    252                                CALL oc_fz_pt                    ! ocean surface freezing temperature 
    253  
    254  
    255       !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    256       ! Control, diagnostics and outputs 
    257       !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
    258       ! N.B. ua, va, ta, sa arrays are used as workspace in this section 
    259       !----------------------------------------------------------------------- 
    260  
    261       !                                            ! Time loop: control and print 
    262                        CALL stp_ctl( kstp, indic ) 
    263                        IF ( indic < 0 ) CALL ctl_stop( 'step1d: indic < 0' ) 
    264  
    265       IF ( nstop == 0 ) THEN 
    266          !                                         ! Diagnostics: 
    267          !                                         ! save and outputs 
    268                            CALL rst_write  ( kstp )              ! ocean model: restart file output 
    269                            CALL dia_wri_1d ( kstp, indic )       ! ocean model: outputs 
    270  
    271       ENDIF 
    272  
    273  
    274    END SUBROUTINE stp_1d 
     191                       CALL oc_fz_pt                        ! ocean surface freezing temperature 
     192 
     193      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
     194      ! Control and restarts 
     195      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
     196                                 CALL stp_ctl( kstp, indic ) 
     197      IF( kstp == nit000     )   CALL iom_close( numror )             ! close input  ocean restart file 
     198      IF( lrst_oce           )   CALL rst_write  ( kstp )             ! write output ocean restart file 
     199 
     200      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
     201      ! diagnostics and outputs 
     202      !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 
     203      ! N.B. ua, va, ta, sa arrays are used as workspace in this section 
     204      !----------------------------------------------------------------------- 
     205 
     206      IF( nstop == 0 )           CALL dia_wri_c1d( kstp, indic )       ! ocean model: outputs 
     207      ! 
     208   END SUBROUTINE stp_c1d 
     209 
    275210#else 
    276211   !!---------------------------------------------------------------------- 
    277    !!   Default key                                     NO 1D Config 
     212   !!   Default key                                            NO 1D Config 
    278213   !!---------------------------------------------------------------------- 
    279214CONTAINS 
    280    SUBROUTINE stp_1d ( kt ) 
    281       WRITE(*,*) 'stp_1d: You should not have seen this print! error?', kt 
    282    END SUBROUTINE stp_1d 
     215   SUBROUTINE stp_c1d ( kt )      ! dummy routine 
     216      WRITE(*,*) 'stp_c1d: You should not have seen this print! error?', kt 
     217   END SUBROUTINE stp_c1d 
    283218#endif 
     219 
    284220   !!====================================================================== 
    285 END MODULE step1d 
     221END MODULE step_c1d 
  • trunk/NEMO/LIM_SRC_2/iceini_2.F90

    r888 r900  
    2626   USE limistate_2 
    2727   USE limrst_2    
    28    USE ini1d           ! initialization of the 1D configuration 
    2928   USE in_out_manager 
    3029       
     
    101100      READ   ( numnam_ice , namicerun ) 
    102101 
    103       IF( lk_cfg_1d  )   ln_limdyn = .FALSE.      ! No ice transport in 1D configuration 
    104  
    105102      IF(lwp) THEN 
    106103         WRITE(numout,*) 
  • trunk/NEMO/OPA_SRC/DOM/domzgr.F90

    r899 r900  
    2323   USE closea 
    2424   USE solisl 
    25    USE ini1d           ! initialization of the 1D configuration 
     25   USE c1d             ! 1D configuration 
    2626 
    2727   IMPLICIT NONE 
  • trunk/NEMO/OPA_SRC/SBC/sbcice_lim.F90

    r888 r900  
    1818   !!---------------------------------------------------------------------- 
    1919   USE oce             ! ocean dynamics and tracers 
     20   USE c1d             ! 1d configuration 
    2021   USE dom_oce         ! ocean space and time domain 
    2122   USE par_ice         ! sea-ice parameters 
     
    135136 
    136137         ! ... masked sea surface freezing temperature [Kelvin] (set to rt0 over land) 
    137 !old fashion         zsss_m (:,:) = SQRT( sss_m(:,:) ) 
    138 !old fashion         zsss2_m(:,:) = sss_m(:,:) * sss_m(:,:) 
    139 !old fashion         zsss3_m(:,:) = zsss_m(:,:) * zsss_m(:,:) * zsss_m(:,:) 
    140 !old fashion 
    141 !old fashion         DO jj = 1, jpj 
    142 !old fashion            DO ji = 1, jpi 
    143 !old fashion               t_bo(ji,jj)  = ABS ( rt0 - 0.0575      * sss_m(ji,jj)      & 
    144 !old fashion                  &                    + 1.710523e-03 * zsss3_m(ji,jj)    & 
    145 !old fashion                  &                    - 2.154996e-04 * zsss2_m(ji,jj) )  & 
    146 !old fashion                            * tms(ji,jj) 
    147 !old fashion            END DO 
    148 !old fashion         END DO 
    149138         t_bo(:,:) = tfreez( sss_m ) +  rt0  
    150139 
     
    221210         d_oa_i_thd(:,:,:)  = 0.e0 ; d_oa_i_trp(:,:,:)  = 0.e0 
    222211 
    223          emps(:,:)      = 0.e0     ; fseqv(:,:)     = 0.e0 
     212         fseqv(:,:)     = 0.e0 
    224213         fsbri(:,:)     = 0.e0     ; fsalt_res(:,:) = 0.e0 
    225214         fsalt_rpo(:,:) = 0.e0 
     
    251240         ! Dynamical processes |        
    252241         !---------------------| 
    253                          CALL lim_dyn                    ! Ice dynamics    ( rheology/dynamics ) 
    254                          CALL lim_trp                    ! Ice transport   ( Advection/diffusion ) 
    255                          CALL lim_var_agg(1)             ! aggregate categories, requested 
    256                          CALL lim_var_glo2eqv            ! equivalent variables, requested for rafting 
     242         IF( .NOT. lk_c1d ) THEN                         ! Ice dynamics & transport (not in 1D case) 
     243                         CALL lim_dyn                         ! Ice dynamics    ( rheology/dynamics ) 
     244                         CALL lim_trp                         ! Ice transport   ( Advection/diffusion ) 
     245                         CALL lim_var_agg(1)                  ! aggregate categories, requested 
     246                         CALL lim_var_glo2eqv                 ! equivalent variables, requested for rafting 
    257247                         !+++++ 
    258248                         WRITE(numout,*) ' - After ice dynamics and transport ' 
    259                          CALL lim_inst_state(jiindx,jjindx,1) 
    260                          WRITE(numout,*) ' ' 
     249                         CALL lim_inst_state( jiindx, jjindx, 1 ) 
    261250                         WRITE(numout,*) 
    262251                         WRITE(numout,*) ' Mechanical Check ************** ' 
     
    267256                         WRITE(numout,*) ' Sum of both minus 1     ', ato_i(jiindx,jjindx) + at_i(jiindx,jjindx) - 1.00 
    268257                         !+++++ 
    269                          CALL lim_itd_me                 ! Mechanical redistribution ! (ridging/rafting) 
     258                         CALL lim_itd_me                      ! Mechanical redistribution ! (ridging/rafting) 
     259         ENDIF 
    270260         !--------------------| 
    271261         ! Ice thermodynamics | 
     
    317307         IF( lrst_ice )  CALL lim_rst_write( kt )        ! Ice restart file  
    318308                         CALL lim_var_glo2eqv 
    319          ! 
    320          ! Re-initialization of forcings 
    321          qsr     (:,:)   = 0.e0 
    322          qns     (:,:)   = 0.e0 
    323          tprecip (:,:)   = 0.e0  
    324          sprecip (:,:)   = 0.e0 
    325          qsr_ice (:,:,:) = 0.e0 
    326          qns_ice (:,:,:) = 0.e0  
    327          dqns_ice(:,:,:) = 0.e0  
    328 #if ! defined key_coupled  
    329          qla_ice (:,:,:) = 0.e0 
    330          dqla_ice(:,:,:) = 0.e0 
    331          fr1_i0  (:,:)   = 0.e0 
    332          fr2_i0  (:,:)   = 0.e0 
    333 #else 
    334          rrunoff (:,:)   = 0.e0 
    335          calving (:,:)   = 0.e0 
    336 #endif 
    337309         ! 
    338310         !-------------------------------| 
  • trunk/NEMO/OPA_SRC/SBC/sbcice_lim_2.F90

    r888 r900  
    1212   !!   'key_lim2' :                                  LIM 2.0 sea-ice model 
    1313   !!---------------------------------------------------------------------- 
    14    !!---------------------------------------------------------------------- 
    1514   !!   sbc_ice_lim_2  : sea-ice model time-stepping and 
    1615   !!                    update ocean sbc over ice-covered area 
    1716   !!---------------------------------------------------------------------- 
    1817   USE oce             ! ocean dynamics and tracers 
     18   USE c1d             ! 1d configuration 
    1919   USE dom_oce         ! ocean space and time domain 
    2020   USE ice_2 
     
    5858#  include "vectopt_loop_substitute.h90" 
    5959   !!---------------------------------------------------------------------- 
    60    !!   OPA 9.0 , LOCEAN-IPSL (2006)  
    61    !! $ Id: $ 
     60   !! NEMO/SBC  3.0 , LOCEAN-IPSL (2008)  
     61   !! $Id: $ 
    6262   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 
    6363   !!---------------------------------------------------------------------- 
     
    177177         !  Ice model step  ! 
    178178         ! ---------------- ! 
    179          ;                              CALL lim_rst_opn_2  ( kt )      ! Open Ice restart file 
    180          ;                              CALL lim_dyn_2      ( kt )      ! Ice dynamics    ( rheology/dynamics ) 
    181          ;                              CALL lim_trp_2      ( kt )      ! Ice transport   ( Advection/diffusion ) 
    182          IF( ln_limdmp )                CALL lim_dmp_2      ( kt )      ! Ice damping  
    183          ;                              CALL lim_thd_2      ( kt )      ! Ice thermodynamics  
    184          ;                              CALL lim_sbc_2      ( kt )      ! Ice/Ocean Mass & Heat fluxes  
     179                                        CALL lim_rst_opn_2  ( kt )      ! Open Ice restart file 
     180         IF( .NOT. lk_c1d ) THEN                                        ! Ice dynamics & transport (not in 1D case) 
     181                                        CALL lim_dyn_2      ( kt )           ! Ice dynamics    ( rheology/dynamics ) 
     182                                        CALL lim_trp_2      ( kt )           ! Ice transport   ( Advection/diffusion ) 
     183            IF( ln_limdmp )             CALL lim_dmp_2      ( kt )           ! Ice damping  
     184         ENDIF 
     185                                        CALL lim_thd_2      ( kt )      ! Ice thermodynamics  
     186                                        CALL lim_sbc_2      ( kt )      ! Ice/Ocean Mass & Heat fluxes  
    185187         IF( MOD( kt+nn_fsbc-1, ninfo ) == 0 .OR.   & 
    186188            &  ntmoy == 1 )             CALL lim_dia_2      ( kt )      ! Ice Diagnostics  
    187          ;                              CALL lim_wri_2      ( kt )      ! Ice outputs  
     189                                        CALL lim_wri_2      ( kt )      ! Ice outputs  
    188190         IF( lrst_ice )                 CALL lim_rst_write_2( kt )      ! Ice restart file  
    189191         ! 
  • trunk/NEMO/OPA_SRC/istate.F90

    r899 r900  
    3636   USE in_out_manager  ! I/O manager 
    3737   USE iom 
    38    USE ini1d           ! re-initialization of u-v mask for the 1D configuration 
     38   USE c1d             ! re-initialization of u-v mask for the 1D configuration 
    3939   USE zpshde          ! partial step: hor. derivative (zps_hde routine) 
    4040   USE eosbn2          ! equation of state            (eos bn2 routine) 
  • trunk/NEMO/OPA_SRC/opa.F90

    r899 r900  
    7373   USE dynspg_oce      ! Control choice of surface pressure gradient schemes 
    7474   USE prtctl          ! Print control                 (prt_ctl_init routine) 
    75    USE ini1d           ! re-initialization of u-v mask for the 1D configuration 
    76    USE dyncor1d        ! Coriolis factor at T-point 
    77    USE step1d          ! Time stepping loop for the 1D configuration 
     75   USE c1d             ! 1D configuration 
     76   USE dyncor_c1d      ! Coriolis factor at T-point 
     77   USE step_c1d        ! Time stepping loop for the 1D configuration 
    7878 
    7979   USE initrc          ! Initialization of the passive tracers 
     
    122122      ! check that all process are still there... If some process have an error, 
    123123      ! they will never enter in step and other processes will wait until the end of the cpu time! 
    124       IF( lk_mpp )   CALL mpp_max(nstop) 
    125  
    126       IF( lk_c1d ) THEN  
    127          istp = nit000 
     124      IF( lk_mpp )   CALL mpp_max( nstop ) 
     125 
     126      istp = nit000 
     127      IF( lk_c1d ) THEN                 ! 1D configuration (no AGRIF zoom) 
     128         ! 
     129         DO WHILE ( istp <= nitend .AND. nstop == 0 ) 
     130            CALL stp_c1d( istp ) 
     131            istp = istp + 1 
     132         END DO 
     133      ELSE                              ! 3D ocean with or without AGRIF zoom 
     134         ! 
    128135         DO WHILE ( istp <= nitend .AND. nstop == 0 ) 
    129136#if defined key_agrif 
    130             CALL Agrif_Step(stp_1d) 
    131 #else 
    132             CALL stp_1d( istp ) 
    133 #endif 
    134             istp = istp + 1 
    135  
    136             IF( lk_mpp )   CALL mpp_max(nstop) 
    137   
    138          END DO 
    139       ELSE 
    140          istp = nit000 
    141          DO WHILE ( istp <= nitend .AND. nstop == 0 ) 
    142 #if defined key_agrif 
    143             CALL Agrif_Step(stp) 
     137            CALL Agrif_Step( stp ) 
    144138#else 
    145139            CALL stp( istp ) 
    146140#endif 
    147141            istp = istp + 1 
    148  
    149             IF( lk_mpp )   CALL mpp_max(nstop) 
    150              
     142            IF( lk_mpp )   CALL mpp_max( nstop ) 
    151143         END DO 
    152144      ENDIF 
     
    168160      IF( lk_mpp )   CALL mppstop                          ! Close all files (mpp) 
    169161#endif 
    170  
     162      ! 
    171163   END SUBROUTINE opa_model 
    172164 
     
    267259      CALL dom_init                         ! Domain 
    268260 
    269       IF( ln_ctl )      CALL prt_ctl_init   ! Print control 
    270  
    271       IF( lk_c1d )      CALL fcorio_1d      ! redefine Coriolis at T-point 
     261      IF( lk_c1d    ) THEN                      ! adaptation for 1D configuration  
     262         CALL cor_c1d                                ! redefine Coriolis at T-point 
     263         umask(:,:,:) = tmask(:,:,:)                 ! U, V and T-points are the same 
     264         vmask(:,:,:) = tmask(:,:,:)                 !  
     265      ENDIF 
     266 
     267      IF( ln_ctl    )   CALL prt_ctl_init   ! Print control 
    272268 
    273269      IF( lk_obc    )   CALL obc_init       ! Open boundaries  
     
    309305 
    310306      IF(lwp) WRITE(numout,cform_aaa)       ! Flag AAAAAAA 
    311  
    312       IF( lk_c1d  )  THEN  
    313          CALL init_1d 
    314       ENDIF 
    315307 
    316308   END SUBROUTINE opa_init 
  • trunk/NEMO/OPA_SRC/par_oce.F90

    r899 r900  
    2828   INTEGER, PUBLIC, PARAMETER ::    &  !:  
    2929      jpni   = 1,                   &  !: number of processors following i  
    30       jpnj   = 2,                   &  !: number of processors following j 
    31       jpnij  = 2                       !: nb of local domain = nb of processors  
     30      jpnj   = 1,                   &  !: number of processors following j 
     31      jpnij  = 1                       !: nb of local domain = nb of processors  
    3232      !                                !  ( <= jpni x jpnj ) 
    3333#else 
  • trunk/NEMO/OPA_SRC/restart.F90

    r899 r900  
    2222   USE in_out_manager  ! I/O manager 
    2323   USE iom             ! I/O module 
    24    USE ini1d           ! re-initialization of u-v mask for the 1D configuration 
     24   USE c1d             ! re-initialization of u-v mask for the 1D configuration 
    2525   USE zpshde          ! partial step: hor. derivative (zps_hde routine) 
    2626   USE eosbn2          ! equation of state            (eos bn2 routine) 
Note: See TracChangeset for help on using the changeset viewer.