New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 4902 – NEMO

Changeset 4902


Ignore:
Timestamp:
2014-11-27T17:13:38+01:00 (9 years ago)
Author:
cetlod
Message:

2014/dev_CNRS_2014 : Merge in the trunk changes between 4728 and 4879, see ticket #1415

Location:
branches/2014/dev_CNRS_2014
Files:
90 edited
6 copied

Legend:

Unmodified
Added
Removed
  • branches/2014/dev_CNRS_2014/DOC/TexFiles/Chapters/Chap_DYN.tex

    r4560 r4902  
    795795%>   >   >   >   >   >   >   >   >   >   >   >   >   >   >   >   >   >   >   >   >   >   >   >   >   >   >   > 
    796796\begin{figure}[!t]    \begin{center} 
    797 \includegraphics[width=0.7\textwidth]{./TexFiles/Figures/Fig_time_split.pdf} 
     797\includegraphics[width=0.7\textwidth]{./TexFiles/Figures/Fig_DYN_dynspg_ts.pdf} 
    798798\caption{  \label{Fig_DYN_dynspg_ts} 
    799799Schematic of the split-explicit time stepping scheme for the external  
  • branches/2014/dev_CNRS_2014/NEMOGCM/ARCH/CMCC/arch-PW6_calypso.fcm

    r4230 r4902  
    1717%NCDF_INC            -I/usr/local/netcdf-3.6.3/include 
    1818%NCDF_LIB            -L/usr/local/netcdf-3.6.3/lib -lnetcdf 
     19%CPP                 cpp 
    1920%FC                  mpxlf90_r 
    2021%FCFLAGS             -O3 -qsuffix=f=f90  -qstrict -qalias=intptr -qsuppress=1501-245 -qarch=pwr6 -q64 -qrealsize=8 -qtune=pwr6 -qextname -qlargepage -qmaxmem=-1 
  • branches/2014/dev_CNRS_2014/NEMOGCM/ARCH/CMCC/arch-PW6_calypso_debug.fcm

    r4230 r4902  
    1717%NCDF_INC            -I/usr/local/netcdf-3.6.3/include 
    1818%NCDF_LIB            -L/usr/local/netcdf-3.6.3/lib -lnetcdf 
     19%CPP                 cpp 
    1920%FC                  mpxlf90_r 
    2021%FCFLAGS             -g -qsuffix=f=f90  -qstrict -qalias=intptr -qsuppress=1501-245 -qarch=pwr6 -q64 -qrealsize=8 -qtune=pwr6 -qextname -qlargepage -qmaxmem=-1 
  • branches/2014/dev_CNRS_2014/NEMOGCM/ARCH/CMCC/arch-PW6_calypso_tools.fcm

    r4230 r4902  
    1717%NCDF_INC            -I/usr/local/netcdf-3.6.3/include 
    1818%NCDF_LIB            -L/usr/local/netcdf-3.6.3/lib -lnetcdf 
     19%CPP                 cpp 
    1920%FC                  xlf90 
    2021%FCFLAGS             -O3 -qsuffix=f=f90  -qstrict -qsuppress=1501-245 -qarch=pwr6 -q64 -qrealsize=8 -qtune=pwr6 -qextname -qlargepage -qmaxmem=-1 
  • branches/2014/dev_CNRS_2014/NEMOGCM/ARCH/CMCC/arch-gfortran_athena_xios.fcm

    r4274 r4902  
    4444%XIOS_LIB            -L%XIOS_HOME/lib -lxios 
    4545 
     46%CPP                 cpp 
    4647%FC                  mpif90 
    4748%FCFLAGS             -fdefault-real-8 -fno-second-underscore -Dgfortran -ffree-line-length-none 
  • branches/2014/dev_CNRS_2014/NEMOGCM/ARCH/CMCC/arch-ifort_athena.fcm

    r4230 r4902  
    1717%NCDF_INC -I$NETCDF/include 
    1818%NCDF_LIB -L$NETCDF/lib -lnetcdf -lnetcdff 
     19%CPP                 cpp 
    1920%FC mpiifort 
    2021%FCFLAGS -r8 -O3 -xHost -fp-model source -traceback 
  • branches/2014/dev_CNRS_2014/NEMOGCM/ARCH/CMCC/arch-ifort_athena_debug.fcm

    r4230 r4902  
    1717%NCDF_INC -I$NETCDF/include 
    1818%NCDF_LIB -L$NETCDF/lib -lnetcdf -lnetcdff 
     19%CPP                 cpp 
    1920%FC mpiifort 
    2021%FCFLAGS -fpe0 -g -r8 -O1 -xHost -fp-model source -traceback 
  • branches/2014/dev_CNRS_2014/NEMOGCM/ARCH/CMCC/arch-ifort_athena_tools.fcm

    r4230 r4902  
    1717%NCDF_INC -I$NETCDF/include 
    1818%NCDF_LIB -L$NETCDF/lib -lnetcdf -lnetcdff 
     19%CPP                 cpp 
    1920%FC ifort 
    2021%FCFLAGS -r8 -O3 -xHost -fp-model source -traceback 
  • branches/2014/dev_CNRS_2014/NEMOGCM/ARCH/CMCC/arch-ifort_athena_xios.fcm

    r4494 r4902  
    4141%XIOS_INC            -I/users/home/ans040/SOFTWARE/XIOS_athena/trunk/inc 
    4242%XIOS_LIB            -L/users/home/ans040/SOFTWARE/XIOS_athena/trunk/lib -lxios 
     43%CPP                 cpp 
    4344%FC                  mpiifort 
    4445%FCFLAGS         -g -r8 -O3 -xHost -fp-model source -traceback 
  • branches/2014/dev_CNRS_2014/NEMOGCM/ARCH/INGV/arch-IBM_EKMAN_INGV.fcm

    r4277 r4902  
    2020%XIOS_ROOT           /home/delrosso/XIOS_447/trunk 
    2121%MPI_INTEL           -I/srv/intel/impi/4.1.0.024/include 
     22%CPP                 cpp 
    2223%FC                  mpiifort 
    2324%FCFLAGS             -r8 -O3 -g -traceback  
  • branches/2014/dev_CNRS_2014/NEMOGCM/ARCH/arch-ALTIX_NAUTILUS_MPT.fcm

    r4901 r4902  
    4242%OASIS_LIB           -L%OASIS_HOME/lib -lpsmile.MPI1 -lmct -lmpeu -lscrip 
    4343 
     44%CPP               cpp 
    4445%FC                  ifort 
    4546%FCFLAGS             -r8 -O3 -fp-model precise -xT -ip -vec-report0 
  • branches/2014/dev_CNRS_2014/NEMOGCM/ARCH/arch-PW7_C2A_XIO.fcm

    r4148 r4902  
    3535 
    3636%XLF90_LIB           -lxlf90_r 
     37 
     38%CPP               cpp 
    3739%FC                  mpxlf90_r 
    3840%FCFLAGS             -qsuffix=f=f90 -qsuffix=cpp=F90 -qfree=f90 -O3 -qrealsize=8 -qarch=auto -qtune=auto -qinitauto 
  • branches/2014/dev_CNRS_2014/NEMOGCM/ARCH/arch-PW7_METO.fcm

    r4377 r4902  
    2121%XIOS_INC            -I/data/nwp/ofrd/share/NEMO/xios_lib/seq/xios_r451/inc 
    2222%XIOS_LIB            -L/data/nwp/ofrd/share/NEMO/xios_lib/seq/xios_r451/lib -lxios 
     23%CPP               cpp 
    2324%FC                  mpxlf90_r 
    2425%FCFLAGS             -qrealsize=8 -qextname -qsuffix=f=f90 -qarch=pwr7 -qtune=pwr7 -g -O2 -qstrict -qinitauto=7FBFFFFF 
    25 %FFLAGS              -qrealsize=8 -qextname -qsuffix=f=f90 -qarch=pwr7 -qtune=pwr7 -g -O2 -qstrict -qinitauto=7FBFFFFF 
     26%FFLAGS              -qrealsize=8 -qextname -qarch=pwr7 -qtune=pwr7 -g -O2 -qstrict -qinitauto=7FBFFFFF -qfixed 
    2627%LD                  mpCC_r 
    2728%LDFLAGS             -lxlf90 -L/projects/um1/lib -lsig -O2 -L MASS 
  • branches/2014/dev_CNRS_2014/NEMOGCM/ARCH/arch-X64_CURIE.fcm

    r4153 r4902  
    4141%OASIS_LIB           -L%OASIS_HOME/lib -lpsmile.MPI1 -lmct -lmpeu -lscrip 
    4242 
     43%CPP               cpp 
    4344%FC                  mpif90 -c -cpp 
    4445# for Curie Fat Node 
  • branches/2014/dev_CNRS_2014/NEMOGCM/ARCH/arch-X64_MOBILIS.fcm

    r4897 r4902  
    4646%OASIS_LIB            
    4747 
     48%CPP               cpp 
    4849%FC                  mpif90 -c -cpp 
    4950%FCFLAGS             -i4 -r8 -O3 -fp-model source -xAVX 
  • branches/2014/dev_CNRS_2014/NEMOGCM/ARCH/arch-X64_VAYU.fcm

    r4148 r4902  
    4141%OASIS_LIB           -L%OASIS_HOME/lib -lpsmile.MPI1 -lmct -lmpeu -lscrip 
    4242 
     43%CPP               cpp 
    4344%FC                  mpif90 -c -cpp 
    4445%FCFLAGS             -i4 -r8 
  • branches/2014/dev_CNRS_2014/NEMOGCM/ARCH/arch-X64_YELLOWSTONE.fcm

    r4153 r4902  
    4141%OASIS_LIB           -L%OASIS_HOME/lib -lpsmile.MPI1 -lmct -lmpeu -lscrip 
    4242 
     43%CPP               cpp 
    4344%FC                  mpif90 -c -cpp 
    4445%FCFLAGS            -i4 -r8 -O3 -fp-model precise -xAVX 
  • branches/2014/dev_CNRS_2014/NEMOGCM/ARCH/arch-XC_ARCHER.fcm

    r4897 r4902  
    4141#OASIS_LIB           -L%OASIS_HOME/lib -lpsmile.MPI1 -lmct -lmpeu -lscrip 
    4242 
     43%CPP               cpp 
    4344%FC                  ftn 
    4445#FCFLAGS             -em -s integer32 -s real64 -O3 
  • branches/2014/dev_CNRS_2014/NEMOGCM/ARCH/arch-XC_ARCHER_INTEL.fcm

    r4900 r4902  
    4141#OASIS_LIB           -L%OASIS_HOME/lib -lpsmile.MPI1 -lmct -lmpeu -lscrip 
    4242 
     43%CPP               cpp 
    4344%FC                  ftn 
    4445%FCFLAGS             -integer-size 32 -real-size 64 -O3 -fp-model source -zero -fpp -warn all 
  • branches/2014/dev_CNRS_2014/NEMOGCM/ARCH/arch-macport_osx.fcm

    r4148 r4902  
    5050%OASIS_LIB           -L%OASIS_HOME/lib -lpsmile.MPI1 -lmct -lmpeu -lscrip 
    5151 
     52%CPP               cpp-mp-4.8 
    5253%FC                mpif90  
    5354%FCFLAGS             -fdefault-real-8 -O3 -funroll-all-loops -fcray-pointer  
  • branches/2014/dev_CNRS_2014/NEMOGCM/ARCH/arch-openmpi_NAVITI_MERCATOR.fcm

    r4524 r4902  
    1919%NCDF_LIB            -L$NETCDF_LIB -lnetcdff -lnetcdf -L$HDF5_LIB -lhdf5_hl -lhdf5 -lz 
    2020 
     21%CPP               cpp 
    2122%FC                  mpif90 
    2223%FCFLAGS             -O2 -fp-model precise  -traceback -r8  -convert big_endian -assume byterecl 
  • branches/2014/dev_CNRS_2014/NEMOGCM/ARCH/arch-x3750_ADA.fcm

    r4148 r4902  
    4141%OASIS_LIB           -L%OASIS_HOME/lib -lpsmile.MPI1 -lmct -lmpeu -lscrip 
    4242 
     43%CPP               cpp 
    4344%FC                  mpiifort -c -cpp 
    4445%FCFLAGS             -DCPP_PARA -i4 -r8 -O3 -xAVX -fp-model precise 
  • branches/2014/dev_CNRS_2014/NEMOGCM/CONFIG/AMM12/EXP00/namelist_cfg

    r4493 r4902  
    1414   cn_ocerst_in   = "amm12_restart_oce"   !  suffix of ocean restart name (input) 
    1515   cn_ocerst_out  = "restart_oce_out"   !  suffix of ocean restart name (input) 
    16    nn_istate   =       1   !  output the initial state (1) or not (0) 
    1716   nn_stock    =    1296   !  frequency of creation of a restart file (modulo referenced to 1) 
    1817   nn_write    =     144   !  frequency of write in the output file   (modulo referenced to nit000)  
  • branches/2014/dev_CNRS_2014/NEMOGCM/CONFIG/ORCA2_LIM/IDL_scripts/README

    r4394 r4902  
    2424 
    2525 
    26  
    27  
     26#---------------------------------------------------------------------- 
     27# HOW TO USE  
     28#---------------------------------------------------------------------- 
     29./std_main.sh -plot -pdf 
     30or 
     31./std_main.sh -ts -pdf 
    2832 
    2933 
  • branches/2014/dev_CNRS_2014/NEMOGCM/CONFIG/ORCA2_LIM/IDL_scripts/std_plot_IceFrac.pro

    r4559 r4902  
    2121   
    2222  IF keyword_set(arc) THEN BEGIN  
    23     domdef, 20, 380, 50, 90 
     23    domdef, 20, 380, 40, 90 
    2424    map = [90, 0, 0] 
    2525  ENDIF 
    2626  IF keyword_set(ant) THEN BEGIN  
    27     domdef, 20, 380, -90, -50 
     27    domdef, 20, 380, -90, -40 
    2828    map = [-90, 0, 0] 
    2929  ENDIF 
  • branches/2014/dev_CNRS_2014/NEMOGCM/CONFIG/ORCA2_LIM/IDL_scripts/std_plot_all.pro

    r4559 r4902  
    172172  Ithi_april_1 = {arr:1./float(cnt) * total(reform(Ithi_1.arr[*, *, temporary(april)],nxt,nyt,cnt), 3), unit:Ithi_1.unit} 
    173173  jan = where(mm EQ 1, cnt) 
     174  Ithi_jan_1 = {arr:1./float(cnt) * total(reform(Ithi_1.arr[*, *, temporary(jan)],nxt,nyt,cnt), 3), unit:Ithi_1.unit}  
    174175  sept = where(mm EQ 9, cnt) 
    175   Ithi_jan_1 = {arr:1./float(cnt) * total(reform(Ithi_1.arr[*, *, temporary(jan)],nxt,nyt,cnt), 3), unit:Ithi_1.unit}  
    176176  Ithi_sept_1 = {arr:1./float(cnt) * total(reform(Ithi_1.arr[*, *, temporary(sept)],nxt,nyt,cnt), 3), unit:Ithi_1.unit}  
    177177  undefine, Ithi_1 
     
    288288     Isal_sept_2 = {arr:-1} 
    289289   ENDELSE 
    290 ; 
     290 
    291291  IvelU_1 = read_ncdf(getenv('VAR1_IvelU'), allrecords = allrec, filename = std_file1_I )  
    292292  IvelV_1 = read_ncdf(getenv('VAR1_IvelV'), allrecords = allrec, filename = std_file1_I )  
     
    335335    Ivelo_sept_2 = {arr:-1} 
    336336  ENDELSE 
    337 ; 
     337 
    338338  Iage_1 = read_ncdf(getenv('VAR1_Iage'), allrecords = allrec, filename = std_file1_I )  
    339339  caldat, time, mm 
     
    396396  cnt = cnt+1   &   blabla = 'Erp salinity damping term' 
    397397  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_erp, ERP1, ERP2, _extra = ex 
    398 ; 
     398;; 
    399399  cnt = cnt+1   &   blabla = 'Evaporation - Precipitation - Runoff term' 
    400400  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_emp, EMP1, EMP2, _extra = ex 
     
    439439  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_mld, MLD1, MLD2, MLD, _extra = ex 
    440440; 
     441  cnt = cnt+1   &   blabla = 'Mixed layer depth ortho plan ARCTIC' 
     442  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_MLD_ortho, MLD1, MLD2, /ARC, _extra = ex 
     443;sf 
     444  cnt = cnt+1   &   blabla = 'Mixed layer depth ortho plan ANTARTIC' 
     445  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_MLD_ortho, MLD1, MLD2, /ANT, _extra = ex 
     446;sf 
    441447  cnt = cnt+1   &   blabla = 'Zonal mean Mixed layer depth' 
    442448  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_ZonMld, MLD1, MLD2, MLD, _extra = ex 
     
    564570  cnt = cnt+1   &   blabla = 'Antartic Ice Velocity: SEPT' 
    565571  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_IceVel, IvelU_sept_1, IvelU_sept_2, IvelV_sept_1, IvelV_sept_2, Ivelo_sept_1, Ivelo_sept_2, /ANT,  /SEPT, _extra = ex 
    566 ; 
     572 
    567573  cnt = cnt+1   &   blabla = 'Arctic Ice Age: MARCH' 
    568574  IF doplot EQ cnt OR doplot EQ 0 THEN std_plot_IceAge, Iage_march_1, Iage_march_2, Ifra_march_1, Ifra_march_2, /ARC, /MARCH, _extra = ex 
  • branches/2014/dev_CNRS_2014/NEMOGCM/CONFIG/ORCA2_LIM/IDL_scripts/std_plot_vardef.sh

    r4562 r4902  
    2121#idl_command=idl71 
    2222# 
    23 PS_DIR=$( pwd )/OR2LPv36_ps_plot 
    24 PDF_DIR=$( pwd )/OR2LPv36_pdf_plot 
     23PS_DIR=$( pwd )/p4H25a50-testht_ps_plot 
     24PDF_DIR=$( pwd )/p4H25a50-testht_pdf_plot 
    2525HTML_DIR=$( pwd )/html_plot 
    2626SAXO_DIR=/Users/sflod/SAXO_DIR 
    2727# 
    28 DIR_DATA=/Users/sflod/idl_PLOTS/DATA_STORE/RUN_CLIMATO/500y_pisces     # path of data in NetCDF format 
     28DIR_DATA=/Users/sflod/idl_PLOTS/DATA_STORE/RUN_CLIMATO/lim3_ada     # path of data in NetCDF format 
    2929DIR_CLIMATO=/Users/sflod/idl_PLOTS/CLIMATOLOGIES    # path of climatological data 
    3030DIR_MASK=/Users/sflod/idl_PLOTS/MASK  # path of mask files (ex: subbasins) 
     
    5454# 
    5555#===================== EXP1 ===================== 
    56 # 23610101_23701231 
    57 FILE1_T=OR2LPv36_23610101_23701231_1Y_grid_T.nc   # exp1 grid T input file 
    58 FILE1_U=OR2LPv36_23610101_23701231_1Y_grid_U.nc   # exp1 grid U input file 
    59 FILE1_V=OR2LPv36_23610101_23701231_1Y_grid_V.nc   # exp1 grid V input file 
    60 FILE1_I=OR2LPv36_23610101_23701231_1M_icemod.nc   # exp1 ice    input file 
     56# 
     57FILE1_T=p4H25a50_20410101_20501231_1Y_grid_T.nc   # exp1 grid T input file 
     58FILE1_U=p4H25a50_20410101_20501231_1Y_grid_U.nc   # exp1 grid U input file 
     59FILE1_V=p4H25a50_20410101_20501231_1Y_grid_V.nc   # exp1 grid V input file 
     60FILE1_I=p4H25a50_20410101_20501231_1M_icemod.nc   # exp1 ice    input file 
    6161VAR1_T=thetao 
    6262VAR1_S=so         
    63 VAR1_QNET=tohfls 
    64 VAR1_ERP=sowafldp       
     63VAR1_QNET=qt 
     64VAR1_ERP=wfcorr 
    6565VAR1_EMP=wfo 
    6666VAR1_MLD=mldr10_1 
    6767VAR1_U=uocetr_eff 
    6868VAR1_V=vocetr_eff 
    69 VAR1_Ithick=iicethic 
    70 VAR1_Ifrac=soicecov 
    71 VAR1_Isnow=isnowthi 
    72 #VAR1_Isal=sisali 
    73 #VAR1_Iage=siages 
    74 VAR1_IvelU=iicevelu 
    75 VAR1_IvelV=iicevelv 
    76 #VAR1_Ivelo=sivelo 
     69VAR1_Ithick=sithic 
     70VAR1_Ifrac=siconc 
     71VAR1_Isnow=snvolu 
     72VAR1_Isal=sisali 
     73VAR1_Iage=siages 
     74VAR1_IvelU=sivelu 
     75VAR1_IvelV=sivelv 
     76VAR1_Ivelo=sivelo 
    7777# 
    7878#===================== EXP2 ===================== 
    7979# 
    80 FILE2_T=OR2LPv36_23610101_23701231_1Y_grid_T.nc   # exp1 grid T input file 
    81 FILE2_U=OR2LPv36_23610101_23701231_1Y_grid_U.nc   # exp1 grid U input file 
    82 FILE2_V=OR2LPv36_23610101_23701231_1Y_grid_V.nc   # exp1 grid V input file 
    83 FILE2_I=OR2LPv36_23610101_23701231_1M_icemod.nc   # exp1 ice    input file 
     80FILE2_T=testht_20410101_20501231_1Y_grid_T.nc   # exp1 grid T input file 
     81FILE2_U=testht_20410101_20501231_1Y_grid_U.nc   # exp1 grid U input file 
     82FILE2_V=testht_20410101_20501231_1Y_grid_V.nc   # exp1 grid V input file 
     83FILE2_I=testht_20410101_20501231_1M_icemod.nc   # exp1 ice    input file 
    8484VAR2_T=thetao 
    8585VAR2_S=so 
    86 VAR2_QNET=tohfls 
    87 VAR2_ERP=sowafldp 
     86VAR2_QNET=qt 
     87VAR2_ERP=wfcorr 
    8888VAR2_EMP=wfo 
    8989VAR2_MLD=mldr10_1 
    9090VAR2_U=uocetr_eff 
    9191VAR2_V=vocetr_eff 
    92 VAR2_Ithick=iicethic 
    93 VAR2_Ifrac=soicecov 
    94 VAR2_Isnow=isnowthi 
    95 #VAR2_Isal=sisali 
    96 #VAR2_Iage=siages 
    97 VAR2_IvelU=iicevelu 
    98 VAR2_IvelV=iicevelv 
    99 #VAR2_Ivelo=sivelo 
     92VAR2_Ithick=sithic 
     93VAR2_Ifrac=siconc 
     94VAR2_Isnow=snvolu 
     95VAR2_Isal=sisali 
     96VAR2_Iage=siages 
     97VAR2_IvelU=sivelu 
     98VAR2_IvelV=sivelv 
     99VAR2_Ivelo=sivelo 
    100100# 
    101101######################### Export Variables ############################### 
  • branches/2014/dev_CNRS_2014/NEMOGCM/CONFIG/ORCA2_LIM/IDL_scripts/std_plot_vardef.sh.old_names

    r4559 r4902  
    7474VAR1_IvelU=iicevelu 
    7575VAR1_IvelV=iicevelv 
    76 VAR1_Ivelo=iicevelo 
     76#VAR1_Ivelo=iicevelo 
    7777# 
    7878#===================== EXP2 ===================== 
     
    9999VAR2_IvelU=iicevelu 
    100100VAR2_IvelV=iicevelv 
    101 VAR2_Ivelo=iicevelo 
     101#VAR2_Ivelo=iicevelo 
    102102# 
    103103######################### Export Variables ############################### 
  • branches/2014/dev_CNRS_2014/NEMOGCM/CONFIG/ORCA2_LIM/IDL_scripts/std_ts_ICE.pro

    r4497 r4902  
    8888  ICE_S_15 = {arr:ICE_S_15 * 1.e-12, unit : '10^12 m^2'} 
    8989  ; 
    90   title = 'Northern Hemisphere'+'!C'+prefix+' (BLACK) '+d1_d2+'!C'+'OBSERVATION (light blue) '+'!C'+' Global Annual Mean Ice Area (CONTINUOUS) '+'!C'+ 'and Extend minus 15% (DASHED)' 
     90  ;;title = 'Northern Hemisphere'+'!C'+prefix+' (BLACK) '+d1_d2+'!C'+'OBSERVATION (light blue) '+'!C'+' Global Annual Mean Ice Area (CONTINUOUS) '+'!C'+ 'and Extend minus 15% (DASHED)' 
     91  title = 'Northern Hemisphere'+'!C'+prefix+' (BLACK) '+d1_d2+'!C'+'OBSERVATION (light blue) '+'!C'+' Global Annual Mean Ice Area (DASHED) '+'!C'+ 'and Extend minus 15% (CONTINUOUS)' 
    9192  jpt=12 
    9293  time=julday(1,15,1900)+30*lindgen(12) 
    93   pltt, ICE_N, 't', MIN = 4., MAX = 16., /REMPLI, /PORTRAIT, XGRIDSTYLE = 1, DATE_FORMAT = '%M' $ 
     94  pltt, ICE_N, 't', MIN = 4., MAX = 16., /REMPLI, /PORTRAIT, LINESTYLE=2, XGRIDSTYLE = 1, DATE_FORMAT = '%M' $ 
    9495       , COLOR = 000 , small = [1, 2, 1], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex 
    95   pltt, ICE_N_15, 't', /REMPLI, /PORTRAIT, LINESTYLE=2 $       ;;; dashed lines is LINESTYLE=2  $ 
     96  pltt, ICE_N_15, 't', /REMPLI, /PORTRAIT $       ;;; dashed lines is LINESTYLE=2  $ 
    9697        , /ov1d, COLOR = 000, small = [1, 2, 1], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex  
    97   pltt, vICE_area_NH, 't',  /REMPLI, /PORTRAIT  $  
     98  pltt, vICE_area_NH, 't',  /REMPLI, /PORTRAIT, LINESTYLE=2  $  
    9899        , /ov1d, COLOR = 100, small = [1, 2, 1], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex 
    99   pltt, vICE_ext_NH, 't', /REMPLI, /PORTRAIT, LINESTYLE=2 $   ;;; dashed lines is LINESTYLE=2  $ 
     100  pltt, vICE_ext_NH, 't', /REMPLI, /PORTRAIT $   ;;; dashed lines is LINESTYLE=2  $ 
    100101        , /ov1d, COLOR = 100, small = [1, 2, 1], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex 
    101102; 
    102   title = 'Southern Hemisphere'+'!C'+prefix+' (BLACK) '+d1_d2+'!C'+'OBSERVATION (light blue) '+'!C'+' Global Annual Mean Ice Area (CONTINUOUS) '+'!C'+ 'and Extend minus 15% (DASHED)' 
    103   pltt, ICE_S, 't', MIN = 0., MAX = 20., /REMPLI, /NOERASE , XGRIDSTYLE = 1 , DATE_FORMAT = '%M' $ 
     103  title = 'Southern Hemisphere'+'!C'+prefix+' (BLACK) '+d1_d2+'!C'+'OBSERVATION (light blue) '+'!C'+' Global Annual Mean Ice Area (DASHED) '+'!C'+ 'and Extend minus 15% (CONTINUOUS)' 
     104  pltt, ICE_S, 't', MIN = 0., MAX = 20., /REMPLI, LINESTYLE=2, /NOERASE , XGRIDSTYLE = 1 , DATE_FORMAT = '%M' $ 
    104105        ,COLOR = 000, small = [1, 2, 2], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex 
    105   pltt, ICE_S_15, 't', /REMPLI, /PORTRAIT, LINESTYLE=2 $  
     106  pltt, ICE_S_15, 't', /REMPLI, /PORTRAIT $  
    106107        , /ov1d, COLOR = 000, small = [1, 2, 1], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex  
    107   pltt,  vICE_area_SH, 't', /REMPLI, /PORTRAIT  $  
     108  pltt,  vICE_area_SH, 't', /REMPLI, /PORTRAIT, LINESTYLE=2  $  
    108109         , /ov1d, COLOR = 100, small = [1, 2, 1], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex 
    109   pltt,  vICE_ext_SH, 't', /REMPLI, /PORTRAIT, LINESTYLE=2 $  
     110  pltt,  vICE_ext_SH, 't', /REMPLI, /PORTRAIT $  
    110111        , /ov1d, COLOR = 100, small = [1, 2, 1], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex 
    111112; 
     
    159160 
    160161 
    161   title = 'Northern Hemisphere'+'!C'+prefix+' (BLACK) - '+prefix2+' (RED) '+d1_d2_2+'!C'+'OBSERVATION (light blue) '+'!C'+' Global Annual Mean Ice Area (CONTINUOUS) '+'!C'+ 'and Extend minus 15% (DASHED)' 
     162  ;;title = 'Northern Hemisphere'+'!C'+prefix+' (BLACK) - '+prefix2+' (RED) '+d1_d2_2+'!C'+'OBSERVATION (light blue) '+'!C'+' Global Annual Mean Ice Area (CONTINUOUS) '+'!C'+ 'and Extend minus 15% (DASHED)' 
     163  title = 'Northern Hemisphere'+'!C'+prefix+' (BLACK) - '+prefix2+' (RED) '+d1_d2_2+'!C'+'OBSERVATION (light blue) '+'!C'+' Global Annual Mean Ice Area (DASHED) '+'!C'+ 'and Extend minus 15% (CONTINUOUS)' 
    162164  jpt=12 
    163165  time=julday(1,15,1900)+30*lindgen(12) 
    164   pltt, ICE_N, 't', MIN = 4, MAX = 16,  /REMPLI, /PORTRAIT, XGRIDSTYLE = 1, window = 2, DATE_FORMAT = '%M' $ 
     166  pltt, ICE_N, 't', MIN = 4, MAX = 16,  /REMPLI, /PORTRAIT, LINESTYLE=2, XGRIDSTYLE = 1, window = 2, DATE_FORMAT = '%M' $ 
    165167        , COLOR = 000, small = [1, 2, 1], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex ; BLACK 
    166   pltt, ICE_N2, 't', /REMPLI, /PORTRAIT $ 
     168  pltt, ICE_N2, 't', /REMPLI, /PORTRAIT , LINESTYLE=2 $ 
    167169        , /ov1d, COLOR = 250, small = [1, 2, 1], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex  ; RED 
    168   pltt, ICE_N_15, 't', /REMPLI, /PORTRAIT, LINESTYLE=2 $ ; linee tratteggiate LINESTYLE=2  $ 
     170  pltt, ICE_N_15, 't', /REMPLI, /PORTRAIT $ ; linee tratteggiate LINESTYLE=2  $ 
    169171        , /ov1d, COLOR = 000, small = [1, 2, 1], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex  
    170   pltt, ICE_N2_15, 't', /REMPLI, /PORTRAIT, LINESTYLE=2 $ ; linee tratteggiate LINESTYLE=2  $ 
     172  pltt, ICE_N2_15, 't', /REMPLI, /PORTRAIT $ ; linee tratteggiate LINESTYLE=2  $ 
    171173        , /ov1d, COLOR = 250, small = [1, 2, 1], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex 
    172   pltt, vICE_area_NH, 't', /REMPLI, /PORTRAIT  $  
     174  pltt, vICE_area_NH, 't', /REMPLI, /PORTRAIT, LINESTYLE=2  $  
    173175        , /ov1d, COLOR = 100, small = [1, 2, 1], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex  ; light blue 
    174   pltt, vICE_ext_NH, 't', /REMPLI, /PORTRAIT, LINESTYLE=2 $  
     176  pltt, vICE_ext_NH, 't', /REMPLI, /PORTRAIT $  
    175177        , /ov1d, COLOR = 100, small = [1, 2, 1], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex  ; blu scuro 
    176178; 
    177   title ='Southern Hemisphere'+'!C'+prefix+' (BLACK) - '+prefix2+' (RED) '+d1_d2_2+'!C'+'OBSERVATION (light blue) '+'!C'+'Global Annual Mean Ice Area (CONTINUS)'+'!C'+ 'and Extend minus 15% (DASHED)' 
     179  title ='Southern Hemisphere'+'!C'+prefix+' (BLACK) - '+prefix2+' (RED) '+d1_d2_2+'!C'+'OBSERVATION (light blue) '+'!C'+'Global Annual Mean Ice Area (DASHED)'+'!C'+ 'and Extend minus 15% (CONTINUOUS)' 
    178180;  title ='Southern Hemisphere'+'!C' 
    179   pltt, ICE_S, 't', MIN = 0., MAX = 20.,  /REMPLI, /NOERASE, XGRIDSTYLE = 1, DATE_FORMAT = '%M' $ 
     181  pltt, ICE_S, 't', MIN = 0., MAX = 20., /REMPLI, LINESTYLE=2, /NOERASE, XGRIDSTYLE = 1, DATE_FORMAT = '%M' $ 
    180182         , COLOR = 000, small = [1, 2, 2], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex 
    181   pltt, ICE_S2, 't', /REMPLI, /NOERASE $ 
     183  pltt, ICE_S2, 't', /REMPLI, /NOERASE, LINESTYLE=2 $ 
    182184        , /ov1d, COLOR = 250, small = [1, 2, 2], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex 
    183   pltt, ICE_S_15 , 't', /REMPLI, /PORTRAIT, LINESTYLE=2 $ ; linee tratteggiate LINESTYLE=2  $ 
     185  pltt, ICE_S_15 , 't', /REMPLI, /PORTRAIT $ ; linee tratteggiate LINESTYLE=2  $ 
    184186        , /ov1d, COLOR = 000, small = [1, 2, 2], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex 
    185   pltt, ICE_S2_15, 't', /REMPLI, /PORTRAIT, LINESTYLE=2 $ ; linee tratteggiate LINESTYLE=2  $ 
     187  pltt, ICE_S2_15, 't', /REMPLI, /PORTRAIT $ ; linee tratteggiate LINESTYLE=2  $ 
    186188        , /ov1d, COLOR = 250, small = [1, 2, 2], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex 
    187   pltt,  vICE_area_SH, 't', /REMPLI, /PORTRAIT $  
     189  pltt,  vICE_area_SH, 't', /REMPLI, /PORTRAIT, LINESTYLE=2 $  
    188190          , /ov1d, COLOR = 100, small = [1, 2, 2], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex 
    189   pltt,  vICE_ext_SH, 't', /REMPLI, /PORTRAIT, LINESTYLE=2 $  
     191  pltt,  vICE_ext_SH, 't', /REMPLI, /PORTRAIT $  
    190192        , /ov1d, COLOR = 100, small = [1, 2, 2], YTITLE = '10^12 m^2 ', TITLE = title, _extra = ex 
    191193; 
  • branches/2014/dev_CNRS_2014/NEMOGCM/CONFIG/ORCA2_LIM/IDL_scripts/std_ts_ICE_FRAM.pro

    r4514 r4902  
    55arr2d = arr2d[t1:t2] 
    66arr2d = reform(arr2d,12,nyear) ; put in 2D array 
    7 arr2d = total(arr2d,2)/nyear ; total over 2th dimension (i.e.years) 
     7;arr2d = total(arr2d,2)/nyear ; total over 2th dimension (i.e.years) 
     8arr2d = arr2d[*, nyear-1] ;  select last year 
    89 
    910return, arr2d 
     
    3435; 
    3536  d1_d2 = '('+strtrim(date1, 1)+' - '+strtrim(date2, 1)+')' 
     37  d2 = '('+strtrim(date2, 1)+')' 
    3638; 
    3739  iodir = std_iodir_data 
     
    7476  ;; AREA 
    7577  ICE_area_export = reform(ICE_area_export, 12, nyr) 
    76   ICE_area_export = total(ICE_area_export,2)/nyr 
     78  ;ICE_area_export = total(ICE_area_export,2)/nyr  ; old version monthly mean average  over all years 
     79  ICE_area_export = ICE_area_export[*,nyr-1]  ; dim= 12, index 0-11; last year choosen 
    7780  ; ICE_area_export = {arr:ICE_area_export * 1.e-12 * 86400 * 365 , unit : '10^6 Km^2/year'}  ; annual mean 
    7881  ICE_area_export = {arr:ICE_area_export * 1.e-12 * 86400 * 30 , unit : '10^6 Km^2/month'}    ; monthly mean 
     
    8083  ; 
    8184  ICE_vol_export = reform(ICE_vol_export, 12, nyr) 
    82   ICE_vol_export = total(ICE_vol_export,2)/nyr 
     85  ;ICE_vol_export = total(ICE_vol_export,2)/nyr 
     86  ICE_vol_export = ICE_vol_export[*,nyr-1] 
    8387  ; ICE_vol_export = {arr:ICE_vol_export * 1.e-9 * 86400 * 365 , unit : '10^3 Km^3/year'}      ; annual mean 
    8488  ICE_vol_export = {arr:ICE_vol_export * 1.e-9 * 86400 * 30 , unit : '10^3 Km^3/month'}      ; monthly mean 
    8589 
    8690  ; 
    87   title = 'Fram Strait Areal Export'+'!C'+prefix+' '+d1_d2 
     91  ;title = 'Fram Strait Areal Export: LAST YEAR'+'!C'+prefix+' '+d1_d2 
     92  title = 'Fram Strait Areal Export: LAST YEAR'+'!C'+prefix+' '+d2 
    8893  jpt=12 
    8994  time=julday(1,15,1900)+30*lindgen(12) 
     
    99104  xyouts, julday(7,15,1900), 0.41, 'Data from Kwok et al.(2004), 1979-2002 ', ALIGN = 0, CHARTHICK = 2, CHARSIZE=0.8, COLOR=2 
    100105  ; 
    101   title = 'Fram Strait Volume Export'+'!C'+prefix+' '+d1_d2 
     106  ;title = 'Fram Strait Volume Export LAST YEAR'+'!C'+prefix+' '+d1_d2 
     107  title = 'Fram Strait Volume Export LAST YEAR'+'!C'+prefix+' '+d2 
    102108  pltt, ICE_vol_export, 't',  /REMPLI, MIN = 60., MAX = 500. , /NOERASE, XGRIDSTYLE = 1 $ 
    103109       , small = [1, 2, 2], YTITLE = '10^3 Km^3/month', TITLE = title, DATE_FORMAT = '%M', _extra = ex 
     
    118124 
    119125    d1_d2_2 = '('+strtrim(date1_2, 1)+' - '+strtrim(date2_2, 1)+')' 
     126    d2_2 = '('+strtrim(date2_2, 1)+')' 
    120127    tsave = time 
    121128    domdef, indx1, indx2, indy1, indy2, /xindex, /yindex,/memeindices 
     
    140147    ;; AREA 
    141148    ICE_area_export_2 = reform(ICE_area_export_2, 12, nyr) 
    142     ICE_area_export_2 = total(ICE_area_export_2,2)/nyr 
     149    ;ICE_area_export_2 = total(ICE_area_export_2,2)/nyr 
     150    ICE_area_export_2 = ICE_area_export_2[*,nyr-1] 
    143151    ; ICE_area_export_2 = {arr:ICE_area_export_2 * 1.e-12 * 86400 * 365 , unit : '10^6 Km^2/year'}   ; annual mean 
    144152    ICE_area_export_2 = {arr:ICE_area_export_2 * 1.e-12 * 86400 * 30 , unit : '10^6 Km^2/month'}     ; monthly mean 
    145153    ; 
    146154    ICE_vol_export_2 = reform(ICE_vol_export_2, 12, nyr) 
    147     ICE_vol_export_2 = total(ICE_vol_export_2,2)/nyr 
     155    ;ICE_vol_export_2 = total(ICE_vol_export_2,2)/nyr 
     156    ICE_vol_export_2 = ICE_vol_export_2[*,nyr-1] 
    148157    ; ICE_vol_export_2 = {arr:ICE_vol_export_2 * 1.e-12 * 86400 * 365 , unit : '10^3 Km^3/year'}     ; annual mean 
    149158    ICE_vol_export_2 = {arr:ICE_vol_export_2 * 1.e-9 * 86400 * 30 , unit : '10^3 Km^3/month'}       ; monthly mean 
     
    152161    if KEYWORD_SET(postscript) then openps, filename+'_2.ps', portrait = 1 
    153162 
    154     title = 'Fram Strait Areal Export'+'!C'+prefix+' (BLACK) - '+prefix2+' (RED) '+d1_d2_2 
     163    ;title = 'Fram Strait Areal Export'+'!C'+prefix+' (BLACK) - '+prefix2+' (RED) '+d1_d2_2 
     164    title = 'Fram Strait Areal Export LAST YEAR'+'!C'+prefix+' (BLACK) - '+prefix2+' (RED) '+d2_2 
    155165    jpt=12 
    156166    time=julday(1,15,1900)+30*lindgen(12) 
     
    170180    xyouts, julday(7,15,1900), 0.41, 'Data from Kwok et al.(2004), 1979-2002 ', ALIGN = 0, CHARTHICK = 2, CHARSIZE=0.8, COLOR=2 
    171181    ; 
    172     title = 'Fram Strait Volume Export'+'!C'+prefix+' (BLACK) - '+prefix2+' (RED) '+d1_d2_2 
     182    ;title = 'Fram Strait Volume Export'+'!C'+prefix+' (BLACK) - '+prefix2+' (RED) '+d1_d2_2 
     183    title = 'Fram Strait Volume Export LAST YEAR'+'!C'+prefix+' (BLACK) - '+prefix2+' (RED) '+d2_2 
    173184    pltt, ICE_vol_export, 't', /REMPLI,  MIN = 60., MAX = 500., /NOERASE, XGRIDSTYLE = 1 $ 
    174185        , small = [1, 2, 2], YTITLE = '10^3 Km^3/month', TITLE = title, DATE_FORMAT = '%M', _extra = ex 
  • branches/2014/dev_CNRS_2014/NEMOGCM/CONFIG/ORCA2_LIM/IDL_scripts/std_ts_ICE_Vol.pro

    r4504 r4902  
    7070; 
    7171  title ='Southern Hemisphere' +'!C'+prefix+' '+d1_d2+' - '+'!C'+'Global Annual Mean Ice Volume (BLACK)' 
    72   pltt, ICE_vol_S, 't', MIN = 0., MAX = 11000., /REMPLI, /NOERASE, XGRIDSTYLE = 1 , DATE_FORMAT = '%M' $ 
     72  pltt, ICE_vol_S, 't', MIN = 0., MAX = 12000., /REMPLI, /NOERASE, XGRIDSTYLE = 1 , DATE_FORMAT = '%M' $ 
    7373        , small = [1, 2, 2], YTITLE = '10^9 Km^3 ', TITLE = title, _extra = ex 
    7474; 
     
    119119    ; 
    120120    title = 'Southern Hemisphere'+'!C'+prefix+' (BLACK) - '+prefix2+' (RED) '+d1_d2_2+'!C'+'Global Annual Mean Ice Volume' 
    121     pltt, ICE_vol_S, 't', MIN = 0., MAX = 11000., /REMPLI, /NOERASE, XGRIDSTYLE = 1, DATE_FORMAT = '%M' $ 
     121    pltt, ICE_vol_S, 't', MIN = 0., MAX = 12000., /REMPLI, /NOERASE, XGRIDSTYLE = 1, DATE_FORMAT = '%M' $ 
    122122          , small = [1, 2, 2], YTITLE = '10^9 Km^3 ', TITLE = title, _extra = ex    
    123123    pltt, ICE_vol_S2, 't',  /REMPLI, /NOERASE $ 
  • branches/2014/dev_CNRS_2014/NEMOGCM/CONFIG/ORCA2_LIM/IDL_scripts/std_ts_all.pro

    r4559 r4902  
    6060  IF doplot EQ cnt OR doplot EQ 0 THEN std_ts_SSH, masknp, POSTSCRIPT = postscript, _extra = ex 
    6161; 
    62   cnt = cnt+1   &   blabla = 'Global Mean Q net' 
    63   IF doplot EQ cnt OR doplot EQ 0 THEN std_ts_Q, masknp, POSTSCRIPT = postscript, _extra = ex 
     62;;;;  cnt = cnt+1   &   blabla = 'Global Mean Q net' 
     63;;;;  IF doplot EQ cnt OR doplot EQ 0 THEN std_ts_Q, masknp, POSTSCRIPT = postscript, _extra = ex 
    6464; 
    6565  cnt = cnt+1   &   blabla = 'Global Mean EMP' 
     
    7777  cnt = cnt+1   &   blabla = 'Sea-Ice Volume' 
    7878  IF doplot EQ cnt OR doplot EQ 0 THEN std_ts_ICE_Vol, masknp, POSTSCRIPT = postscript, _extra = ex 
    79 ; 
    80   cnt = cnt+1   &   blabla = 'ICE Velocity ' 
    81   IF doplot EQ cnt OR doplot EQ 0 THEN std_ts_ICE_Vel, masknp, POSTSCRIPT = postscript, _extra = ex 
    82 ; 
     79;SF; and probably useless 
     80;SF  cnt = cnt+1   &   blabla = 'ICE Velocity ' 
     81;SF  IF doplot EQ cnt OR doplot EQ 0 THEN std_ts_ICE_Vel, masknp, POSTSCRIPT = postscript, _extra = ex 
     82;SF; 
    8383  cnt = cnt+1   &   blabla = 'Sea-Ice Volume Export at Fram Strait' 
    8484  IF doplot EQ cnt OR doplot EQ 0 THEN std_ts_ICE_FRAM, masknp, POSTSCRIPT = postscript, _extra = ex 
  • branches/2014/dev_CNRS_2014/NEMOGCM/CONFIG/ORCA2_LIM/IDL_scripts/std_ts_vardef.sh

    r4559 r4902  
    1818idl_command=/Applications/itt/idl64/bin/idl 
    1919# 
    20 PS_DIR=$( pwd )/ts_heatbug_ps 
    21 PDF_DIR=$( pwd )/ts_heatbug_pdf 
     20PS_DIR=$( pwd )/ts_p4H25a50-testht_ps 
     21PDF_DIR=$( pwd )/ts_p4H25a50-testht_pdf 
    2222HTML_DIR=$( pwd )/html 
    2323SAXO_DIR=/Users/sflod/SAXO_DIR 
    2424# 
    25 DIR_DATA=/Users/sflod/idl_PLOTS/DATA_STORE/RUN_CLIMATO/lim3_ada      # path of data in NetCDF format 
     25DIR_DATA=/Users/sflod/idl_PLOTS/DATA_STORE/RUN_CLIMATO/lim3_ada     # path of data in NetCDF format 
    2626DIR_CLIMATO=/Users/sflod/idl_PLOTS/CLIMATOLOGIES    # path of climatological data 
    2727DIR_MASK=/Users/sflod/idl_PLOTS/MASK  # path of mask files (ex: subbasins) 
     
    5252READ_ONLY_FIRST_RECORD=0   # if 0 then read all records in files else read only the first reacord in each file 
    5353# 
    54 #DATE1=20010101   ;   DATE2=25001231 
    55 DATE1=20310101   ;   DATE2=20401231 
    56 #DATE1=00010101      ;   DATE2=00101231 
     54DATE1=20010101         ;   DATE2=20501231 
    5755# 
    58 VAR1_T=thetao        ;   V1T_PREF=heatbug       ;   V1T_SUFF=_1Y_grid_T.nc 
    59 VAR1_S=so            ;   V1S_PREF=heatbug      ;   V1S_SUFF=_1Y_grid_T.nc 
    60 VAR1_SSH=zos         ;   V1SSH_PREF=heatbug    ;   V1SSH_SUFF=_1Y_grid_T.nc 
    61 VAR1_Q=tohfls        ;   V1Q_PREF=heatbug      ;   V1Q_SUFF=_1Y_grid_T.nc 
    62 VAR1_EMP=wfo         ;   V1EMP_PREF=heatbug    ;   V1EMP_SUFF=_1Y_grid_T.nc 
    63 VAR1_U=uocetr_eff    ;   V1U_PREF=heatbug      ;   V1U_SUFF=_1Y_grid_U.nc 
    64 VAR1_V=vocetr_eff    ;   V1V_PREF=heatbug      ;   V1V_SUFF=_1Y_grid_V.nc 
    65 VAR1_ICE=siconc      ;   V1ICE_PREF=heatbug    ;   V1ICE_SUFF=_1M_icemod.nc 
    66 VAR1_Ithick=sithic   ;   V1It_PREF=heatbug     ;   V1It_SUFF=_1M_icemod.nc 
    67 VAR1_SNOW=sndept     ;   V1SNOW_PREF=heatbug   ;   V1SNOW_SUFF=_1M_icemod.nc 
    68 VAR1_IvelV=sivelv    ;   V1IvV_PREF=heatbug    ;   V1IvV_SUFF=_1M_icemod.nc 
    69 VAR1_Ivel=sivelo     ;   V1Iv_PREF=heatbug     ;   V1Iv_SUFF=_1M_icemod.nc 
     56VAR1_T=thetao          ;   V1T_PREF=p4H25a50      ;   V1T_SUFF=_1Y_grid_T.nc 
     57VAR1_S=so              ;   V1S_PREF=p4H25a50      ;   V1S_SUFF=_1Y_grid_T.nc 
     58VAR1_SSH=zos         ;   V1SSH_PREF=p4H25a50    ;   V1SSH_SUFF=_1Y_grid_T.nc 
     59##VAR1_Q=qt              ;   V1Q_PREF=p4H25a50      ;   V1Q_SUFF=_1Y_grid_T.nc 
     60VAR1_EMP=wfo         ;   V1EMP_PREF=p4H25a50    ;   V1EMP_SUFF=_1Y_grid_T.nc 
     61VAR1_U=uocetr_eff      ;   V1U_PREF=p4H25a50      ;   V1U_SUFF=_1Y_grid_U.nc 
     62VAR1_V=vocetr_eff      ;   V1V_PREF=p4H25a50      ;   V1V_SUFF=_1Y_grid_V.nc 
     63VAR1_ICE=siconc      ;   V1ICE_PREF=p4H25a50    ;   V1ICE_SUFF=_1M_icemod.nc 
     64VAR1_Ithick=sithic    ;   V1It_PREF=p4H25a50     ;   V1It_SUFF=_1M_icemod.nc 
     65VAR1_SNOW=snthic    ;   V1SNOW_PREF=p4H25a50   ;   V1SNOW_SUFF=_1M_icemod.nc 
     66VAR1_IvelV=sivelv    ;   V1IvV_PREF=p4H25a50    ;   V1IvV_SUFF=_1M_icemod.nc  
     67VAR1_Ivel=sivelo      ;   V1Iv_PREF=p4H25a50     ;   V1Iv_SUFF=_1M_icemod.nc 
    7068# 
    7169#===================== EXP2 ===================== 
    7270# 
    73 #DATE1_2=20010101   ;   DATE2_2=20101231 
    74 DATE1_2=20310101   ;   DATE2_2=20401231 
    75 #DATE1_2=20010101   ;   DATE2_2=25001231 
     71DATE1_2=20010101       ;   DATE2_2=20501231 
    7672# 
    77 VAR2_T=thetao      ;   V2T_PREF=heatbug      ;   V2T_SUFF=_1Y_grid_T.nc 
    78 VAR2_S=so          ;   V2S_PREF=heatbug      ;   V2S_SUFF=_1Y_grid_T.nc 
    79 VAR2_SSH=zos       ;   V2SSH_PREF=heatbug    ;   V2SSH_SUFF=_1Y_grid_T.nc 
    80 VAR2_Q=tohfls      ;   V2Q_PREF=heatbug      ;   V2Q_SUFF=_1Y_grid_T.nc 
    81 VAR2_EMP=wfo       ;   V2EMP_PREF=heatbug    ;   V2EMP_SUFF=_1Y_grid_T.nc 
    82 VAR2_U=uocetr_eff  ;   V2U_PREF=heatbug      ;   V2U_SUFF=_1Y_grid_U.nc 
    83 VAR2_V=vocetr_eff  ;   V2V_PREF=heatbug      ;   V2V_SUFF=_1Y_grid_V.nc 
    84 VAR2_ICE=siconc    ;   V2ICE_PREF=heatbug    ;   V2ICE_SUFF=_1M_icemod.nc 
    85 VAR2_Ithick=sithic ;   V2It_PREF=heatbug     ;   V2It_SUFF=_1M_icemod.nc 
    86 VAR2_SNOW=sndept   ;   V2SNOW_PREF=heatbug   ;   V2SNOW_SUFF=_1M_icemod.nc 
    87 VAR2_IvelV=sivelv  ;   V2IvV_PREF=heatbug    ;   V2IvV_SUFF=_1M_icemod.nc 
    88 VAR2_Ivel=sivelo   ;   V2Iv_PREF=heatbug     ;   V2Iv_SUFF=_1M_icemod.nc 
     73VAR2_T=thetao          ;   V2T_PREF=testht     ;   V2T_SUFF=_1Y_grid_T.nc 
     74VAR2_S=so           ;   V2S_PREF=testht     ;   V2S_SUFF=_1Y_grid_T.nc 
     75VAR2_SSH=zos         ;   V2SSH_PREF=testht   ;   V2SSH_SUFF=_1Y_grid_T.nc 
     76##VAR2_Q=qt            ;   V2Q_PREF=testht     ;   V2Q_SUFF=_1Y_grid_T.nc 
     77VAR2_EMP=wfo            ;   V2EMP_PREF=testht   ;   V2EMP_SUFF=_1Y_grid_T.nc 
     78VAR2_U=uocetr_eff      ;   V2U_PREF=testht     ;   V2U_SUFF=_1Y_grid_U.nc 
     79VAR2_V=vocetr_eff      ;   V2V_PREF=testht     ;   V2V_SUFF=_1Y_grid_V.nc 
     80VAR2_ICE=siconc         ;   V2ICE_PREF=testht   ;   V2ICE_SUFF=_1M_icemod.nc 
     81VAR2_Ithick=sithic       ;   V2It_PREF=testht    ;   V2It_SUFF=_1M_icemod.nc 
     82VAR2_SNOW=snthic       ;   V2SNOW_PREF=testht  ;   V2SNOW_SUFF=_1M_icemod.nc 
     83VAR2_IvelV=sivelv       ;   V2IvV_PREF=testht   ;   V2IvV_SUFF=_1M_icemod.nc  
     84VAR2_Ivel=sivelo        ;   V2IvV_PREF=testht   ;   V2IvV_SUFF=_1M_icemod.nc  
    8985# 
    9086######################### Export Variables ############################### 
  • branches/2014/dev_CNRS_2014/NEMOGCM/CONFIG/SHARED/1_namelist_ref

    r4900 r4902  
    3131   nn_leapy    =       0   !  Leap year calendar (1) or not (0) 
    3232   ln_rstart   = .false.   !  start from rest (F) or from a restart file (T) 
     33   nn_euler    =       1   !  = 0 : start with forward time step if ln_rstart=.true. 
    3334   nn_rstctl   =       0   !  restart control => activated only if ln_rstart = T 
    3435                           !    = 0 nn_date0 read in namelist ; nn_it000 : read in namelist 
     
    119120                           ! 
    120121   rn_rdt      = 5760.     !  time step for the dynamics (and tracer if nn_acc=0) 
    121    nn_baro     =   64      !  number of barotropic time step            ("key_dynspg_ts") 
    122122   rn_atfp     =    0.1    !  asselin time filter parameter 
    123123   nn_acc      =    0      !  acceleration of convergence : =1      used, rdt < rdttra(k) 
     
    152152/ 
    153153!----------------------------------------------------------------------- 
     154&namsplit      !   time splitting parameters                            ("key_dynspg_ts") 
     155!----------------------------------------------------------------------- 
     156   ln_bt_fw      =    .TRUE.           !  Forward integration of barotropic equations 
     157   ln_bt_av      =    .TRUE.           !  Time filtering of barotropic variables 
     158   ln_bt_nn_auto =    .TRUE.           !  Set nn_baro automatically to be just below 
     159                                       !  a user defined maximum courant number (rn_bt_cmax) 
     160   nn_baro       =    30               !  Number of iterations of barotropic mode 
     161                                       !  during rn_rdt seconds. Only used if ln_bt_nn_auto=F 
     162   rn_bt_cmax    =    0.8              !  Maximum courant number allowed if ln_bt_nn_auto=T  
     163   nn_bt_flt     =    1                !  Time filter choice 
     164                                       !  = 0 None 
     165                                       !  = 1 Boxcar over   nn_baro barotropic steps 
     166                                       !  = 2 Boxcar over 2*nn_baro     "        "   
     167/ 
     168!----------------------------------------------------------------------- 
    154169&namcrs        !   Grid coarsening for dynamics output and/or 
    155170               !   passive tracer coarsened online simulations 
     
    168183/ 
    169184!----------------------------------------------------------------------- 
     185&namc1d        !   1D configuration options                             ("key_c1d") 
     186!----------------------------------------------------------------------- 
     187   rn_lat1d    =      50   !  Column latitude (default at PAPA station) 
     188   rn_lon1d    =    -145   !  Column longitude (default at PAPA station) 
     189   ln_c1d_locpt=  .true.   ! Localization of 1D config in a grid (T) or independant point (F) 
     190/ 
     191!----------------------------------------------------------------------- 
    170192&namtsd    !   data : Temperature  & Salinity 
    171193!----------------------------------------------------------------------- 
     
    173195!          !  file name                            ! frequency (hours) ! variable  ! time interp. !  clim  ! 'yearly'/ ! weights  ! rotation ! land/sea mask ! 
    174196!          !                                       !  (if <0  months)  !   name    !   (logical)  !  (T/F) ! 'monthly' ! filename ! pairing  ! filename      ! 
    175    sn_tem  = 'data_1m_potential_temperature_nomask',         -1        ,'votemper' ,    .true.    , .true. , 'yearly'   , ''      ,   ''     ,    '' 
    176    sn_sal  = 'data_1m_salinity_nomask'             ,         -1        ,'vosaline' ,    .true.    , .true. , 'yearly'   , ''      ,   ''     ,    '' 
     197   sn_tem  = 'data_1m_potential_temperature_nomask',         -1        ,'votemper' ,    .true.    , .true. , 'yearly'   , ''       ,   ''    ,    '' 
     198   sn_sal  = 'data_1m_salinity_nomask'             ,         -1        ,'vosaline' ,    .true.    , .true. , 'yearly'   , ''       ,   ''    ,    '' 
    177199   ! 
    178200   cn_dir        = './'     !  root directory for the location of the runoff files 
    179201   ln_tsd_init   = .true.   !  Initialisation of ocean T & S with T &S input data (T) or not (F) 
    180    ln_tsd_tradmp = .false.   !  damping of ocean T & S toward T &S input data (T) or not (F) 
     202   ln_tsd_tradmp = .true.   !  damping of ocean T & S toward T &S input data (T) or not (F) 
    181203/ 
    182204!!====================================================================== 
     
    270292&namsbc_core   !   namsbc_core  CORE bulk formulae 
    271293!----------------------------------------------------------------------- 
    272 !              !  file name                    ! frequency (hours) ! variable  ! time interp. !  clim  ! 'yearly'/ ! weights                            ! rotation ! land/sea mask ! 
    273 !              !                               !  (if <0  months)  !   name    !   (logical)  !  (T/F) ! 'monthly' ! filename                           ! pairing  ! filename      ! 
    274    sn_wndi     = 'u_10.15JUNE2009_fill'        ,         6         , 'U_10_MOD',   .false.    , .true. , 'yearly'  , 'weights_core2_agrif_bicubic.nc'   , 'Uwnd'   , '' 
    275    sn_wndj     = 'v_10.15JUNE2009_fill'        ,         6         , 'V_10_MOD',   .false.    , .true. , 'yearly'  , 'weights_core2_agrif_bicubic.nc'   , 'Vwnd'   , '' 
     294!              !  file name                    ! frequency (hours) ! variable  ! time interp. !  clim  ! 'yearly'/ ! weights                               ! rotation ! land/sea mask ! 
     295!              !                               !  (if <0  months)  !   name    !   (logical)  !  (T/F) ! 'monthly' ! filename                              ! pairing  ! filename      ! 
     296   sn_wndi     = 'u_10.15JUNE2009_fill'        ,         6         , 'U_10_MOD',   .false.    , .true. , 'yearly'  , 'weights_core2_agrif_bicubic.nc'      , 'Uwnd'   , '' 
     297   sn_wndj     = 'v_10.15JUNE2009_fill'        ,         6         , 'V_10_MOD',   .false.    , .true. , 'yearly'  , 'weights_core2_agrif_bicubic.nc'      , 'Vwnd'   , '' 
    276298   sn_qsr      = 'ncar_rad.15JUNE2009_fill'    ,        24         , 'SWDN_MOD',   .false.    , .true. , 'yearly'  , 'weights_core2_agrif_bilinear.nc'     , ''       , '' 
    277299   sn_qlw      = 'ncar_rad.15JUNE2009_fill'    ,        24         , 'LWDN_MOD',   .false.    , .true. , 'yearly'  , 'weights_core2_agrif_bilinear.nc'     , ''       , '' 
     
    348370&namtra_qsr    !   penetrative solar radiation 
    349371!----------------------------------------------------------------------- 
    350 !              !  file name  ! frequency (hours) ! variable  ! time interp. !  clim  ! 'yearly'/ ! weights          ! rotation ! land/sea mask ! 
    351 !              !             !  (if <0  months)  !   name    !   (logical)  !  (T/F) ! 'monthly' ! filename         ! pairing  ! filename      ! 
    352    sn_chl      ='chlorophyll',        -1         , 'CHLA'    ,   .true.     , .true. , 'yearly'  , 'weights_bilin'  , ''       , '' 
     372!              !  file name  ! frequency (hours) ! variable  ! time interp. !  clim  ! 'yearly'/ ! weights         ! rotation ! land/sea mask ! 
     373!              !             !  (if <0  months)  !   name    !   (logical)  !  (T/F) ! 'monthly' ! filename        ! pairing  ! filename      ! 
     374   sn_chl      ='chlorophyll',        -1         , 'CHLA'    ,   .true.     , .true. , 'yearly'  , 'weights_bilin' , ''       , '' 
    353375 
    354376   cn_dir      = './'      !  root directory for the location of the runoff files 
     
    546568    nn_tra_dta    =  0                    !  = 0, bdy data are equal to the initial state 
    547569                                          !  = 1, bdy data are read in 'bdydata   .nc' files 
     570    cn_ice_lim      =  'none'             !   
     571    nn_ice_lim_dta  =  0                  !  = 0, bdy data are equal to the initial state 
     572                                          !  = 1, bdy data are read in 'bdydata   .nc' files 
     573    rn_ice_tem      = 270.                !  lim3 only: arbitrary temperature of incoming sea ice 
     574    rn_ice_sal      = 10.                 !  lim3 only:      --   salinity           -- 
     575    rn_ice_age      = 30.                 !  lim3 only:      --   age                -- 
     576 
    548577    ln_tra_dmp    =.false.                !  open boudaries conditions for tracers 
    549578    ln_dyn3d_dmp  =.false.                !  open boundary condition for baroclinic velocities 
     
    566595   bn_tem  =    'amm12_bdyT_tra' ,         24        , 'votemper' ,     .true.     , .false. ,  'daily'  ,    ''    ,   ''     , '' 
    567596   bn_sal  =    'amm12_bdyT_tra' ,         24        , 'vosaline' ,     .true.     , .false. ,  'daily'  ,    ''    ,   ''     , '' 
     597! for lim2 
     598!   bn_frld  =    'amm12_bdyT_ice' ,         24        , 'ileadfra' ,     .true.     , .false. ,  'daily'  ,    ''    ,   ''     , '' 
     599!   bn_hicif =    'amm12_bdyT_ice' ,         24        , 'iicethic' ,     .true.     , .false. ,  'daily'  ,    ''    ,   ''     , '' 
     600!   bn_hsnif =    'amm12_bdyT_ice' ,         24        , 'isnowthi' ,     .true.     , .false. ,  'daily'  ,    ''    ,   ''     , '' 
     601! for lim3 
     602!   bn_a_i  =    'amm12_bdyT_ice' ,         24        , 'ileadfra' ,     .true.     , .false. ,  'daily'  ,    ''    ,   ''     , '' 
     603!   bn_ht_i =    'amm12_bdyT_ice' ,         24        , 'iicethic' ,     .true.     , .false. ,  'daily'  ,    ''    ,   ''     , '' 
     604!   bn_ht_s =    'amm12_bdyT_ice' ,         24        , 'isnowthi' ,     .true.     , .false. ,  'daily'  ,    ''    ,   ''     , '' 
    568605   cn_dir  =    'bdydta/' 
    569606   ln_full_vel = .false. 
     
    590627                           !                              = 2 : nonlinear friction 
    591628   rn_bfri1    =    4.e-4  !  bottom drag coefficient (linear case) 
    592    rn_bfri2    =    1.e-3  !  bottom drag coefficient (non linear case) 
     629   rn_bfri2    =    1.e-3  !  bottom drag coefficient (non linear case). Minimum coeft if ln_loglayer=T 
     630   rn_bfri2_max =   1.e-1  !  max. bottom drag coefficient (non linear case and ln_loglayer=T) 
    593631   rn_bfeb2    =    2.5e-3 !  bottom turbulent kinetic energy background  (m2/s2) 
    594    rn_bfrz0    =    3.e-3  ! bottom roughness for loglayer bfr coeff  
     632   rn_bfrz0    =    3.e-3  !  bottom roughness [m] if ln_loglayer=T  
     633   ln_loglayer = .false.   !  logarithmic formulation (non linear case) 
    595634   ln_bfr2d    = .false.   !  horizontal variation of the bottom friction coef (read a 2D mask file ) 
    596635   rn_bfrien   =    50.    !  local multiplying factor of bfr (ln_bfr2d=T) 
     
    726765   ln_vvl_layer  = .false.          !  full layer vertical coordinate 
    727766   ln_vvl_ztilde_as_zstar = .false. !  ztilde vertical coordinate emulating zstar 
     767   ln_vvl_zstar_at_eqtor = .false.  !  ztilde near the equator 
    728768   rn_ahe3       = 0.0e0            !  thickness diffusion coefficient 
    729769   rn_rst_e3t    = 30.e0            !  ztilde to zstar restoration timescale [days] 
     
    941981                           !     (no physical validity of the results) 
    942982   nn_timing   =    0      !  timing by routine activated (=1) creates timing.output file, or not (=0) 
    943 / 
    944 !----------------------------------------------------------------------- 
    945 &namc1d        !   1D configuration options                             ("key_c1d") 
    946 !----------------------------------------------------------------------- 
    947    rn_lat      =    50     !  Column latitude 
    948    rn_lon      =    -145   !  Column longitude 
    949983/ 
    950984!----------------------------------------------------------------------- 
  • branches/2014/dev_CNRS_2014/NEMOGCM/CONFIG/SHARED/field_def.xml

    r4901 r4902  
    225225         <field id="emp_x_sst"    long_name="Concentration/Dilution term on SST"                           unit="kgC/m2/s" /> 
    226226         <field id="emp_x_sss"    long_name="Concentration/Dilution term on SSS"                         unit="kgPSU/m2/s" />         
    227           
    228           
     227        
    229228         <field id="iceconc"      long_name="ice concentration"                                            unit="%"        /> 
    230          <field id="icebopr"      long_name="daily bottom thermo ice prod."                                unit="km3/day"   /> 
    231          <field id="icedypr"      long_name="daily  dynamic ice prod."                                     unit="km3/day"   /> 
    232     <field id="ioceflxb"     long_name="Oceanic flux at the ice base"                                 unit="W/m2"     /> 
    233229         <field id="uice_ipa"     long_name="Ice velocity along i-axis at I-point (ice presence average)"  unit="m/s"      /> 
    234230         <field id="vice_ipa"     long_name="Ice velocity along j-axis at I-point (ice presence average)"  unit="m/s"      /> 
     
    238234         <field id="qsr_oce"      long_name="solar heat flux at ocean surface"                             unit="W/m2"     /> 
    239235         <field id="qns_oce"      long_name="non-solar heat flux at ocean surface"                         unit="W/m2"     /> 
    240          <field id="hfbri"        long_name="heat flux due to brine release"                               unit="W/m2"     /> 
     236         <field id="qt_ice"       long_name="total flux at ice surface"                                    unit="W/m2"     /> 
     237         <field id="qsr_ice"      long_name="solar heat flux at ice surface"                               unit="W/m2"     /> 
     238         <field id="qns_ice"      long_name="non-solar heat flux at ice surface"                           unit="W/m2"     /> 
     239         <field id="qtr_ice"      long_name="solar heat flux transmitted thru the ice"                     unit="W/m2"     /> 
    241240         <field id="utau_ice"     long_name="Wind stress along i-axis over the ice at i-point"             unit="N/m2"     /> 
    242241         <field id="vtau_ice"     long_name="Wind stress along j-axis over the ice at i-point"             unit="N/m2"     /> 
    243     <field id="qsr_io"       long_name="Ice-Oce downward solar heat flux"                             unit="W/m2"     /> 
    244     <field id="qns_io"       long_name="Ice-Oce downward non-solar heat flux"                         unit="W/m2"     /> 
    245242         <field id="micesalt"     long_name="Mean ice salinity"                                            unit="psu"      /> 
    246243         <field id="miceage"      long_name="Mean ice age"                                                 unit="years"    /> 
    247          <field id="icelapr"      long_name="daily lateral thermo ice prod."                               unit="km3/day"   /> 
    248          <field id="icesipr"      long_name="daily snowice ice prod."                                      unit="km3/day"   /> 
     244 
     245         <field id="iceage_cat"   long_name="Ice age for categories"                                       unit="days"   axis_ref="ncatice" /> 
     246         <field id="iceconc_cat"  long_name="Ice concentration for categories"                             unit="%"      axis_ref="ncatice" /> 
     247         <field id="icethic_cat"  long_name="Ice thickness for categories"                                 unit="m"      axis_ref="ncatice" /> 
     248         <field id="snowthic_cat" long_name="Snow thicknessi for categories"                               unit="m"      axis_ref="ncatice" /> 
     249         <field id="salinity_cat" long_name="Sea-Ice Bulk salinity for categories"                         unit="ppt"    axis_ref="ncatice" /> 
     250         <field id="brinevol_cat" long_name="Brine volume for categories"                                  unit="%"      axis_ref="ncatice" /> 
     251 
    249252         <field id="micet"        long_name="Mean ice temperature"                                         unit="degC"     /> 
    250          <field id="icehc"        long_name="ice total heat content"                                       unit="10^9 J"   />  
     253         <field id="icehc"        long_name="ice total heat content"                                       unit="10^9J"   />  
    251254         <field id="isnowhc"      long_name="snow total heat content"                                      unit="10^9J"    /> 
    252255         <field id="icest"        long_name="ice surface temperature"                                      unit="degC"     /> 
    253          <field id="sfxbri"       long_name="brine salt flux"                                              unit="psu*kg/m2/day" /> 
    254          <field id="sfxthd"       long_name="equivalent FW salt flux"                                      unit="psu*kg/m2/day" /> 
    255256         <field id="ibrinv"       long_name="brine volume"                                                 unit="%"        /> 
    256257         <field id="icecolf"      long_name="frazil ice collection thickness"                              unit="m"        /> 
    257258         <field id="icestr"       long_name="ice strength"                                                 unit="N/m"      /> 
    258259         <field id="icevel"       long_name="ice velocity"                                                 unit="m/s"      /> 
    259          <field id="isume"        long_name="surface melt"                                                 unit="km3/day"   /> 
    260          <field id="ibome"        long_name="bottom melt"                                                  unit="km3/day"   /> 
    261260         <field id="idive"        long_name="divergence"                                                   unit="10-8s-1"  /> 
    262261         <field id="ishear"       long_name="shear"                                                        unit="10-8s-1"  /> 
    263          <field id="icerepr"      long_name="daily resultant ice prod./melting from limupdate"             unit="km3/day"   /> 
    264          <field id="icevolu"      long_name="ice volume"                                                   unit="km3"      /> 
    265          <field id="snowvol"      long_name="snow volume"                                                  unit="km3"      /> 
    266          <field id="sfxmec"       long_name="salt flux from ridging rafting"                               unit="psu*kg/m2/day" /> 
     262         <field id="icevolu"      long_name="ice volume"                                                   unit="m"      /> 
     263         <field id="snowvol"      long_name="snow volume"                                                  unit="m"      /> 
     264 
     265         <field id="icetrp"       long_name="ice volume transport"                                         unit="m/day"   /> 
     266         <field id="snwtrp"       long_name="snw volume transport"                                         unit="m/day"   /> 
     267         <field id="deitrp"       long_name="advected ice enhalpy"                                         unit="W/m2"   /> 
     268         <field id="destrp"       long_name="advected snw enhalpy"                                         unit="W/m2"   /> 
     269 
     270         <field id="sfxbri"       long_name="brine salt flux"                                              unit="psu*kg/m2/day" /> 
     271         <field id="sfxdyn"       long_name="salt flux from ridging rafting"                               unit="psu*kg/m2/day" /> 
    267272         <field id="sfxres"       long_name="salt flux from lipupdate (resultant)"                         unit="psu*kg/m2/day" /> 
    268          <field id="icetrp"       long_name="ice volume transport"                                         unit="km3/day"   /> 
    269  
    270  
     273         <field id="sfxbog"       long_name="salt flux from bot growth"                                    unit="psu*kg/m2/day" /> 
     274         <field id="sfxbom"       long_name="salt flux from bot melt"                                      unit="psu*kg/m2/day" /> 
     275         <field id="sfxsum"       long_name="salt flux from surf melt"                                     unit="psu*kg/m2/day" /> 
     276         <field id="sfxsni"       long_name="salt flux from snow-ice formation"                            unit="psu*kg/m2/day" /> 
     277         <field id="sfxopw"       long_name="salt flux from open water ice formation"                      unit="psu*kg/m2/day" /> 
     278         <field id="sfx"          long_name="salt flux total"                                              unit="psu*kg/m2/day" /> 
     279 
     280         <field id="vfxbog"       long_name="daily bottom thermo ice prod."                                unit="m/day"   /> 
     281         <field id="vfxdyn"       long_name="daily  dynamic ice prod."                                     unit="m/day"   /> 
     282         <field id="vfxopw"       long_name="daily lateral thermo ice prod."                               unit="m/day"   /> 
     283         <field id="vfxsni"       long_name="daily snowice ice prod."                                      unit="m/day"   /> 
     284         <field id="vfxsum"       long_name="surface melt"                                                 unit="m/day"   /> 
     285         <field id="vfxbom"       long_name="bottom melt"                                                  unit="m/day"   /> 
     286         <field id="vfxres"       long_name="daily resultant ice prod./melting from limupdate"             unit="m/day"   /> 
     287         <field id="vfxice"       long_name="ice melt/growth"                                              unit="m/day"   /> 
     288         <field id="vfxsnw"       long_name="snw melt/growth"                                              unit="m/day"   /> 
     289         <field id="vfxsub"       long_name="snw sublimation"                                              unit="m/day"   /> 
     290         <field id="vfxspr"       long_name="snw precipitation on ice"                                     unit="m/day"   /> 
     291 
     292         <field id="hfxsum"   long_name="heat fluxes causing surface ice melt"            unit="W/m2"  /> 
     293         <field id="hfxbom"   long_name="heat fluxes causing bottom ice melt"             unit="W/m2"  /> 
     294         <field id="hfxbog"   long_name="heat fluxes causing bottom ice growth"           unit="W/m2"  /> 
     295         <field id="hfxdif"   long_name="heat fluxes causing ice temperature change"      unit="W/m2"  /> 
     296         <field id="hfxopw"   long_name="heat fluxes causing open water ice formation"    unit="W/m2"  /> 
     297         <field id="hfxsnw"   long_name="heat fluxes causing snow melt"                   unit="W/m2"  /> 
     298         <field id="hfxerr"   long_name="heat fluxes error after heat diffusion"          unit="W/m2"  /> 
     299         <field id="hfxerr_rem" long_name="heat fluxes error after remapping"             unit="W/m2"  /> 
     300         <field id="hfxout"   long_name="total heat fluxes received by the ocean"         unit="W/m2"  /> 
     301         <field id="hfxin"    long_name="total heat fluxes at the ice/ocean surface"      unit="W/m2"  /> 
     302 
     303    <!-- heat flux associated with mass exchange --> 
     304         <field id="hfxthd"   long_name="heat fluxes from ice-ocean mass exchange during thermo"              unit="W/m2"  /> 
     305         <field id="hfxdyn"   long_name="heat fluxes from ice-ocean mass exchange during dynamic"             unit="W/m2"  /> 
     306         <field id="hfxres"   long_name="heat fluxes from ice-ocean mass exchange during resultant"           unit="W/m2"  /> 
     307         <field id="hfxsub"   long_name="heat fluxes from ice-atm. mass exchange during sublimation"          unit="W/m2"  /> 
     308         <field id="hfxspr"   long_name="heat fluxes from ice-atm. mass exchange during snow precip"          unit="W/m2" /> 
     309 
     310    <!-- diags --> 
     311         <field id="hfxdhc"    long_name="Heat content variation in snow and ice"   unit="W/m2" /> 
     312         <field id="hfxtur"    long_name="turbulent heat flux at the ice base"      unit="W/m2"  /> 
     313   
     314          
    271315      </field_group> 
    272316 
  • branches/2014/dev_CNRS_2014/NEMOGCM/CONFIG/SHARED/namelist_ice_lim3_ref

    r4900 r4902  
    5252   ecc         =   2.0     !  eccentricity of the elliptical yield curve 
    5353   ahi0        = 350.e0    !  horizontal eddy diffusivity coefficient for sea-ice [m2/s] 
    54    nevp        = 300       !  number of iterations for subcycling in EVP, SB, 400 
    55    telast      =9600.0     !  timescale for elastic waves, SB, 720.0 
     54   nevp        = 120       !  number of iterations for subcycling in EVP 
     55   relast      = 0.333     !  ratio of elastic timescale over ice time step (1/3 if nevp=120 ; 1/9 if nevp=300) 
    5656   alphaevp    =   1.0     !  coefficient for the solution of internal ice stresses 
    5757   hminrhg     =   0.001   !  ice volume (a*h in m) below which ice velocity equal ocean velocity 
  • branches/2014/dev_CNRS_2014/NEMOGCM/CONFIG/SHARED/namelist_ref

    r4901 r4902  
    244244                           !     =1 global mean of e-p-r set to zero at each time step 
    245245                           !     =2 annual global mean of e-p-r set to zero 
    246                            !     =3 global emp set to zero and spread out over erp area 
    247246   ln_wave = .false.       !  Activate coupling with wave (either Stokes Drift or Drag coefficient, or both)  (T => fill namsbc_wave) 
    248247   ln_cdgw = .false.       !  Neutral drag coefficient read from wave model (T => fill namsbc_wave) 
  • branches/2014/dev_CNRS_2014/NEMOGCM/NEMO/LIM_SRC_3/ice.F90

    r4900 r4902  
    105105   !! ** Global variables                                                 | 
    106106   !!-------------|-------------|---------------------------------|-------| 
    107    !! a_i         | a_i_b       |    Ice concentration            |       | 
     107   !! a_i         | a_i_1d      |    Ice concentration            |       | 
    108108   !! v_i         |      -      |    Ice volume per unit area     | m     | 
    109109   !! v_s         |      -      |    Snow volume per unit area    | m     | 
     
    111111   !! oa_i        !      -      !    Sea ice areal age content    | day   | 
    112112   !! e_i         !      -      !    Ice enthalpy                 | 10^9 J|  
    113    !!      -      ! q_i_b       !    Ice enthalpy per unit vol.   | J/m3  |  
     113   !!      -      ! q_i_1d      !    Ice enthalpy per unit vol.   | J/m3  |  
    114114   !! e_s         !      -      !    Snow enthalpy                | 10^9 J|  
    115    !!      -      ! q_s_b       !    Snow enthalpy per unit vol.  | J/m3  |  
     115   !!      -      ! q_s_1d      !    Snow enthalpy per unit vol.  | J/m3  |  
    116116   !!                                                                     | 
    117117   !!-------------|-------------|---------------------------------|-------| 
     
    120120   !!-------------|-------------|---------------------------------|-------| 
    121121   !!                                                                     | 
    122    !! ht_i        | ht_i_b      |    Ice thickness                | m     | 
    123    !! ht_s        ! ht_s_b      |    Snow depth                   | m     | 
    124    !! sm_i        ! sm_i_b      |    Sea ice bulk salinity        ! ppt   | 
    125    !! s_i         ! s_i_b       |    Sea ice salinity profile     ! ppt   | 
     122   !! ht_i        | ht_i_1d     |    Ice thickness                | m     | 
     123   !! ht_s        ! ht_s_1d     |    Snow depth                   | m     | 
     124   !! sm_i        ! sm_i_1d     |    Sea ice bulk salinity        ! ppt   | 
     125   !! s_i         ! s_i_1d      |    Sea ice salinity profile     ! ppt   | 
    126126   !! o_i         !      -      |    Sea ice Age                  ! days  | 
    127    !! t_i         ! t_i_b       |    Sea ice temperature          ! K     | 
    128    !! t_s         ! t_s_b       |    Snow temperature             ! K     | 
    129    !! t_su        ! t_su_b      |    Sea ice surface temperature  ! K     | 
     127   !! t_i         ! t_i_1d      |    Sea ice temperature          ! K     | 
     128   !! t_s         ! t_s_1d      |    Snow temperature             ! K     | 
     129   !! t_su        ! t_su_1d     |    Sea ice surface temperature  ! K     | 
    130130   !!                                                                     | 
    131131   !! notes: the ice model only sees a bulk (i.e., vertically averaged)   | 
     
    142142   !! ***         Category-summed state variables (diagnostic)        *** | 
    143143   !! ******************************************************************* | 
    144    !! at_i        | at_i_b      |    Total ice concentration      |       | 
     144   !! at_i        | at_i_1d     |    Total ice concentration      |       | 
    145145   !! vt_i        |      -      |    Total ice vol. per unit area | m     | 
    146146   !! vt_s        |      -      |    Total snow vol. per unit ar. | m     | 
     
    176176   REAL(wp), PUBLIC ::   ecc              !: eccentricity of the elliptical yield curve 
    177177   REAL(wp), PUBLIC ::   ahi0             !: sea-ice hor. eddy diffusivity coeff. (m2/s) 
    178    REAL(wp), PUBLIC ::   telast           !: timescale for elastic waves (s) !SB 
    179    REAL(wp), PUBLIC ::   alphaevp         !: coeficient of the internal stresses !SB 
     178   REAL(wp), PUBLIC ::   telast           !: timescale for elastic waves (s) 
     179   REAL(wp), PUBLIC ::   relast           !: ratio => telast/rdt_ice (1/3 or 1/9 depending on nb of subcycling nevp)  
     180   REAL(wp), PUBLIC ::   alphaevp         !: coeficient of the internal stresses  
    180181   REAL(wp), PUBLIC ::   unit_fac = 1.e+09_wp  !: conversion factor for ice / snow enthalpy 
    181182   REAL(wp), PUBLIC ::   hminrhg          !: ice volume (a*h, in m) below which ice velocity is set to ocean velocity 
     
    247248   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   fhld        !: heat flux from the lead used for bottom melting 
    248249 
    249    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   wfx_snw     !: Variation of snow mass over 1 time step     [Kg/m2] 
    250    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   wfx_ice     !: Variation of ice mass over 1 time step      [Kg/m2] 
    251    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   wfx_sub     !: Variation of snow mass over 1 time step due to sublimation [Kg/m2] 
    252  
    253    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   wfx_sni     !: snow ice growth  
    254    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   wfx_opw     !: lateral ice growth  
    255    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   wfx_bog     !: bottom ice growth  
    256    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   wfx_dyn     !: dynamical ice growth  
    257    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   wfx_bom     !: vertical bottom melt  
    258    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   wfx_sum     !: vertical surface melt 
    259    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   wfx_res     !: production (growth+melt) due to limupdate 
    260    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   wfx_spr     !: snow precipitation on ice 
     250   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   wfx_snw    !: snow-ocean mass exchange over 1 time step [kg/m2] 
     251   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   wfx_spr    !: snow precipitation on ice over 1 time step [kg/m2] 
     252   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   wfx_sub    !: snow sublimation over 1 time step [kg/m2] 
     253 
     254   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   wfx_ice    !: ice-ocean mass exchange over 1 time step [kg/m2] 
     255   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   wfx_sni    !: snow ice growth component of wfx_ice [kg/m2] 
     256   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   wfx_opw    !: lateral ice growth component of wfx_ice [kg/m2] 
     257   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   wfx_bog    !: bottom ice growth component of wfx_ice [kg/m2] 
     258   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   wfx_dyn    !: dynamical ice growth component of wfx_ice [kg/m2] 
     259   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   wfx_bom    !: bottom melt component of wfx_ice [kg/m2] 
     260   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   wfx_sum    !: surface melt component of wfx_ice [kg/m2] 
     261   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   wfx_res    !: residual component of wfx_ice [kg/m2] 
    261262 
    262263   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   sfx_bog     !: salt flux due to ice growth/melt                      [PSU/m2/s] 
     
    323324   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   smt_i          !: mean sea ice salinity averaged over all categories [PSU] 
    324325 
    325    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   at_i_typ     !: total area   contained in each ice type [m^2] 
    326    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   vt_i_typ     !: total volume contained in each ice type [m^3] 
    327  
    328326   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) ::   t_s        !: Snow temperatures [K] 
    329327   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) ::   e_s        !: Snow ...       
    330  
    331    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::   e_i_cat    !: ! go to trash 
    332328       
    333329   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) ::   t_i        !: ice temperatures          [K] 
     
    350346   !! * Old values of global variables 
    351347   !!-------------------------------------------------------------------------- 
    352    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::   old_v_s, old_v_i               !: snow and ice volumes 
    353    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::   old_a_i, old_smv_i, old_oa_i   !: ??? 
    354    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) ::   old_e_s                        !: snow heat content 
    355    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) ::   old_e_i                        !: ice temperatures 
    356    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::   old_u_ice, old_v_ice           !: ice velocity (gv6 and gv7) 
     348   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::   v_s_b, v_i_b               !: snow and ice volumes 
     349   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::   a_i_b, smv_i_b, oa_i_b     !: 
     350   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) ::   e_s_b                      !: snow heat content 
     351   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) ::   e_i_b                      !: ice temperatures 
     352   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::   u_ice_b, v_ice_b           !: ice velocity 
    357353       
    358354 
     
    377373   !! * Ice thickness distribution variables 
    378374   !!-------------------------------------------------------------------------- 
    379    ! REMOVE 
    380    INTEGER , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:)   ::   ice_types      !: Vector connecting types and categories 
    381    INTEGER , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   ice_cat_bounds !: Matrix containing the integer upper and  
    382    !                                                                       !  lower boundaries of ice thickness categories 
    383    ! REMOVE 
    384    INTEGER , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:)   ::   ice_ncat_types !: nb of thickness categories in each ice type 
    385375   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:)   ::   hi_max         !: Boundary of ice thickness categories in thickness space 
    386376   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:)   ::   hi_mean        !: Mean ice thickness in catgories  
    387    ! REMOVE 
    388    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   hi_max_typ     !: Boundary of ice thickness categories in thickness space 
    389377 
    390378   !!-------------------------------------------------------------------------- 
     
    475463         &      bv_i (jpi,jpj) , smt_i(jpi,jpj)                                   , STAT=ierr(ii) ) 
    476464      ii = ii + 1 
    477       ALLOCATE( t_s(jpi,jpj,nlay_s,jpl) , at_i_typ(jpi,jpj,jpm) ,                            & 
    478          &      e_s(jpi,jpj,nlay_s,jpl) , vt_i_typ(jpi,jpj,jpm) , e_i_cat(jpi,jpj,jpl) , STAT=ierr(ii) ) 
    479       ii = ii + 1 
    480       ALLOCATE( t_i(jpi,jpj,jkmax,jpl) , e_i(jpi,jpj,jkmax,jpl) , s_i(jpi,jpj,jkmax,jpl) , STAT=ierr(ii) ) 
     465      ALLOCATE( t_s(jpi,jpj,nlay_s,jpl) ,                            & 
     466         &      e_s(jpi,jpj,nlay_s,jpl) , STAT=ierr(ii) ) 
     467      ii = ii + 1 
     468      ALLOCATE( t_i(jpi,jpj,nlay_i+1,jpl) , e_i(jpi,jpj,nlay_i+1,jpl) , s_i(jpi,jpj,nlay_i+1,jpl) , STAT=ierr(ii) ) 
    481469 
    482470      ! * Moments for advection 
     
    494482         &      STAT=ierr(ii) ) 
    495483      ii = ii + 1 
    496       ALLOCATE( sxe (jpi,jpj,jkmax,jpl) , sye (jpi,jpj,jkmax,jpl) , sxxe(jpi,jpj,jkmax,jpl) ,     & 
    497          &      syye(jpi,jpj,jkmax,jpl) , sxye(jpi,jpj,jkmax,jpl)                           , STAT=ierr(ii) ) 
     484      ALLOCATE( sxe (jpi,jpj,nlay_i+1,jpl) , sye (jpi,jpj,nlay_i+1,jpl) , sxxe(jpi,jpj,nlay_i+1,jpl) ,     & 
     485         &      syye(jpi,jpj,nlay_i+1,jpl) , sxye(jpi,jpj,nlay_i+1,jpl)                           , STAT=ierr(ii) ) 
    498486 
    499487      ! * Old values of global variables 
    500488      ii = ii + 1 
    501       ALLOCATE( old_v_s  (jpi,jpj,jpl) , old_v_i  (jpi,jpj,jpl) , old_e_s(jpi,jpj,nlay_s,jpl) ,     & 
    502          &      old_a_i  (jpi,jpj,jpl) , old_smv_i(jpi,jpj,jpl) , old_e_i(jpi,jpj,jkmax ,jpl) ,     & 
    503          &      old_oa_i (jpi,jpj,jpl)                                                        ,     & 
    504          &      old_u_ice(jpi,jpj)     , old_v_ice(jpi,jpj)                                   , STAT=ierr(ii) ) 
     489      ALLOCATE( v_s_b  (jpi,jpj,jpl) , v_i_b  (jpi,jpj,jpl) , e_s_b(jpi,jpj,nlay_s,jpl) ,     & 
     490         &      a_i_b  (jpi,jpj,jpl) , smv_i_b(jpi,jpj,jpl) , e_i_b(jpi,jpj,nlay_i+1 ,jpl) ,     & 
     491         &      oa_i_b (jpi,jpj,jpl)                                                        ,     & 
     492         &      u_ice_b(jpi,jpj)     , v_ice_b(jpi,jpj)                                   , STAT=ierr(ii) ) 
    505493 
    506494      ! * Increment of global variables 
     
    512500         &     STAT=ierr(ii) ) 
    513501      ii = ii + 1 
    514       ALLOCATE( d_e_s_thd(jpi,jpj,nlay_s,jpl) , d_e_i_thd(jpi,jpj,jkmax,jpl) , d_u_ice_dyn(jpi,jpj) ,     & 
    515          &      d_e_s_trp(jpi,jpj,nlay_s,jpl) , d_e_i_trp(jpi,jpj,jkmax,jpl) , d_v_ice_dyn(jpi,jpj) , STAT=ierr(ii) ) 
     502      ALLOCATE( d_e_s_thd(jpi,jpj,nlay_s,jpl) , d_e_i_thd(jpi,jpj,nlay_i+1,jpl) , d_u_ice_dyn(jpi,jpj) ,     & 
     503         &      d_e_s_trp(jpi,jpj,nlay_s,jpl) , d_e_i_trp(jpi,jpj,nlay_i+1,jpl) , d_v_ice_dyn(jpi,jpj) , STAT=ierr(ii) ) 
    516504       
    517505      ! * Ice thickness distribution variables 
    518506      ii = ii + 1 
    519       ALLOCATE( ice_types(jpl) , ice_cat_bounds(jpm,2) , ice_ncat_types  (jpm) ,     & 
    520          &      hi_max (0:jpl) , hi_mean(jpl)          , hi_max_typ(0:jpl,jpm) , STAT=ierr(ii) ) 
     507      ALLOCATE( hi_max(0:jpl), hi_mean(jpl),  STAT=ierr(ii) ) 
    521508 
    522509      ! * Ice diagnostics 
    523510      ii = ii + 1 
    524       ALLOCATE( dv_dt_thd(jpi,jpj,jpl) ,     & 
    525          &      izero    (jpi,jpj,jpl)  , diag_trp_vi(jpi,jpj) , diag_trp_vs(jpi,jpj), diag_trp_ei(jpi,jpj), diag_trp_es(jpi,jpj),     &  
    526          &      diag_heat_dhc(jpi,jpj) ,  STAT=ierr(ii) ) 
     511      ALLOCATE( dv_dt_thd(jpi,jpj,jpl), izero (jpi,jpj,jpl),    & 
     512         &      diag_trp_vi(jpi,jpj), diag_trp_vs  (jpi,jpj), diag_trp_ei(jpi,jpj),   &  
     513         &      diag_trp_es(jpi,jpj), diag_heat_dhc(jpi,jpj),  STAT=ierr(ii) ) 
    527514 
    528515      ice_alloc = MAXVAL( ierr(:) ) 
  • branches/2014/dev_CNRS_2014/NEMOGCM/NEMO/LIM_SRC_3/iceini.F90

    r4901 r4902  
    6666      ! 
    6767      !                                ! adequation jpk versus ice/snow layers/categories 
    68       IF( jpl   > jpk  .OR.  jpm    > jpk .OR.                                    & 
    69           jkmax > jpk  .OR.  nlay_s > jpk      )   CALL ctl_stop( 'STOP',         & 
     68      IF( jpl > jpk .OR. (nlay_i+1) > jpk .OR. nlay_s > jpk )   & 
     69         &      CALL ctl_stop( 'STOP',                     & 
    7070         &     'ice_init: the 3rd dimension of workspace arrays is too small.',   & 
    7171         &     'use more ocean levels or less ice/snow layers/categories.' ) 
     
    174174      !!              limistate (only) and is changed to 99 m in ice_init 
    175175      !!------------------------------------------------------------------ 
    176       INTEGER  ::   jl, jm               ! dummy loop index 
     176      INTEGER  ::   jl                   ! dummy loop index 
    177177      REAL(wp) ::   zc1, zc2, zc3, zx1   ! local scalars 
    178178      !!------------------------------------------------------------------ 
     
    185185      ! 1) Ice thickness distribution parameters initialization     
    186186      !------------------------------------------------------------------------------! 
    187  
    188       !- Types boundaries (integer) 
    189       !---------------------------- 
    190       ice_cat_bounds(1,1) = 1 
    191       ice_cat_bounds(1,2) = jpl 
    192  
    193       !- Number of ice thickness categories in each ice type 
    194       DO jm = 1, jpm 
    195          ice_ncat_types(jm) = ice_cat_bounds(jm,2) - ice_cat_bounds(jm,1) + 1  
    196       END DO 
    197  
    198       !- Make the correspondence between thickness categories and ice types 
    199       !--------------------------------------------------------------------- 
    200       DO jm = 1, jpm       !over types 
    201          DO jl = ice_cat_bounds(jm,1), ice_cat_bounds(jm,2) !over thickness categories 
    202             ice_types(jl) = jm 
    203          END DO 
    204       END DO 
    205  
    206187      IF(lwp) THEN   
    207          WRITE(numout,*) ' Number of ice types jpm =      ', jpm 
    208188         WRITE(numout,*) ' Number of ice categories jpl = ', jpl 
    209          DO jm = 1, jpm 
    210             WRITE(numout,*) ' Ice type ', jm 
    211             WRITE(numout,*) ' Number of thickness categories ', ice_ncat_types(jm) 
    212             WRITE(numout,*) ' Thickness category boundaries  ', ice_cat_bounds(jm,1:2) 
    213          END DO 
    214          WRITE(numout,*) 'Ice type vector', ice_types(1:jpl) 
    215          WRITE(numout,*) 
    216189      ENDIF 
    217190 
     
    219192      !---------------------------------- 
    220193      hi_max(:) = 0._wp 
    221       hi_max_typ(:,:) = 0._wp 
    222  
    223       !- Type 1 - undeformed ice 
    224       zc1 =  3._wp / REAL( ice_cat_bounds(1,2) - ice_cat_bounds(1,1) + 1 , wp ) 
     194 
     195      zc1 =  3._wp / REAL( jpl, wp ) 
    225196      zc2 = 10._wp * zc1 
    226197      zc3 =  3._wp 
    227198 
    228       DO jl = ice_cat_bounds(1,1), ice_cat_bounds(1,2) 
    229          zx1 = REAL( jl-1 , wp ) / REAL( ice_cat_bounds(1,2) - ice_cat_bounds(1,1) + 1 , wp ) 
     199      DO jl = 1, jpl 
     200         zx1 = REAL( jl-1, wp ) / REAL( jpl, wp ) 
    230201         hi_max(jl) = hi_max(jl-1) + zc1 + zc2 * (1._wp + TANH( zc3 * (zx1 - 1._wp ) ) ) 
    231202      END DO 
    232203 
    233       !- Fill in the hi_max_typ vector, useful in other circumstances 
    234       ! Tricky trick: hi_max_typ is actually not used in the code and will be removed in a 
    235       ! next flyspray at this time, the tricky trick will also be removed (Martin, march 08) 
    236       DO jl = ice_cat_bounds(1,1), ice_cat_bounds(1,2) 
    237          hi_max_typ(jl,1) = hi_max(jl) 
    238       END DO 
    239  
    240       IF(lwp) WRITE(numout,*) ' Thickness category boundaries independently of ice type ' 
     204      IF(lwp) WRITE(numout,*) ' Thickness category boundaries ' 
    241205      IF(lwp) WRITE(numout,*) ' hi_max ', hi_max(0:jpl) 
    242206 
    243       IF(lwp) WRITE(numout,*) ' Thickness category boundaries inside ice types ' 
    244       IF(lwp) THEN  
    245          DO jm = 1, jpm 
    246             WRITE(numout,*) ' Type number ', jm 
    247             WRITE(numout,*) ' hi_max_typ : ', hi_max_typ(0:ice_ncat_types(jm),jm) 
    248          END DO 
    249       ENDIF 
    250207      ! 
    251208      DO jl = 1, jpl 
  • branches/2014/dev_CNRS_2014/NEMOGCM/NEMO/LIM_SRC_3/limcons.F90

    r4900 r4902  
    7373      !! ** Method  : Arithmetics 
    7474      !!--------------------------------------------------------------------- 
    75       INTEGER                               , INTENT(in   ) ::   ksum   !: number of categories 
    76       INTEGER                               , INTENT(in   ) ::   klay   !: number of vertical layers 
    77       REAL(wp), DIMENSION(jpi,jpj,jkmax,jpl), INTENT(in   ) ::   pin   !: input field 
    78       REAL(wp), DIMENSION(jpi,jpj)          , INTENT(  out) ::   pout   !: output field 
     75      INTEGER                                  , INTENT(in   ) ::   ksum   !: number of categories 
     76      INTEGER                                  , INTENT(in   ) ::   klay   !: number of vertical layers 
     77      REAL(wp), DIMENSION(jpi,jpj,nlay_i+1,jpl), INTENT(in   ) ::   pin   !: input field 
     78      REAL(wp), DIMENSION(jpi,jpj)             , INTENT(  out) ::   pout   !: output field 
    7979      ! 
    8080      INTEGER ::   jk, jl   ! dummy loop indices 
     
    175175         zei_b  = glob_sum( SUM(   e_i(:,:,1:nlay_i,:), dim=3 ) + SUM( e_s(:,:,1:nlay_s,:), dim=3 ) ) 
    176176         zfw_b  = glob_sum( - ( wfx_bog(:,:) + wfx_bom(:,:) + wfx_sum(:,:) + wfx_sni(:,:) + wfx_opw(:,:) +  & 
    177             &                   wfx_res(:,:) + wfx_dyn(:,:) + wfx_snw(:,:) + wfx_sub(:,:) + wfx_spr(:,:) ) * area(:,:) * tms(:,:) ) 
     177            &                   wfx_res(:,:) + wfx_dyn(:,:) + wfx_snw(:,:) + wfx_sub(:,:) + wfx_spr(:,:)    & 
     178            &             ) * area(:,:) * tms(:,:) ) 
    178179         zfs_b  = glob_sum(   ( sfx_bri(:,:) + sfx_bog(:,:) + sfx_bom(:,:) + sfx_sum(:,:) + sfx_sni(:,:) +  & 
    179             &                   sfx_opw(:,:) + sfx_res(:,:) + sfx_dyn(:,:) ) * area(:,:) * tms(:,:) ) 
     180            &                   sfx_opw(:,:) + sfx_res(:,:) + sfx_dyn(:,:)                                  & 
     181            &                 ) * area(:,:) * tms(:,:) ) 
    180182         zft_b  = glob_sum(   ( hfx_sum(:,:) + hfx_bom(:,:) + hfx_bog(:,:) + hfx_dif(:,:) + hfx_opw(:,:) + hfx_snw(:,:)  &  
    181             &                 - hfx_thd(:,:) - hfx_dyn(:,:) - hfx_res(:,:) - hfx_sub(:,:) - hfx_spr(:,:) ) * area(:,:) / unit_fac * tms(:,:) ) 
     183            &                 - hfx_thd(:,:) - hfx_dyn(:,:) - hfx_res(:,:) - hfx_sub(:,:) - hfx_spr(:,:)   & 
     184            &                  ) * area(:,:) / unit_fac * tms(:,:) ) 
    182185 
    183186      ELSEIF( icount == 1 ) THEN 
    184187 
    185188         zfs  = glob_sum(   ( sfx_bri(:,:) + sfx_bog(:,:) + sfx_bom(:,:) + sfx_sum(:,:) + sfx_sni(:,:) +  & 
    186             &                 sfx_opw(:,:) + sfx_res(:,:) + sfx_dyn(:,:) ) * area(:,:) * tms(:,:) ) - zfs_b 
     189            &                 sfx_opw(:,:) + sfx_res(:,:) + sfx_dyn(:,:)                                  &  
     190            &                ) * area(:,:) * tms(:,:) ) - zfs_b 
    187191         zfw  = glob_sum( - ( wfx_bog(:,:) + wfx_bom(:,:) + wfx_sum(:,:) + wfx_sni(:,:) + wfx_opw(:,:) +  & 
    188             &                 wfx_res(:,:) + wfx_dyn(:,:) + wfx_snw(:,:) + wfx_sub(:,:) + wfx_spr(:,:) ) * area(:,:) * tms(:,:) ) - zfw_b 
     192            &                 wfx_res(:,:) + wfx_dyn(:,:) + wfx_snw(:,:) + wfx_sub(:,:) + wfx_spr(:,:)    & 
     193            &                ) * area(:,:) * tms(:,:) ) - zfw_b 
    189194         zft  = glob_sum(   ( hfx_sum(:,:) + hfx_bom(:,:) + hfx_bog(:,:) + hfx_dif(:,:) + hfx_opw(:,:) + hfx_snw(:,:)  &  
    190             &               - hfx_thd(:,:) - hfx_dyn(:,:) - hfx_res(:,:) - hfx_sub(:,:) - hfx_spr(:,:) ) * area(:,:) / unit_fac * tms(:,:) ) - zft_b 
     195            &               - hfx_thd(:,:) - hfx_dyn(:,:) - hfx_res(:,:) - hfx_sub(:,:) - hfx_spr(:,:)   & 
     196            &                ) * area(:,:) / unit_fac * tms(:,:) ) - zft_b 
    191197  
    192198         zvi  = ( glob_sum( SUM(   v_i(:,:,:)*rhoic + v_s(:,:,:)*rhosn, dim=3 ) * area(:,:) * tms(:,:) ) - zvi_b ) * r1_rdtice - zfw  
  • branches/2014/dev_CNRS_2014/NEMOGCM/NEMO/LIM_SRC_3/limdiahsb.F90

    r4900 r4902  
    5959      !! 
    6060      REAL(dp)   ::   zbg_ivo, zbg_svo, zbg_are, zbg_sal ,zbg_tem ,zbg_ihc ,zbg_shc 
    61       REAL(dp)   ::   zbg_sfx, zbg_sfx_bri, zbg_sfx_bog, zbg_sfx_bom, zbg_sfx_sum, zbg_sfx_sni, zbg_sfx_opw, zbg_sfx_res, zbg_sfx_dyn  
     61      REAL(dp)   ::   zbg_sfx, zbg_sfx_bri, zbg_sfx_bog, zbg_sfx_bom, zbg_sfx_sum, zbg_sfx_sni,   & 
     62      &               zbg_sfx_opw, zbg_sfx_res, zbg_sfx_dyn  
    6263      REAL(dp)   ::   zbg_vfx, zbg_vfx_bog, zbg_vfx_opw, zbg_vfx_sni, zbg_vfx_dyn 
    6364      REAL(dp)   ::   zbg_vfx_bom, zbg_vfx_sum, zbg_vfx_res, zbg_vfx_spr, zbg_vfx_snw, zbg_vfx_sub   
  • branches/2014/dev_CNRS_2014/NEMOGCM/NEMO/LIM_SRC_3/limdyn.F90

    r4900 r4902  
    8383         IF( ln_limdiahsb ) CALL lim_cons_hsm(0, 'limdyn', zvi_b, zsmv_b, zei_b, zfw_b, zfs_b, zft_b) 
    8484 
    85          old_u_ice(:,:) = u_ice(:,:) * tmu(:,:) 
    86          old_v_ice(:,:) = v_ice(:,:) * tmv(:,:) 
     85         u_ice_b(:,:) = u_ice(:,:) * tmu(:,:) 
     86         v_ice_b(:,:) = v_ice(:,:) * tmv(:,:) 
    8787 
    8888         ! Rheology (ice dynamics) 
     
    243243      NAMELIST/namicedyn/ epsd, om, cw, angvg, pstar,   & 
    244244         &                c_rhg, creepl, ecc, ahi0,     & 
    245          &                nevp, telast, alphaevp, hminrhg 
     245         &                nevp, relast, alphaevp, hminrhg 
    246246      !!------------------------------------------------------------------- 
    247247 
     
    269269         WRITE(numout,*) '   horizontal diffusivity coeff. for sea-ice        ahi0   = ', ahi0 
    270270         WRITE(numout,*) '   number of iterations for subcycling              nevp   = ', nevp 
    271          WRITE(numout,*) '   timescale for elastic waves                      telast = ', telast 
     271         WRITE(numout,*) '   ratio of elastic timescale over ice time step    relast = ', relast 
    272272         WRITE(numout,*) '   coefficient for the solution of int. stresses  alphaevp = ', alphaevp 
    273273         WRITE(numout,*) '   min ice thickness for rheology calculations     hminrhg = ', hminrhg 
     
    287287      pstarh = pstar * 0.5_wp 
    288288 
     289      ! elastic damping 
     290      telast = relast * rdt_ice 
     291 
    289292      !  Diffusion coefficients. 
    290293      ahiu(:,:) = ahi0 * umask(:,:,1) 
  • branches/2014/dev_CNRS_2014/NEMOGCM/NEMO/LIM_SRC_3/limistate.F90

    r4901 r4902  
    128128      DO jj = 1, jpj                                       ! ice if sst <= t-freez + ttest 
    129129         DO ji = 1, jpi 
    130             IF( ( tsn(ji,jj,1,jp_tem)  - ( t_bo(ji,jj) - rt0 ) ) * tms(ji,jj) >= thres_sst ) THEN  ; zswitch(ji,jj) = 0._wp * tms(ji,jj)    ! no ice 
    131             ELSE                                                                                   ; zswitch(ji,jj) = 1._wp * tms(ji,jj)    !    ice 
     130            IF( ( tsn(ji,jj,1,jp_tem)  - ( t_bo(ji,jj) - rt0 ) ) * tms(ji,jj) >= thres_sst ) THEN  
     131               zswitch(ji,jj) = 0._wp * tms(ji,jj)    ! no ice 
     132            ELSE                                                                                    
     133               zswitch(ji,jj) = 1._wp * tms(ji,jj)    !    ice 
    132134            ENDIF 
    133135         END DO 
  • branches/2014/dev_CNRS_2014/NEMOGCM/NEMO/LIM_SRC_3/limitd_me.F90

    r4901 r4902  
    692692 
    693693      IF( partfun_swi == 0 ) THEN       !--- Linear formulation (Thorndike et al., 1975) 
    694          DO jl = 0, ice_cat_bounds(1,2)       ! only undeformed ice participates 
     694         DO jl = 0, jpl     
    695695            DO jj = 1, jpj  
    696696               DO ji = 1, jpi 
     
    715715            Gsum(:,:,jl) = EXP( -Gsum(:,:,jl) * astari ) * zdummy 
    716716         END DO !jl 
    717          DO jl = 0, ice_cat_bounds(1,2) 
     717         DO jl = 0, jpl 
    718718             athorn(:,:,jl) = Gsum(:,:,jl-1) - Gsum(:,:,jl) 
    719719         END DO 
     
    897897      CALL wrk_alloc( jpi, jpj,             afrft, arft1, arft2, virft, vsrft, esrft, smrft, oirft1, oirft2 ) 
    898898      CALL wrk_alloc( jpi, jpj, jpl,        aicen_init, vicen_init, vsnwn_init, esnwn_init, smv_i_init, oa_i_init ) 
    899       CALL wrk_alloc( jpi, jpj, jkmax,      eirft, erdg1, erdg2, ersw ) 
    900       CALL wrk_alloc( jpi, jpj, jkmax, jpl, eicen_init ) 
     899      CALL wrk_alloc( jpi, jpj, nlay_i+1,      eirft, erdg1, erdg2, ersw ) 
     900      CALL wrk_alloc( jpi, jpj, nlay_i+1, jpl, eicen_init ) 
    901901 
    902902      ! Conservation check 
     
    11931193         !------------------------------------------------------------------------------- 
    11941194         !        jl1 looping 1-jpl 
    1195          DO jl2  = ice_cat_bounds(1,1), ice_cat_bounds(1,2)  
     1195         DO jl2  = 1, jpl  
    11961196            ! over categories to which ridged ice is transferred 
    11971197!CDIR NODEP 
     
    12381238         END DO                 ! jl2 (new ridges)             
    12391239 
    1240          DO jl2 = ice_cat_bounds(1,1), ice_cat_bounds(1,2)  
     1240         DO jl2 = 1, jpl  
    12411241 
    12421242!CDIR NODEP 
     
    13021302      CALL wrk_dealloc( jpi, jpj,             afrft, arft1, arft2, virft, vsrft, esrft, smrft, oirft1, oirft2 ) 
    13031303      CALL wrk_dealloc( jpi, jpj, jpl,        aicen_init, vicen_init, vsnwn_init, esnwn_init, smv_i_init, oa_i_init ) 
    1304       CALL wrk_dealloc( jpi, jpj, jkmax,      eirft, erdg1, erdg2, ersw ) 
    1305       CALL wrk_dealloc( jpi, jpj, jkmax, jpl, eicen_init ) 
     1304      CALL wrk_dealloc( jpi, jpj, nlay_i+1,      eirft, erdg1, erdg2, ersw ) 
     1305      CALL wrk_dealloc( jpi, jpj, nlay_i+1, jpl, eicen_init ) 
    13061306      ! 
    13071307   END SUBROUTINE lim_itd_me_ridgeshift 
  • branches/2014/dev_CNRS_2014/NEMOGCM/NEMO/LIM_SRC_3/limitd_th.F90

    r4900 r4902  
    66   !! History :   -   !          (W. H. Lipscomb and E.C. Hunke) CICE (c) original code 
    77   !!            3.0  ! 2005-12  (M. Vancoppenolle) adaptation to LIM-3 
    8    !!             -   ! 2006-06  (M. Vancoppenolle) adaptation to include salt, age and types 
     8   !!             -   ! 2006-06  (M. Vancoppenolle) adaptation to include salt, age 
    99   !!             -   ! 2007-04  (M. Vancoppenolle) Mass conservation checked 
    1010   !!---------------------------------------------------------------------- 
     
    6666      INTEGER, INTENT(in) ::   kt   ! time step index 
    6767      ! 
    68       INTEGER ::   ji,jj, jk, jl, ja, jm, jbnd1, jbnd2   ! ice types    dummy loop index          
     68      INTEGER ::   ji, jj, jk, jl   ! dummy loop index          
    6969      ! 
    7070      REAL(wp) :: zvi_b, zsmv_b, zei_b, zfs_b, zfw_b, zft_b  
     
    8686      ! Given thermodynamic growth rates, transport ice between 
    8787      ! thickness categories. 
    88       DO jm = 1, jpm 
    89          jbnd1 = ice_cat_bounds(jm,1) 
    90          jbnd2 = ice_cat_bounds(jm,2) 
    91          IF( ice_ncat_types(jm) > 1 )   CALL lim_itd_th_rem( jbnd1, jbnd2, jm, kt ) 
    92       END DO 
     88      IF( jpl > 1 )   CALL lim_itd_th_rem( 1, jpl, kt ) 
    9389      ! 
    9490      CALL lim_var_glo2eqv    ! only for info 
     
    123119            CALL prt_ctl(tab2d_1=sm_i  (:,:,jl)   , clinfo1= ' lim_itd_th  : sm_i     : ') 
    124120            CALL prt_ctl(tab2d_1=smv_i (:,:,jl)   , clinfo1= ' lim_itd_th  : smv_i    : ') 
    125             DO ja = 1, nlay_i 
     121            DO jk = 1, nlay_i 
    126122               CALL prt_ctl_info(' ') 
    127                CALL prt_ctl_info(' - Layer : ', ivar1=ja) 
     123               CALL prt_ctl_info(' - Layer : ', ivar1=jk) 
    128124               CALL prt_ctl_info('   ~~~~~~~') 
    129                CALL prt_ctl(tab2d_1=t_i(:,:,ja,jl) , clinfo1= ' lim_itd_th  : t_i      : ') 
    130                CALL prt_ctl(tab2d_1=e_i(:,:,ja,jl) , clinfo1= ' lim_itd_th  : e_i      : ') 
     125               CALL prt_ctl(tab2d_1=t_i(:,:,jk,jl) , clinfo1= ' lim_itd_th  : t_i      : ') 
     126               CALL prt_ctl(tab2d_1=e_i(:,:,jk,jl) , clinfo1= ' lim_itd_th  : e_i      : ') 
    131127            END DO 
    132128         END DO 
     
    140136   ! 
    141137 
    142    SUBROUTINE lim_itd_th_rem( klbnd, kubnd, ntyp, kt ) 
     138   SUBROUTINE lim_itd_th_rem( klbnd, kubnd, kt ) 
    143139      !!------------------------------------------------------------------ 
    144140      !!                ***  ROUTINE lim_itd_th_rem *** 
     
    153149      INTEGER , INTENT (in) ::   klbnd   ! Start thickness category index point 
    154150      INTEGER , INTENT (in) ::   kubnd   ! End point on which the  the computation is applied 
    155       INTEGER , INTENT (in) ::   ntyp    ! Number of the type used 
    156151      INTEGER , INTENT (in) ::   kt      ! Ocean time step  
    157152      ! 
     
    171166      REAL(wp), POINTER, DIMENSION(:,:,:) ::   hL          ! left boundary for the ITD for each thickness 
    172167      REAL(wp), POINTER, DIMENSION(:,:,:) ::   hR          ! left boundary for the ITD for each thickness 
    173       REAL(wp), POINTER, DIMENSION(:,:,:) ::   zht_i_o     ! old ice thickness 
     168      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zht_i_b     ! old ice thickness 
    174169      REAL(wp), POINTER, DIMENSION(:,:,:) ::   dummy_es 
    175170      REAL(wp), POINTER, DIMENSION(:,:,:) ::   zdaice, zdvice          ! local increment of ice area and volume 
     
    189184      CALL wrk_alloc( jpi,jpj, zremap_flag )    ! integer 
    190185      CALL wrk_alloc( jpi,jpj,jpl-1, zdonor )   ! integer 
    191       CALL wrk_alloc( jpi,jpj,jpl, zdhice, g0, g1, hL, hR, zht_i_o, dummy_es ) 
     186      CALL wrk_alloc( jpi,jpj,jpl, zdhice, g0, g1, hL, hR, zht_i_b, dummy_es ) 
    192187      CALL wrk_alloc( jpi,jpj,jpl-1, zdaice, zdvice )    
    193188      CALL wrk_alloc( jpi,jpj,jpl+1, zhbnew, kkstart = 0 )    
     
    218213         WRITE(numout,*) ' klbnd :       ', klbnd 
    219214         WRITE(numout,*) ' kubnd :       ', kubnd 
    220          WRITE(numout,*) ' ntyp  :       ', ntyp  
    221215      ENDIF 
    222216 
     
    227221               zindb             = 1.0 - MAX( 0.0, SIGN( 1.0, - a_i(ji,jj,jl) + epsi10 ) )     !0 if no ice and 1 if yes 
    228222               ht_i(ji,jj,jl)    = v_i(ji,jj,jl) / MAX( a_i(ji,jj,jl), epsi10 ) * zindb 
    229                zindb             = 1.0 - MAX( 0.0, SIGN( 1.0, - old_a_i(ji,jj,jl) + epsi10) ) !0 if no ice and 1 if yes 
    230                zht_i_o(ji,jj,jl) = old_v_i(ji,jj,jl) / MAX( old_a_i(ji,jj,jl), epsi10 ) * zindb 
    231                IF( a_i(ji,jj,jl) > epsi10 )   zdhice(ji,jj,jl) = ht_i(ji,jj,jl) - zht_i_o(ji,jj,jl)  
     223               zindb             = 1.0 - MAX( 0.0, SIGN( 1.0, - a_i_b(ji,jj,jl) + epsi10) ) !0 if no ice and 1 if yes 
     224               zht_i_b(ji,jj,jl) = v_i_b(ji,jj,jl) / MAX( a_i_b(ji,jj,jl), epsi10 ) * zindb 
     225               IF( a_i(ji,jj,jl) > epsi10 )   zdhice(ji,jj,jl) = ht_i(ji,jj,jl) - zht_i_b(ji,jj,jl)  
    232226            END DO 
    233227         END DO 
     
    274268            ! 
    275269            zhbnew(ii,ij,jl) = hi_max(jl) 
    276             IF ( old_a_i(ii,ij,jl) > epsi10 .AND. old_a_i(ii,ij,jl+1) > epsi10 ) THEN 
     270            IF ( a_i_b(ii,ij,jl) > epsi10 .AND. a_i_b(ii,ij,jl+1) > epsi10 ) THEN 
    277271               !interpolate between adjacent category growth rates 
    278                zslope           = ( zdhice(ii,ij,jl+1) - zdhice(ii,ij,jl) ) / ( zht_i_o(ii,ij,jl+1) - zht_i_o(ii,ij,jl) ) 
    279                zhbnew(ii,ij,jl) = hi_max(jl) + zdhice(ii,ij,jl) + zslope * ( hi_max(jl) - zht_i_o(ii,ij,jl) ) 
    280             ELSEIF ( old_a_i(ii,ij,jl) > epsi10) THEN 
     272               zslope           = ( zdhice(ii,ij,jl+1) - zdhice(ii,ij,jl) ) / ( zht_i_b(ii,ij,jl+1) - zht_i_b(ii,ij,jl) ) 
     273               zhbnew(ii,ij,jl) = hi_max(jl) + zdhice(ii,ij,jl) + zslope * ( hi_max(jl) - zht_i_b(ii,ij,jl) ) 
     274            ELSEIF ( a_i_b(ii,ij,jl) > epsi10) THEN 
    281275               zhbnew(ii,ij,jl) = hi_max(jl) + zdhice(ii,ij,jl) 
    282             ELSEIF ( old_a_i(ii,ij,jl+1) > epsi10) THEN 
     276            ELSEIF ( a_i_b(ii,ij,jl+1) > epsi10) THEN 
    283277               zhbnew(ii,ij,jl) = hi_max(jl) + zdhice(ii,ij,jl+1) 
    284278            ENDIF 
     
    321315      DO jj = 1, jpj 
    322316         DO ji = 1, jpi 
    323             zhb0(ji,jj) = hi_max_typ(0,ntyp) ! 0eme 
    324             zhb1(ji,jj) = hi_max_typ(1,ntyp) ! 1er 
     317            zhb0(ji,jj) = hi_max(0) ! 0eme 
     318            zhb1(ji,jj) = hi_max(1) ! 1er 
    325319 
    326320            zhbnew(ji,jj,klbnd-1) = 0._wp 
     
    343337      !----------------------------------------------------------------------------------------------- 
    344338      !- 7.1 g(h) for category 1 at start of time step 
    345       CALL lim_itd_fitline( klbnd, zhb0, zhb1, zht_i_o(:,:,klbnd),         & 
     339      CALL lim_itd_fitline( klbnd, zhb0, zhb1, zht_i_b(:,:,klbnd),         & 
    346340         &                  g0(:,:,klbnd), g1(:,:,klbnd), hL(:,:,klbnd),   & 
    347341         &                  hR(:,:,klbnd), zremap_flag ) 
     
    368362                  ! Constrain new thickness <= ht_i 
    369363                  zdamax = a_i(ii,ij,klbnd) * &  
    370                      (1.0 - ht_i(ii,ij,klbnd)/zht_i_o(ii,ij,klbnd)) ! zdamax > 0 
     364                     (1.0 - ht_i(ii,ij,klbnd)/zht_i_b(ii,ij,klbnd)) ! zdamax > 0 
    371365                  !ice area lost due to melting of thin ice 
    372366                  zda0   = MIN(zda0, zdamax) 
     
    382376            ELSE ! if ice accretion 
    383377               ! ji, a_i > epsi10; zdh0 > 0 
    384                IF ( ntyp .EQ. 1 ) zhbnew(ii,ij,klbnd-1) = MIN(zdh0,hi_max(klbnd))  
     378               zhbnew(ii,ij,klbnd-1) = MIN(zdh0,hi_max(klbnd))  
    385379               ! zhbnew was 0, and is shifted to the right to account for thin ice 
    386380               ! growth in openwater (F0 = f1) 
    387                IF ( ntyp .NE. 1 ) zhbnew(ii,ij,0) = 0  
    388                ! in other types there is 
    389                ! no open water growth (F0 = 0) 
    390381            ENDIF ! zdh0  
    391382 
     
    493484      CALL wrk_dealloc( jpi,jpj, zremap_flag )    ! integer 
    494485      CALL wrk_dealloc( jpi,jpj,jpl-1, zdonor )   ! integer 
    495       CALL wrk_dealloc( jpi,jpj,jpl, zdhice, g0, g1, hL, hR, zht_i_o, dummy_es ) 
     486      CALL wrk_dealloc( jpi,jpj,jpl, zdhice, g0, g1, hL, hR, zht_i_b, dummy_es ) 
    496487      CALL wrk_dealloc( jpi,jpj,jpl-1, zdaice, zdvice )    
    497488      CALL wrk_dealloc( jpi,jpj,jpl+1, zhbnew, kkstart = 0 )    
     
    839830    
    840831 
    841    SUBROUTINE lim_itd_th_reb( klbnd, kubnd, ntyp ) 
     832   SUBROUTINE lim_itd_th_reb( klbnd, kubnd ) 
    842833      !!------------------------------------------------------------------ 
    843834      !!                ***  ROUTINE lim_itd_th_reb *** 
     
    849840      INTEGER , INTENT (in) ::   klbnd   ! Start thickness category index point 
    850841      INTEGER , INTENT (in) ::   kubnd   ! End point on which the  the computation is applied 
    851       INTEGER , INTENT (in) ::   ntyp    ! number of the ice type involved in the rebinning process 
    852842      ! 
    853843      INTEGER ::   ji,jj, jl   ! dummy loop indices 
     
    889879 
    890880      !------------------------------------------------------------------------------ 
    891       ! 2) Make sure thickness of cat klbnd is at least hi_max_typ(klbnd) 
     881      ! 2) Make sure thickness of cat klbnd is at least hi_max(klbnd) 
    892882      !------------------------------------------------------------------------------ 
    893883      DO jj = 1, jpj  
    894884         DO ji = 1, jpi  
    895885            IF( a_i(ji,jj,klbnd) > epsi10 ) THEN 
    896                IF( ht_i(ji,jj,klbnd) <= hi_max_typ(0,ntyp) .AND. hi_max_typ(0,ntyp) > 0._wp ) THEN 
    897                   a_i(ji,jj,klbnd)  = v_i(ji,jj,klbnd) / hi_max_typ(0,ntyp)  
    898                   ht_i(ji,jj,klbnd) = hi_max_typ(0,ntyp) 
     886               IF( ht_i(ji,jj,klbnd) <= hi_max(0) .AND. hi_max(0) > 0._wp ) THEN 
     887                  a_i(ji,jj,klbnd)  = v_i(ji,jj,klbnd) / hi_max(0)  
     888                  ht_i(ji,jj,klbnd) = hi_max(0) 
    899889               ENDIF 
    900890            ENDIF 
  • branches/2014/dev_CNRS_2014/NEMOGCM/NEMO/LIM_SRC_3/limsbc.F90

    r4901 r4902  
    118118      CALL iom_put( "qsr_oce" , qsr(:,:) * pfrld(:,:) )   !     solar flux at ocean surface 
    119119      CALL iom_put( "qns_oce" , qns(:,:) * pfrld(:,:) )   ! non-solar flux at ocean surface 
    120       CALL iom_put( "qsr_ice" , SUM( qsr_ice(:,:,:) * old_a_i(:,:,:), dim=3 ) )  !     solar flux at ice surface 
    121       CALL iom_put( "qns_ice" , SUM( qns_ice(:,:,:) * old_a_i(:,:,:), dim=3 ) )  ! non-solar flux at ice surface 
    122       CALL iom_put( "qtr_ice" , SUM( ftr_ice(:,:,:) * old_a_i(:,:,:), dim=3 ) )  !     solar flux transmitted thru ice 
     120      CALL iom_put( "qsr_ice" , SUM( qsr_ice(:,:,:) * a_i_b(:,:,:), dim=3 ) )  !     solar flux at ice surface 
     121      CALL iom_put( "qns_ice" , SUM( qns_ice(:,:,:) * a_i_b(:,:,:), dim=3 ) )  ! non-solar flux at ice surface 
     122      CALL iom_put( "qtr_ice" , SUM( ftr_ice(:,:,:) * a_i_b(:,:,:), dim=3 ) )  !     solar flux transmitted thru ice 
    123123      CALL iom_put( "qt_oce"  , ( qsr(:,:) + qns(:,:) ) * pfrld(:,:) )   
    124       CALL iom_put( "qt_ice"  , SUM( ( qns_ice(:,:,:) + qsr_ice(:,:,:) ) * old_a_i(:,:,:), dim=3 ) ) 
     124      CALL iom_put( "qt_ice"  , SUM( ( qns_ice(:,:,:) + qsr_ice(:,:,:) ) * a_i_b(:,:,:), dim=3 ) ) 
    125125 
    126126      ! pfrld is the lead fraction at the previous time step (actually between TRP and THD) 
     
    139139               zfcm1 = qsr_tot(ji,jj) 
    140140               DO jl = 1, jpl 
    141                   zfcm1 = zfcm1 + ( ftr_ice(ji,jj,jl) - qsr_ice(ji,jj,jl) ) * old_a_i(ji,jj,jl) 
     141                  zfcm1 = zfcm1 + ( ftr_ice(ji,jj,jl) - qsr_ice(ji,jj,jl) ) * a_i_b(ji,jj,jl) 
    142142               END DO 
    143143            ELSE 
     
    145145               zfcm1   = pfrld(ji,jj) * qsr(ji,jj) 
    146146               DO jl = 1, jpl 
    147                   zfcm1   = zfcm1 + old_a_i(ji,jj,jl) * ftr_ice(ji,jj,jl) 
     147                  zfcm1   = zfcm1 + a_i_b(ji,jj,jl) * ftr_ice(ji,jj,jl) 
    148148               END DO 
    149149            ENDIF 
     
    181181 
    182182            ! mass flux from ice/ocean 
    183             wfx_ice(ji,jj) = wfx_bog(ji,jj) + wfx_bom(ji,jj) + wfx_sum(ji,jj) + wfx_sni(ji,jj) + wfx_opw(ji,jj) + wfx_dyn(ji,jj) + wfx_res(ji,jj) 
     183            wfx_ice(ji,jj) = wfx_bog(ji,jj) + wfx_bom(ji,jj) + wfx_sum(ji,jj) + wfx_sni(ji,jj)   & 
     184                           + wfx_opw(ji,jj) + wfx_dyn(ji,jj) + wfx_res(ji,jj) 
    184185 
    185186            ! mass flux at the ocean/ice interface 
    186187            fmmflx(ji,jj) = - wfx_ice(ji,jj) * rdt_ice                   ! F/M mass flux save at least for biogeochemical model 
    187             emp(ji,jj)    = zemp - wfx_ice(ji,jj) - wfx_snw(ji,jj) - wfx_sub(ji,jj)   ! mass flux + F/M mass flux (always ice/ocean mass exchange) 
     188            emp(ji,jj)    = zemp - wfx_ice(ji,jj) - wfx_snw(ji,jj)       ! mass flux + F/M mass flux (always ice/ocean mass exchange) 
    188189             
    189190         END DO 
     
    193194      !      salt flux at the ocean surface      ! 
    194195      !------------------------------------------! 
    195       sfx(:,:) = sfx_bog(:,:) + sfx_bom(:,:) + sfx_sum(:,:) + sfx_sni(:,:) + sfx_opw(:,:) + sfx_res(:,:) + sfx_dyn(:,:) + sfx_bri(:,:) 
     196      sfx(:,:) = sfx_bog(:,:) + sfx_bom(:,:) + sfx_sum(:,:) + sfx_sni(:,:) + sfx_opw(:,:)   & 
     197         &     + sfx_res(:,:) + sfx_dyn(:,:) + sfx_bri(:,:) 
    196198 
    197199      !-------------------------------------------------------------! 
  • branches/2014/dev_CNRS_2014/NEMOGCM/NEMO/LIM_SRC_3/limthd.F90

    r4901 r4902  
    2222   USE phycst         ! physical constants 
    2323   USE dom_oce        ! ocean space and time domain variables 
    24    USE oce     , ONLY : fraqsr_1lev 
     24   USE oce     , ONLY : fraqsr_1lev  
    2525   USE ice            ! LIM: sea-ice variables 
    2626   USE par_ice        ! LIM: sea-ice parameters 
     
    153153            DO jj = 1, jpj 
    154154               DO ji = 1, jpi 
    155                   zqsr(ji,jj) = zqsr(ji,jj) - qsr_ice(ji,jj,jl) * old_a_i(ji,jj,jl) 
    156                   zqns(ji,jj) = zqns(ji,jj) - qns_ice(ji,jj,jl) * old_a_i(ji,jj,jl) 
     155                  zqsr(ji,jj) = zqsr(ji,jj) - qsr_ice(ji,jj,jl) * a_i_b(ji,jj,jl) 
     156                  zqns(ji,jj) = zqns(ji,jj) - qns_ice(ji,jj,jl) * a_i_b(ji,jj,jl) 
    157157               END DO 
    158158            END DO 
     
    282282            !------------------------- 
    283283 
    284             CALL tab_2d_1d( nbpb, at_i_b     (1:nbpb), at_i            , jpi, jpj, npb(1:nbpb) ) 
    285             CALL tab_2d_1d( nbpb, a_i_b      (1:nbpb), a_i(:,:,jl)     , jpi, jpj, npb(1:nbpb) ) 
    286             CALL tab_2d_1d( nbpb, ht_i_b     (1:nbpb), ht_i(:,:,jl)    , jpi, jpj, npb(1:nbpb) ) 
    287             CALL tab_2d_1d( nbpb, ht_s_b     (1:nbpb), ht_s(:,:,jl)    , jpi, jpj, npb(1:nbpb) ) 
    288  
    289             CALL tab_2d_1d( nbpb, t_su_b     (1:nbpb), t_su(:,:,jl)    , jpi, jpj, npb(1:nbpb) ) 
    290             CALL tab_2d_1d( nbpb, sm_i_b     (1:nbpb), sm_i(:,:,jl)    , jpi, jpj, npb(1:nbpb) ) 
     284            CALL tab_2d_1d( nbpb, at_i_1d     (1:nbpb), at_i            , jpi, jpj, npb(1:nbpb) ) 
     285            CALL tab_2d_1d( nbpb, a_i_1d      (1:nbpb), a_i(:,:,jl)     , jpi, jpj, npb(1:nbpb) ) 
     286            CALL tab_2d_1d( nbpb, ht_i_1d     (1:nbpb), ht_i(:,:,jl)    , jpi, jpj, npb(1:nbpb) ) 
     287            CALL tab_2d_1d( nbpb, ht_s_1d     (1:nbpb), ht_s(:,:,jl)    , jpi, jpj, npb(1:nbpb) ) 
     288 
     289            CALL tab_2d_1d( nbpb, t_su_1d     (1:nbpb), t_su(:,:,jl)    , jpi, jpj, npb(1:nbpb) ) 
     290            CALL tab_2d_1d( nbpb, sm_i_1d     (1:nbpb), sm_i(:,:,jl)    , jpi, jpj, npb(1:nbpb) ) 
    291291            DO jk = 1, nlay_s 
    292                CALL tab_2d_1d( nbpb, t_s_b(1:nbpb,jk), t_s(:,:,jk,jl)  , jpi, jpj, npb(1:nbpb) ) 
    293                CALL tab_2d_1d( nbpb, q_s_b(1:nbpb,jk), e_s(:,:,jk,jl)  , jpi, jpj, npb(1:nbpb) ) 
     292               CALL tab_2d_1d( nbpb, t_s_1d(1:nbpb,jk), t_s(:,:,jk,jl)  , jpi, jpj, npb(1:nbpb) ) 
     293               CALL tab_2d_1d( nbpb, q_s_1d(1:nbpb,jk), e_s(:,:,jk,jl)  , jpi, jpj, npb(1:nbpb) ) 
    294294            END DO 
    295295            DO jk = 1, nlay_i 
    296                CALL tab_2d_1d( nbpb, t_i_b(1:nbpb,jk), t_i(:,:,jk,jl)  , jpi, jpj, npb(1:nbpb) ) 
    297                CALL tab_2d_1d( nbpb, q_i_b(1:nbpb,jk), e_i(:,:,jk,jl)  , jpi, jpj, npb(1:nbpb) ) 
    298                CALL tab_2d_1d( nbpb, s_i_b(1:nbpb,jk), s_i(:,:,jk,jl)  , jpi, jpj, npb(1:nbpb) ) 
     296               CALL tab_2d_1d( nbpb, t_i_1d(1:nbpb,jk), t_i(:,:,jk,jl)  , jpi, jpj, npb(1:nbpb) ) 
     297               CALL tab_2d_1d( nbpb, q_i_1d(1:nbpb,jk), e_i(:,:,jk,jl)  , jpi, jpj, npb(1:nbpb) ) 
     298               CALL tab_2d_1d( nbpb, s_i_1d(1:nbpb,jk), s_i(:,:,jk,jl)  , jpi, jpj, npb(1:nbpb) ) 
    299299            END DO 
    300300 
     
    310310            ENDIF 
    311311            CALL tab_2d_1d( nbpb, dqns_ice_1d(1:nbpb), dqns_ice(:,:,jl), jpi, jpj, npb(1:nbpb) ) 
    312             CALL tab_2d_1d( nbpb, t_bo_b     (1:nbpb), t_bo            , jpi, jpj, npb(1:nbpb) ) 
     312            CALL tab_2d_1d( nbpb, t_bo_1d     (1:nbpb), t_bo            , jpi, jpj, npb(1:nbpb) ) 
    313313            CALL tab_2d_1d( nbpb, sprecip_1d (1:nbpb), sprecip         , jpi, jpj, npb(1:nbpb) )  
    314314            CALL tab_2d_1d( nbpb, fhtur_1d   (1:nbpb), fhtur           , jpi, jpj, npb(1:nbpb) ) 
     
    361361 
    362362            ! --- Ice enthalpy remapping --- ! 
    363             CALL lim_thd_ent( 1, nbpb, q_i_b(1:nbpb,:) )  
     363            CALL lim_thd_ent( 1, nbpb, q_i_1d(1:nbpb,:) )  
    364364                                             
    365365            !---------------------------------! 
     
    377377            !-------------------------------- 
    378378 
    379                CALL tab_1d_2d( nbpb, at_i          , npb, at_i_b    (1:nbpb)   , jpi, jpj ) 
    380                CALL tab_1d_2d( nbpb, ht_i(:,:,jl)  , npb, ht_i_b    (1:nbpb)   , jpi, jpj ) 
    381                CALL tab_1d_2d( nbpb, ht_s(:,:,jl)  , npb, ht_s_b    (1:nbpb)   , jpi, jpj ) 
    382                CALL tab_1d_2d( nbpb, a_i (:,:,jl)  , npb, a_i_b     (1:nbpb)   , jpi, jpj ) 
    383                CALL tab_1d_2d( nbpb, t_su(:,:,jl)  , npb, t_su_b    (1:nbpb)   , jpi, jpj ) 
    384                CALL tab_1d_2d( nbpb, sm_i(:,:,jl)  , npb, sm_i_b    (1:nbpb)   , jpi, jpj ) 
     379               CALL tab_1d_2d( nbpb, at_i          , npb, at_i_1d    (1:nbpb)   , jpi, jpj ) 
     380               CALL tab_1d_2d( nbpb, ht_i(:,:,jl)  , npb, ht_i_1d    (1:nbpb)   , jpi, jpj ) 
     381               CALL tab_1d_2d( nbpb, ht_s(:,:,jl)  , npb, ht_s_1d    (1:nbpb)   , jpi, jpj ) 
     382               CALL tab_1d_2d( nbpb, a_i (:,:,jl)  , npb, a_i_1d     (1:nbpb)   , jpi, jpj ) 
     383               CALL tab_1d_2d( nbpb, t_su(:,:,jl)  , npb, t_su_1d    (1:nbpb)   , jpi, jpj ) 
     384               CALL tab_1d_2d( nbpb, sm_i(:,:,jl)  , npb, sm_i_1d    (1:nbpb)   , jpi, jpj ) 
    385385            DO jk = 1, nlay_s 
    386                CALL tab_1d_2d( nbpb, t_s(:,:,jk,jl), npb, t_s_b     (1:nbpb,jk), jpi, jpj) 
    387                CALL tab_1d_2d( nbpb, e_s(:,:,jk,jl), npb, q_s_b     (1:nbpb,jk), jpi, jpj) 
     386               CALL tab_1d_2d( nbpb, t_s(:,:,jk,jl), npb, t_s_1d     (1:nbpb,jk), jpi, jpj) 
     387               CALL tab_1d_2d( nbpb, e_s(:,:,jk,jl), npb, q_s_1d     (1:nbpb,jk), jpi, jpj) 
    388388            END DO 
    389389            DO jk = 1, nlay_i 
    390                CALL tab_1d_2d( nbpb, t_i(:,:,jk,jl), npb, t_i_b     (1:nbpb,jk), jpi, jpj) 
    391                CALL tab_1d_2d( nbpb, e_i(:,:,jk,jl), npb, q_i_b     (1:nbpb,jk), jpi, jpj) 
    392                CALL tab_1d_2d( nbpb, s_i(:,:,jk,jl), npb, s_i_b     (1:nbpb,jk), jpi, jpj) 
     390               CALL tab_1d_2d( nbpb, t_i(:,:,jk,jl), npb, t_i_1d     (1:nbpb,jk), jpi, jpj) 
     391               CALL tab_1d_2d( nbpb, e_i(:,:,jk,jl), npb, q_i_1d     (1:nbpb,jk), jpi, jpj) 
     392               CALL tab_1d_2d( nbpb, s_i(:,:,jk,jl), npb, s_i_1d     (1:nbpb,jk), jpi, jpj) 
    393393            END DO 
    394394               CALL tab_1d_2d( nbpb, qlead         , npb, qlead_1d  (1:nbpb)   , jpi, jpj ) 
     
    532532      DO jk = 1, nlay_i 
    533533         DO ji = kideb, kiut 
    534             ztmelts       =  -tmut * s_i_b(ji,jk) + rtt 
     534            ztmelts       =  -tmut * s_i_1d(ji,jk) + rtt 
    535535            ! Conversion q(S,T) -> T (second order equation) 
    536536            zaaa          =  cpic 
    537             zbbb          =  ( rcp - cpic ) * ( ztmelts - rtt ) + q_i_b(ji,jk) / rhoic - lfus 
     537            zbbb          =  ( rcp - cpic ) * ( ztmelts - rtt ) + q_i_1d(ji,jk) / rhoic - lfus 
    538538            zccc          =  lfus * ( ztmelts - rtt ) 
    539539            zdiscrim      =  SQRT( MAX( zbbb * zbbb - 4._wp * zaaa * zccc, 0._wp ) ) 
    540             t_i_b(ji,jk)  =  rtt - ( zbbb + zdiscrim ) / ( 2._wp * zaaa ) 
     540            t_i_1d(ji,jk)  =  rtt - ( zbbb + zdiscrim ) / ( 2._wp * zaaa ) 
    541541             
    542542            ! mask temperature 
    543             zswitch      =  1._wp - MAX( 0._wp , SIGN( 1._wp , - ht_i_b(ji) ) )  
    544             t_i_b(ji,jk) =  zswitch * t_i_b(ji,jk) + ( 1._wp - zswitch ) * rtt 
     543            zswitch      =  1._wp - MAX( 0._wp , SIGN( 1._wp , - ht_i_1d(ji) ) )  
     544            t_i_1d(ji,jk) =  zswitch * t_i_1d(ji,jk) + ( 1._wp - zswitch ) * rtt 
    545545         END DO  
    546546      END DO  
  • branches/2014/dev_CNRS_2014/NEMOGCM/NEMO/LIM_SRC_3/limthd_dh.F90

    r4901 r4902  
    129129      CALL wrk_alloc( jpij, zdh_s_mel, zdh_s_pre, zdh_s_sub, zqh_i, zqh_s, zq_s ) 
    130130      CALL wrk_alloc( jpij, zintermelt ) 
    131       CALL wrk_alloc( jpij, jkmax, zdeltah, zh_i ) 
     131      CALL wrk_alloc( jpij, nlay_i+1, zdeltah, zh_i ) 
    132132      CALL wrk_alloc( jpij, icount ) 
    133133       
     
    155155      DO jk = 1, nlay_i 
    156156         DO ji = kideb, kiut 
    157             h_i_old (ji,jk) = ht_i_b(ji) / REAL( nlay_i ) 
    158             qh_i_old(ji,jk) = q_i_b(ji,jk) * h_i_old(ji,jk) 
     157            h_i_old (ji,jk) = ht_i_1d(ji) / REAL( nlay_i ) 
     158            qh_i_old(ji,jk) = q_i_1d(ji,jk) * h_i_old(ji,jk) 
    159159         ENDDO 
    160160      ENDDO 
     
    165165      ! 
    166166      DO ji = kideb, kiut 
    167          zinda      = 1._wp - MAX(  0._wp , SIGN( 1._wp , - ht_s_b(ji) ) ) 
    168          ztmelts    = zinda * rtt + ( 1._wp - zinda ) * rtt 
     167         zinda         = 1._wp - MAX(  0._wp , SIGN( 1._wp , - ht_s_1d(ji) ) ) 
     168         ztmelts       = zinda * rtt + ( 1._wp - zinda ) * rtt 
    169169 
    170170         zfdum      = qns_ice_1d(ji) + ( 1._wp - i0(ji) ) * qsr_ice_1d(ji) - fc_su(ji)  
    171171         zf_tt(ji)  = fc_bo_i(ji) + fhtur_1d(ji) + fhld_1d(ji)  
    172172 
    173          zq_su (ji) = MAX( 0._wp, zfdum     * rdt_ice ) * MAX( 0._wp , SIGN( 1._wp, t_su_b(ji) - ztmelts ) ) 
     173         zq_su (ji) = MAX( 0._wp, zfdum     * rdt_ice ) * MAX( 0._wp , SIGN( 1._wp, t_su_1d(ji) - ztmelts ) ) 
    174174         zq_bo (ji) = MAX( 0._wp, zf_tt(ji) * rdt_ice ) 
    175175      END DO 
     
    181181      !------------------------------------------------------------------------------! 
    182182      DO ji = kideb, kiut 
    183          IF( t_s_b(ji,1) > rtt ) THEN !!! Internal melting 
     183         IF( t_s_1d(ji,1) > rtt ) THEN !!! Internal melting 
    184184            ! Contribution to heat flux to the ocean [W.m-2], < 0   
    185             hfx_res_1d(ji) = hfx_res_1d(ji) + q_s_b(ji,1) * ht_s_b(ji) * a_i_b(ji) * r1_rdtice 
     185            hfx_res_1d(ji) = hfx_res_1d(ji) + q_s_1d(ji,1) * ht_s_1d(ji) * a_i_1d(ji) * r1_rdtice 
    186186            ! Contribution to mass flux 
    187             wfx_snw_1d(ji) = wfx_snw_1d(ji) + rhosn * ht_s_b(ji) * a_i_b(ji) * r1_rdtice 
     187            wfx_snw_1d(ji) = wfx_snw_1d(ji) + rhosn * ht_s_1d(ji) * a_i_1d(ji) * r1_rdtice 
    188188            ! updates 
    189             ht_s_b(ji)   = 0._wp 
    190             q_s_b (ji,1) = 0._wp 
    191             t_s_b (ji,1) = rtt 
     189            ht_s_1d(ji)   = 0._wp 
     190            q_s_1d (ji,1) = 0._wp 
     191            t_s_1d (ji,1) = rtt 
    192192         END IF 
    193193      END DO 
     
    198198      ! 
    199199      DO ji = kideb, kiut      
    200          zh_s(ji) = ht_s_b(ji) / REAL( nlay_s ) 
     200         zh_s(ji) = ht_s_1d(ji) / REAL( nlay_s ) 
    201201      END DO 
    202202      ! 
    203203      DO jk = 1, nlay_s 
    204204         DO ji = kideb, kiut 
    205             zqh_s(ji) =  zqh_s(ji) + q_s_b(ji,jk) * zh_s(ji) 
     205            zqh_s(ji) =  zqh_s(ji) + q_s_1d(ji,jk) * zh_s(ji) 
    206206         END DO 
    207207      END DO 
     
    209209      DO jk = 1, nlay_i 
    210210         DO ji = kideb, kiut 
    211             zh_i(ji,jk) = ht_i_b(ji) / REAL( nlay_i ) 
    212             zqh_i(ji)   = zqh_i(ji) + q_i_b(ji,jk) * zh_i(ji,jk) 
     211            zh_i(ji,jk) = ht_i_1d(ji) / REAL( nlay_i ) 
     212            zqh_i(ji)   = zqh_i(ji) + q_i_1d(ji,jk) * zh_i(ji,jk) 
    213213         END DO 
    214214      END DO 
     
    237237         !----------- 
    238238         ! thickness change 
    239          zcoeff = ( 1._wp - ( 1._wp - at_i_b(ji) )**betas ) / at_i_b(ji)  
     239         zcoeff = ( 1._wp - ( 1._wp - at_i_1d(ji) )**betas ) / at_i_1d(ji)  
    240240         zdh_s_pre(ji) = zcoeff * sprecip_1d(ji) * rdt_ice / rhosn 
    241241         ! enthalpy of the precip (>0, J.m-3) (tatm_ice is now in K) 
     
    243243         IF( sprecip_1d(ji) == 0._wp ) zqprec(ji) = 0._wp 
    244244         ! heat flux from snow precip (>0, W.m-2) 
    245          hfx_spr_1d(ji) = hfx_spr_1d(ji) + zdh_s_pre(ji) * a_i_b(ji) * zqprec(ji) * r1_rdtice 
     245         hfx_spr_1d(ji) = hfx_spr_1d(ji) + zdh_s_pre(ji) * a_i_1d(ji) * zqprec(ji) * r1_rdtice 
    246246         ! mass flux, <0 
    247          wfx_spr_1d(ji) = wfx_spr_1d(ji) - rhosn * a_i_b(ji) * zdh_s_pre(ji) * r1_rdtice 
     247         wfx_spr_1d(ji) = wfx_spr_1d(ji) - rhosn * a_i_1d(ji) * zdh_s_pre(ji) * r1_rdtice 
    248248         ! update thickness 
    249          ht_s_b    (ji) = MAX( 0._wp , ht_s_b(ji) + zdh_s_pre(ji) ) 
     249         ht_s_1d    (ji) = MAX( 0._wp , ht_s_1d(ji) + zdh_s_pre(ji) ) 
    250250 
    251251         !--------------------- 
     
    258258         zdh_s_mel (ji) = MAX( - zdh_s_pre(ji), zdh_s_mel(ji) ) ! bound melting  
    259259         ! heat used to melt snow (W.m-2, >0) 
    260          hfx_snw_1d(ji) = hfx_snw_1d(ji) - zdh_s_mel(ji) * a_i_b(ji) * zqprec(ji) * r1_rdtice 
     260         hfx_snw_1d(ji) = hfx_snw_1d(ji) - zdh_s_mel(ji) * a_i_1d(ji) * zqprec(ji) * r1_rdtice 
    261261         ! snow melting only = water into the ocean (then without snow precip), >0 
    262          wfx_snw_1d(ji) = wfx_snw_1d(ji) - rhosn * a_i_b(ji) * zdh_s_mel(ji) * r1_rdtice 
     262         wfx_snw_1d(ji) = wfx_snw_1d(ji) - rhosn * a_i_1d(ji) * zdh_s_mel(ji) * r1_rdtice 
    263263          
    264264         ! updates available heat + thickness 
    265265         zq_su (ji) = MAX( 0._wp , zq_su (ji) + zdh_s_mel(ji) * zqprec(ji) )       
    266          ht_s_b(ji) = MAX( 0._wp , ht_s_b(ji) + zdh_s_mel(ji) ) 
    267          zh_s  (ji) = ht_s_b(ji) / REAL( nlay_s ) 
     266         ht_s_1d(ji) = MAX( 0._wp , ht_s_1d(ji) + zdh_s_mel(ji) ) 
     267         zh_s  (ji) = ht_s_1d(ji) / REAL( nlay_s ) 
    268268 
    269269         ENDIF 
     
    275275         DO ji = kideb, kiut 
    276276            ! thickness change 
    277             zindh            = 1._wp - MAX( 0._wp, SIGN( 1._wp, - ht_s_b(ji) ) )  
    278             zindq            = 1._wp - MAX( 0._wp, SIGN( 1._wp, - q_s_b(ji,jk) + epsi20 ) )  
    279             zdeltah  (ji,jk) = - zindh * zindq * zq_su(ji) / MAX( q_s_b(ji,jk), epsi20 ) 
     277            zindh            = 1._wp - MAX( 0._wp, SIGN( 1._wp, - ht_s_1d(ji) ) )  
     278            zindq            = 1._wp - MAX( 0._wp, SIGN( 1._wp, - q_s_1d(ji,jk) + epsi20 ) )  
     279            zdeltah  (ji,jk) = - zindh * zindq * zq_su(ji) / MAX( q_s_1d(ji,jk), epsi20 ) 
    280280            zdeltah  (ji,jk) = MAX( zdeltah(ji,jk) , - zh_s(ji) ) ! bound melting 
    281281            zdh_s_mel(ji)    = zdh_s_mel(ji) + zdeltah(ji,jk)     
    282282            ! heat used to melt snow(W.m-2, >0) 
    283             hfx_snw_1d(ji)   = hfx_snw_1d(ji) - zdeltah(ji,jk) * a_i_b(ji) * q_s_b(ji,jk) * r1_rdtice  
     283            hfx_snw_1d(ji)   = hfx_snw_1d(ji) - zdeltah(ji,jk) * a_i_1d(ji) * q_s_1d(ji,jk) * r1_rdtice  
    284284            ! snow melting only = water into the ocean (then without snow precip) 
    285             wfx_snw_1d(ji)   = wfx_snw_1d(ji) - rhosn * a_i_b(ji) * zdeltah(ji,jk) * r1_rdtice 
     285            wfx_snw_1d(ji)   = wfx_snw_1d(ji) - rhosn * a_i_1d(ji) * zdeltah(ji,jk) * r1_rdtice 
    286286 
    287287            ! updates available heat + thickness 
    288             zq_su (ji) = MAX( 0._wp , zq_su (ji) + zdeltah(ji,jk) * q_s_b(ji,jk) ) 
    289             ht_s_b(ji) = MAX( 0._wp , ht_s_b(ji) + zdeltah(ji,jk) ) 
     288            zq_su (ji) = MAX( 0._wp , zq_su (ji) + zdeltah(ji,jk) * q_s_1d(ji,jk) ) 
     289            ht_s_1d(ji) = MAX( 0._wp , ht_s_1d(ji) + zdeltah(ji,jk) ) 
    290290 
    291291         END DO 
     
    304304         ! forced  mode: snow thickness change due to sublimation 
    305305         DO ji = kideb, kiut 
    306             zdh_s_sub(ji)  =  MAX( - ht_s_b(ji) , - parsub * qla_ice_1d(ji) / ( rhosn * lsub ) * rdt_ice ) 
     306            zdh_s_sub(ji)  =  MAX( - ht_s_1d(ji) , - parsub * qla_ice_1d(ji) / ( rhosn * lsub ) * rdt_ice ) 
    307307            ! Heat flux by sublimation [W.m-2], < 0 
    308308            !      sublimate first snow that had fallen, then pre-existing snow 
    309309            zcoeff         =      ( MAX( zdh_s_sub(ji), - MAX( 0._wp, zdh_s_pre(ji) + zdh_s_mel(ji) ) )   * zqprec(ji) +   & 
    310                &  ( zdh_s_sub(ji) - MAX( zdh_s_sub(ji), - MAX( 0._wp, zdh_s_pre(ji) + zdh_s_mel(ji) ) ) ) * q_s_b(ji,1) )  & 
    311                &  * a_i_b(ji) * r1_rdtice 
     310               &  ( zdh_s_sub(ji) - MAX( zdh_s_sub(ji), - MAX( 0._wp, zdh_s_pre(ji) + zdh_s_mel(ji) ) ) ) * q_s_1d(ji,1) )  & 
     311               &  * a_i_1d(ji) * r1_rdtice 
    312312            hfx_sub_1d(ji) = hfx_sub_1d(ji) + zcoeff 
    313313            ! Mass flux by sublimation 
    314             wfx_sub_1d(ji) =  wfx_sub_1d(ji) - rhosn * a_i_b(ji) * zdh_s_sub(ji) * r1_rdtice 
     314            wfx_sub_1d(ji) =  wfx_sub_1d(ji) - rhosn * a_i_1d(ji) * zdh_s_sub(ji) * r1_rdtice 
    315315            ! new snow thickness 
    316             ht_s_b(ji)     =  MAX( 0._wp , ht_s_b(ji) + zdh_s_sub(ji) ) 
     316            ht_s_1d(ji)     =  MAX( 0._wp , ht_s_1d(ji) + zdh_s_sub(ji) ) 
    317317         END DO 
    318318      ENDIF 
     
    321321      DO ji = kideb, kiut 
    322322         dh_s_tot(ji)   = zdh_s_mel(ji) + zdh_s_pre(ji) + zdh_s_sub(ji) 
    323          zh_s(ji)       = ht_s_b(ji) / REAL( nlay_s ) 
     323         zh_s(ji)       = ht_s_1d(ji) / REAL( nlay_s ) 
    324324      END DO ! ji 
    325325 
     
    331331      DO jk = 1, nlay_s 
    332332         DO ji = kideb,kiut 
    333             zindh  =  MAX(  0._wp , SIGN( 1._wp, - ht_s_b(ji) + epsi20 )  ) 
    334             q_s_b(ji,jk) = ( 1._wp - zindh ) / MAX( ht_s_b(ji), epsi20 ) *             & 
     333            zindh  =  MAX(  0._wp , SIGN( 1._wp, - ht_s_1d(ji) + epsi20 )  ) 
     334            q_s_1d(ji,jk) = ( 1._wp - zindh ) / MAX( ht_s_1d(ji), epsi20 ) *             & 
    335335              &            ( (   MAX( 0._wp, dh_s_tot(ji) )              ) * zqprec(ji) +  & 
    336               &              ( - MAX( 0._wp, dh_s_tot(ji) ) + ht_s_b(ji) ) * rhosn * ( cpic * ( rtt - t_s_b(ji,jk) ) + lfus ) ) 
    337             zq_s(ji)     =  zq_s(ji) + q_s_b(ji,jk) 
     336              &              ( - MAX( 0._wp, dh_s_tot(ji) ) + ht_s_1d(ji) ) * rhosn * ( cpic * ( rtt - t_s_1d(ji,jk) ) + lfus ) ) 
     337            zq_s(ji)     =  zq_s(ji) + q_s_1d(ji,jk) 
    338338         END DO 
    339339      END DO 
     
    345345      DO jk = 1, nlay_i 
    346346         DO ji = kideb, kiut  
    347             zEi            = - q_i_b(ji,jk) / rhoic                ! Specific enthalpy of layer k [J/kg, <0] 
    348  
    349             ztmelts        = - tmut * s_i_b(ji,jk) + rtt           ! Melting point of layer k [K] 
     347            zEi            = - q_i_1d(ji,jk) / rhoic                ! Specific enthalpy of layer k [J/kg, <0] 
     348 
     349            ztmelts        = - tmut * s_i_1d(ji,jk) + rtt           ! Melting point of layer k [K] 
    350350 
    351351            zEw            =    rcp * ( ztmelts - rt0 )            ! Specific enthalpy of resulting meltwater [J/kg, <0] 
     
    367367            zQm            = zfmdt * zEw                           ! Energy of the melt water sent to the ocean [J/m2, <0] 
    368368 
    369             ! Contribution to salt flux (clem: using sm_i_b and not s_i_b(jk) is ok) 
    370             sfx_sum_1d(ji)   = sfx_sum_1d(ji) - sm_i_b(ji) * a_i_b(ji) * zdeltah(ji,jk) * rhoic * r1_rdtice 
     369            ! Contribution to salt flux (clem: using sm_i_1d and not s_i_1d(jk) is ok) 
     370            sfx_sum_1d(ji)   = sfx_sum_1d(ji) - sm_i_1d(ji) * a_i_1d(ji) * zdeltah(ji,jk) * rhoic * r1_rdtice 
    371371 
    372372            ! Contribution to heat flux [W.m-2], < 0 
    373             hfx_thd_1d(ji) = hfx_thd_1d(ji) + zfmdt * a_i_b(ji) * zEw * r1_rdtice 
     373            hfx_thd_1d(ji) = hfx_thd_1d(ji) + zfmdt * a_i_1d(ji) * zEw * r1_rdtice 
    374374 
    375375            ! Total heat flux used in this process [W.m-2], > 0   
    376             hfx_sum_1d(ji) = hfx_sum_1d(ji) - zfmdt * a_i_b(ji) * zdE * r1_rdtice 
     376            hfx_sum_1d(ji) = hfx_sum_1d(ji) - zfmdt * a_i_1d(ji) * zdE * r1_rdtice 
    377377 
    378378            ! Contribution to mass flux 
    379             wfx_sum_1d(ji) =  wfx_sum_1d(ji) - rhoic * a_i_b(ji) * zdeltah(ji,jk) * r1_rdtice 
     379            wfx_sum_1d(ji) =  wfx_sum_1d(ji) - rhoic * a_i_1d(ji) * zdeltah(ji,jk) * r1_rdtice 
    380380            
    381381            ! record which layers have disappeared (for bottom melting)  
     
    387387 
    388388            ! update heat content (J.m-2) and layer thickness 
    389             qh_i_old(ji,jk) = qh_i_old(ji,jk) + zdeltah(ji,jk) * q_i_b(ji,jk) 
     389            qh_i_old(ji,jk) = qh_i_old(ji,jk) + zdeltah(ji,jk) * q_i_1d(ji,jk) 
    390390            h_i_old (ji,jk) = h_i_old (ji,jk) + zdeltah(ji,jk) 
    391391         END DO 
     
    393393      ! update ice thickness 
    394394      DO ji = kideb, kiut 
    395          ht_i_b(ji) =  MAX( 0._wp , ht_i_b(ji) + dh_i_surf(ji) ) 
     395         ht_i_1d(ji) =  MAX( 0._wp , ht_i_1d(ji) + dh_i_surf(ji) ) 
    396396      END DO 
    397397 
     
    423423      !clem debug. Just to be sure that enthalpy at nlay_i+1 is null 
    424424      DO ji = kideb, kiut 
    425          q_i_b(ji,nlay_i+1) = 0._wp 
     425         q_i_1d(ji,nlay_i+1) = 0._wp 
    426426      END DO 
    427427 
     
    445445 
    446446               s_i_new(ji)        = zswitch_sal * zfracs * sss_m(ii,ij)  &  ! New ice salinity 
    447                                   + ( 1. - zswitch_sal ) * sm_i_b(ji)  
     447                                  + ( 1. - zswitch_sal ) * sm_i_1d(ji)  
    448448               ! New ice growth 
    449449               ztmelts            = - tmut * s_i_new(ji) + rtt          ! New ice melting point (K) 
    450450 
    451                zt_i_new           = zswitch_sal * t_bo_b(ji) + ( 1. - zswitch_sal) * t_i_b(ji, nlay_i) 
     451               zt_i_new           = zswitch_sal * t_bo_1d(ji) + ( 1. - zswitch_sal) * t_i_1d(ji, nlay_i) 
    452452                
    453453               zEi                = cpic * ( zt_i_new - ztmelts ) &     ! Specific enthalpy of forming ice (J/kg, <0)       
     
    455455                  &               + rcp  * ( ztmelts-rtt )           
    456456 
    457                zEw                = rcp  * ( t_bo_b(ji) - rt0 )         ! Specific enthalpy of seawater (J/kg, < 0) 
     457               zEw                = rcp  * ( t_bo_1d(ji) - rt0 )         ! Specific enthalpy of seawater (J/kg, < 0) 
    458458 
    459459               zdE                = zEi - zEw                           ! Specific enthalpy difference (J/kg, <0) 
     
    461461               dh_i_bott(ji)      = rdt_ice * MAX( 0._wp , zf_tt(ji) / ( zdE * rhoic ) ) 
    462462 
    463                q_i_b(ji,nlay_i+1) = -zEi * rhoic                        ! New ice energy of melting (J/m3, >0) 
     463               q_i_1d(ji,nlay_i+1) = -zEi * rhoic                        ! New ice energy of melting (J/m3, >0) 
    464464                
    465465            ENDIF ! fc_bo_i 
     
    476476            ztmelts        = - tmut * s_i_new(ji) + rtt          ! New ice melting point (K) 
    477477             
    478             zt_i_new       = zswitch_sal * t_bo_b(ji) + ( 1. - zswitch_sal) * t_i_b(ji, nlay_i) 
     478            zt_i_new       = zswitch_sal * t_bo_1d(ji) + ( 1. - zswitch_sal) * t_i_1d(ji, nlay_i) 
    479479             
    480480            zEi            = cpic * ( zt_i_new - ztmelts ) &     ! Specific enthalpy of forming ice (J/kg, <0)       
     
    482482               &               + rcp  * ( ztmelts-rtt )           
    483483             
    484             zEw            = rcp  * ( t_bo_b(ji) - rt0 )         ! Specific enthalpy of seawater (J/kg, < 0) 
     484            zEw            = rcp  * ( t_bo_1d(ji) - rt0 )         ! Specific enthalpy of seawater (J/kg, < 0) 
    485485             
    486486            zdE            = zEi - zEw                           ! Specific enthalpy difference (J/kg, <0) 
    487487             
    488488            ! Contribution to heat flux to the ocean [W.m-2], >0   
    489             hfx_thd_1d(ji) = hfx_thd_1d(ji) + zfmdt * a_i_b(ji) * zEw * r1_rdtice 
     489            hfx_thd_1d(ji) = hfx_thd_1d(ji) + zfmdt * a_i_1d(ji) * zEw * r1_rdtice 
    490490 
    491491            ! Total heat flux used in this process [W.m-2], <0   
    492             hfx_bog_1d(ji) = hfx_bog_1d(ji) - zfmdt * a_i_b(ji) * zdE * r1_rdtice 
     492            hfx_bog_1d(ji) = hfx_bog_1d(ji) - zfmdt * a_i_1d(ji) * zdE * r1_rdtice 
    493493             
    494494            ! Contribution to salt flux, <0 
    495             sfx_bog_1d(ji) = sfx_bog_1d(ji) + s_i_new(ji) * a_i_b(ji) * zfmdt * r1_rdtice 
     495            sfx_bog_1d(ji) = sfx_bog_1d(ji) + s_i_new(ji) * a_i_1d(ji) * zfmdt * r1_rdtice 
    496496 
    497497            ! Contribution to mass flux, <0 
    498             wfx_bog_1d(ji) =  wfx_bog_1d(ji) - rhoic * a_i_b(ji) * dh_i_bott(ji) * r1_rdtice 
     498            wfx_bog_1d(ji) =  wfx_bog_1d(ji) - rhoic * a_i_1d(ji) * dh_i_bott(ji) * r1_rdtice 
    499499 
    500500            ! update heat content (J.m-2) and layer thickness 
    501             qh_i_old(ji,nlay_i+1) = qh_i_old(ji,nlay_i+1) + dh_i_bott(ji) * q_i_b(ji,nlay_i+1) 
     501            qh_i_old(ji,nlay_i+1) = qh_i_old(ji,nlay_i+1) + dh_i_bott(ji) * q_i_1d(ji,nlay_i+1) 
    502502            h_i_old (ji,nlay_i+1) = h_i_old (ji,nlay_i+1) + dh_i_bott(ji) 
    503503         ENDIF 
     
    512512            IF(  zf_tt(ji)  >=  0._wp  .AND. jk > icount(ji) ) THEN   ! do not calculate where layer has already disappeared from surface melting  
    513513 
    514                ztmelts = - tmut * s_i_b(ji,jk) + rtt  ! Melting point of layer jk (K) 
    515  
    516                IF( t_i_b(ji,jk) >= ztmelts ) THEN !!! Internal melting 
     514               ztmelts = - tmut * s_i_1d(ji,jk) + rtt  ! Melting point of layer jk (K) 
     515 
     516               IF( t_i_1d(ji,jk) >= ztmelts ) THEN !!! Internal melting 
    517517                  zintermelt(ji)    = 1._wp 
    518518 
    519                   zEi               = - q_i_b(ji,jk) / rhoic        ! Specific enthalpy of melting ice (J/kg, <0) 
    520  
    521                   !!zEw               = rcp * ( t_i_b(ji,jk) - rtt )  ! Specific enthalpy of meltwater at T = t_i_b (J/kg, <0) 
     519                  zEi               = - q_i_1d(ji,jk) / rhoic        ! Specific enthalpy of melting ice (J/kg, <0) 
     520 
     521                  !!zEw               = rcp * ( t_i_1d(ji,jk) - rtt )  ! Specific enthalpy of meltwater at T = t_i_1d (J/kg, <0) 
    522522 
    523523                  zdE               = 0._wp                         ! Specific enthalpy difference   (J/kg, <0) 
     
    532532 
    533533                  ! Contribution to heat flux to the ocean [W.m-2], <0 (ice enthalpy zEi is "sent" to the ocean)  
    534                   hfx_res_1d(ji) = hfx_res_1d(ji) + zfmdt * a_i_b(ji) * zEi * r1_rdtice 
    535  
    536                   ! Contribution to salt flux (clem: using sm_i_b and not s_i_b(jk) is ok) 
    537                   sfx_res_1d(ji) = sfx_res_1d(ji) - sm_i_b(ji) * a_i_b(ji) * zdeltah(ji,jk) * rhoic * r1_rdtice 
     534                  hfx_res_1d(ji) = hfx_res_1d(ji) + zfmdt * a_i_1d(ji) * zEi * r1_rdtice 
     535 
     536                  ! Contribution to salt flux (clem: using sm_i_1d and not s_i_1d(jk) is ok) 
     537                  sfx_res_1d(ji) = sfx_res_1d(ji) - sm_i_1d(ji) * a_i_1d(ji) * zdeltah(ji,jk) * rhoic * r1_rdtice 
    538538                                     
    539539                  ! Contribution to mass flux 
    540                   wfx_res_1d(ji) =  wfx_res_1d(ji) - rhoic * a_i_b(ji) * zdeltah(ji,jk) * r1_rdtice 
     540                  wfx_res_1d(ji) =  wfx_res_1d(ji) - rhoic * a_i_1d(ji) * zdeltah(ji,jk) * r1_rdtice 
    541541 
    542542                  ! update heat content (J.m-2) and layer thickness 
    543                   qh_i_old(ji,jk) = qh_i_old(ji,jk) + zdeltah(ji,jk) * q_i_b(ji,jk) 
     543                  qh_i_old(ji,jk) = qh_i_old(ji,jk) + zdeltah(ji,jk) * q_i_1d(ji,jk) 
    544544                  h_i_old (ji,jk) = h_i_old (ji,jk) + zdeltah(ji,jk) 
    545545 
    546546               ELSE                               !!! Basal melting 
    547547 
    548                   zEi               = - q_i_b(ji,jk) / rhoic ! Specific enthalpy of melting ice (J/kg, <0) 
     548                  zEi               = - q_i_1d(ji,jk) / rhoic ! Specific enthalpy of melting ice (J/kg, <0) 
    549549 
    550550                  zEw               = rcp * ( ztmelts - rtt )! Specific enthalpy of meltwater (J/kg, <0) 
     
    567567 
    568568                  ! Contribution to heat flux to the ocean [W.m-2], <0   
    569                   hfx_thd_1d(ji) = hfx_thd_1d(ji) + zfmdt * a_i_b(ji) * zEw * r1_rdtice 
    570  
    571                   ! Contribution to salt flux (clem: using sm_i_b and not s_i_b(jk) is ok) 
    572                   sfx_bom_1d(ji) = sfx_bom_1d(ji) - sm_i_b(ji) * a_i_b(ji) * zdeltah(ji,jk) * rhoic * r1_rdtice 
     569                  hfx_thd_1d(ji) = hfx_thd_1d(ji) + zfmdt * a_i_1d(ji) * zEw * r1_rdtice 
     570 
     571                  ! Contribution to salt flux (clem: using sm_i_1d and not s_i_1d(jk) is ok) 
     572                  sfx_bom_1d(ji) = sfx_bom_1d(ji) - sm_i_1d(ji) * a_i_1d(ji) * zdeltah(ji,jk) * rhoic * r1_rdtice 
    573573                   
    574574                  ! Total heat flux used in this process [W.m-2], >0   
    575                   hfx_bom_1d(ji) = hfx_bom_1d(ji) - zfmdt * a_i_b(ji) * zdE * r1_rdtice 
     575                  hfx_bom_1d(ji) = hfx_bom_1d(ji) - zfmdt * a_i_1d(ji) * zdE * r1_rdtice 
    576576                   
    577577                  ! Contribution to mass flux 
    578                   wfx_bom_1d(ji) =  wfx_bom_1d(ji) - rhoic * a_i_b(ji) * zdeltah(ji,jk) * r1_rdtice 
     578                  wfx_bom_1d(ji) =  wfx_bom_1d(ji) - rhoic * a_i_1d(ji) * zdeltah(ji,jk) * r1_rdtice 
    579579 
    580580                  ! update heat content (J.m-2) and layer thickness 
    581                   qh_i_old(ji,jk) = qh_i_old(ji,jk) + zdeltah(ji,jk) * q_i_b(ji,jk) 
     581                  qh_i_old(ji,jk) = qh_i_old(ji,jk) + zdeltah(ji,jk) * q_i_1d(ji,jk) 
    582582                  h_i_old (ji,jk) = h_i_old (ji,jk) + zdeltah(ji,jk) 
    583583               ENDIF 
     
    602602! 
    603603!               ! excessive energy is sent to lateral ablation 
    604 !               zinda = MAX( 0._wp, SIGN( 1._wp , 1._wp - at_i_b(ji) - epsi20 ) ) 
    605 !               zq_1cat(ji) =  zinda * rhoic * lfus * at_i_b(ji) / MAX( 1._wp - at_i_b(ji) , epsi20 ) * zdvres ! J.m-2 >=0 
     604!               zinda = MAX( 0._wp, SIGN( 1._wp , 1._wp - at_i_1d(ji) - epsi20 ) ) 
     605!               zq_1cat(ji) =  zinda * rhoic * lfus * at_i_1d(ji) / MAX( 1._wp - at_i_1d(ji) , epsi20 ) * zdvres ! J.m-2 >=0 
    606606! 
    607607!               ! correct salt and mass fluxes 
    608 !               sfx_bom_1d(ji) = sfx_bom_1d(ji) - sm_i_b(ji) * a_i_b(ji) * zdvres * rhoic * r1_rdtice ! this is only a raw approximation 
    609 !               wfx_bom_1d(ji) = wfx_bom_1d(ji) - rhoic * a_i_b(ji) * zdvres * r1_rdtice 
     608!               sfx_bom_1d(ji) = sfx_bom_1d(ji) - sm_i_1d(ji) * a_i_1d(ji) * zdvres * rhoic * r1_rdtice ! this is only a raw approximation 
     609!               wfx_bom_1d(ji) = wfx_bom_1d(ji) - rhoic * a_i_1d(ji) * zdvres * r1_rdtice 
    610610!            ENDIF 
    611611!         END DO 
     
    616616      !------------------------------------------- 
    617617      DO ji = kideb, kiut 
    618          ht_i_b(ji) =  MAX( 0._wp , ht_i_b(ji) + dh_i_bott(ji) ) 
     618         ht_i_1d(ji) =  MAX( 0._wp , ht_i_1d(ji) + dh_i_bott(ji) ) 
    619619      END DO   
    620620 
     
    627627      DO ji = kideb, kiut 
    628628         zq_rema(ji)     = zq_su(ji) + zq_bo(ji)  
    629 !         zindh           = 1._wp - MAX( 0._wp, SIGN( 1._wp, - ht_s_b(ji) ) )   ! =1 if snow 
     629!         zindh           = 1._wp - MAX( 0._wp, SIGN( 1._wp, - ht_s_1d(ji) ) )   ! =1 if snow 
    630630!         zindq           = 1._wp - MAX( 0._wp, SIGN( 1._wp, - zq_s(ji) + epsi20 ) ) 
    631631!         zdeltah  (ji,1) = - zindh * zindq * zq_rema(ji) / MAX( zq_s(ji), epsi20 ) 
    632 !         zdeltah  (ji,1) = MIN( 0._wp , MAX( zdeltah(ji,1) , - ht_s_b(ji) ) ) ! bound melting 
     632!         zdeltah  (ji,1) = MIN( 0._wp , MAX( zdeltah(ji,1) , - ht_s_1d(ji) ) ) ! bound melting 
    633633!         zdh_s_mel(ji)   = zdh_s_mel(ji) + zdeltah(ji,1)     
    634634!         dh_s_tot (ji)   = dh_s_tot(ji) + zdeltah(ji,1) 
    635 !         ht_s_b   (ji)   = ht_s_b(ji)   + zdeltah(ji,1) 
     635!         ht_s_1d   (ji)   = ht_s_1d(ji)   + zdeltah(ji,1) 
    636636!         
    637637!         zq_rema(ji)     = zq_rema(ji) + zdeltah(ji,1) * zq_s(ji)                ! update available heat (J.m-2) 
    638638!         ! heat used to melt snow 
    639 !         hfx_snw_1d(ji)  = hfx_snw_1d(ji) - zdeltah(ji,1) * a_i_b(ji) * zq_s(ji) * r1_rdtice ! W.m-2 (>0) 
     639!         hfx_snw_1d(ji)  = hfx_snw_1d(ji) - zdeltah(ji,1) * a_i_1d(ji) * zq_s(ji) * r1_rdtice ! W.m-2 (>0) 
    640640!         ! Contribution to mass flux 
    641 !         wfx_snw_1d(ji)  =  wfx_snw_1d(ji) - rhosn * a_i_b(ji) * zdeltah(ji,1) * r1_rdtice 
     641!         wfx_snw_1d(ji)  =  wfx_snw_1d(ji) - rhosn * a_i_1d(ji) * zdeltah(ji,1) * r1_rdtice 
    642642!     
    643643         ii = MOD( npb(ji) - 1, jpi ) + 1 ; ij = ( npb(ji) - 1 ) / jpi + 1 
    644644         ! Remaining heat flux (W.m-2) is sent to the ocean heat budget 
    645          hfx_out(ii,ij)  = hfx_out(ii,ij) + ( zq_1cat(ji) + zq_rema(ji) * a_i_b(ji) ) * r1_rdtice 
     645         hfx_out(ii,ij)  = hfx_out(ii,ij) + ( zq_1cat(ji) + zq_rema(ji) * a_i_1d(ji) ) * r1_rdtice 
    646646 
    647647         IF( ln_nicep .AND. zq_rema(ji) < 0. .AND. lwp ) WRITE(numout,*) 'ALERTE zq_rema <0 = ', zq_rema(ji) 
     
    656656      DO ji = kideb, kiut 
    657657         ! 
    658          dh_snowice(ji) = MAX(  0._wp , ( rhosn * ht_s_b(ji) + (rhoic-rau0) * ht_i_b(ji) ) / ( rhosn+rau0-rhoic )  ) 
    659  
    660          ht_i_b(ji)     = ht_i_b(ji) + dh_snowice(ji) 
    661          ht_s_b(ji)     = ht_s_b(ji) - dh_snowice(ji) 
     658         dh_snowice(ji) = MAX(  0._wp , ( rhosn * ht_s_1d(ji) + (rhoic-rau0) * ht_i_1d(ji) ) / ( rhosn+rau0-rhoic )  ) 
     659 
     660         ht_i_1d(ji)     = ht_i_1d(ji) + dh_snowice(ji) 
     661         ht_s_1d(ji)     = ht_s_1d(ji) - dh_snowice(ji) 
    662662 
    663663         ! Salinity of snow ice 
    664664         ii = MOD( npb(ji) - 1, jpi ) + 1 ; ij = ( npb(ji) - 1 ) / jpi + 1 
    665          zs_snic = zswitch_sal * sss_m(ii,ij) * ( rhoic - rhosn ) / rhoic + ( 1. - zswitch_sal ) * sm_i_b(ji) 
     665         zs_snic = zswitch_sal * sss_m(ii,ij) * ( rhoic - rhosn ) / rhoic + ( 1. - zswitch_sal ) * sm_i_1d(ji) 
    666666 
    667667         ! entrapment during snow ice formation 
    668668         ! new salinity difference stored (to be used in limthd_ent.F90) 
    669669         IF (  num_sal == 2  ) THEN 
    670             zswitch = MAX( 0._wp , SIGN( 1._wp , ht_i_b(ji) - epsi10 ) ) 
     670            zswitch = MAX( 0._wp , SIGN( 1._wp , ht_i_1d(ji) - epsi10 ) ) 
    671671            ! salinity dif due to snow-ice formation 
    672             dsm_i_si_1d(ji) = ( zs_snic - sm_i_b(ji) ) * dh_snowice(ji) / MAX( ht_i_b(ji), epsi10 ) * zswitch      
     672            dsm_i_si_1d(ji) = ( zs_snic - sm_i_1d(ji) ) * dh_snowice(ji) / MAX( ht_i_1d(ji), epsi10 ) * zswitch      
    673673            ! salinity dif due to bottom growth  
    674674            IF (  zf_tt(ji)  < 0._wp ) THEN 
    675                dsm_i_se_1d(ji) = ( s_i_new(ji) - sm_i_b(ji) ) * dh_i_bott(ji) / MAX( ht_i_b(ji), epsi10 ) * zswitch 
     675               dsm_i_se_1d(ji) = ( s_i_new(ji) - sm_i_1d(ji) ) * dh_i_bott(ji) / MAX( ht_i_1d(ji), epsi10 ) * zswitch 
    676676            ENDIF 
    677677         ENDIF 
     
    685685          
    686686         ! Contribution to heat flux 
    687          hfx_thd_1d(ji) = hfx_thd_1d(ji) + zfmdt * a_i_b(ji) * zEw * r1_rdtice  
     687         hfx_thd_1d(ji) = hfx_thd_1d(ji) + zfmdt * a_i_1d(ji) * zEw * r1_rdtice  
    688688 
    689689         ! Contribution to salt flux 
    690          sfx_sni_1d(ji) = sfx_sni_1d(ji) + sss_m(ii,ij) * a_i_b(ji) * zfmdt * r1_rdtice  
     690         sfx_sni_1d(ji) = sfx_sni_1d(ji) + sss_m(ii,ij) * a_i_1d(ji) * zfmdt * r1_rdtice  
    691691           
    692692         ! Contribution to mass flux 
    693693         ! All snow is thrown in the ocean, and seawater is taken to replace the volume 
    694          wfx_sni_1d(ji) = wfx_sni_1d(ji) - a_i_b(ji) * dh_snowice(ji) * rhoic * r1_rdtice 
    695          wfx_snw_1d(ji) = wfx_snw_1d(ji) + a_i_b(ji) * dh_snowice(ji) * rhosn * r1_rdtice 
     694         wfx_sni_1d(ji) = wfx_sni_1d(ji) - a_i_1d(ji) * dh_snowice(ji) * rhoic * r1_rdtice 
     695         wfx_snw_1d(ji) = wfx_snw_1d(ji) + a_i_1d(ji) * dh_snowice(ji) * rhosn * r1_rdtice 
    696696 
    697697         ! update heat content (J.m-2) and layer thickness 
    698          qh_i_old(ji,0) = qh_i_old(ji,0) + dh_snowice(ji) * q_s_b(ji,1) + zfmdt * zEw 
     698         qh_i_old(ji,0) = qh_i_old(ji,0) + dh_snowice(ji) * q_s_1d(ji,1) + zfmdt * zEw 
    699699         h_i_old (ji,0) = h_i_old (ji,0) + dh_snowice(ji) 
    700700          
    701701         ! Total ablation (to debug) 
    702          IF( ht_i_b(ji) <= 0._wp )   a_i_b(ji) = 0._wp 
     702         IF( ht_i_1d(ji) <= 0._wp )   a_i_1d(ji) = 0._wp 
    703703 
    704704      END DO !ji 
     
    710710      !clem bug: we should take snow into account here 
    711711      DO ji = kideb, kiut 
    712          zindh    =  1.0 - MAX( 0._wp , SIGN( 1._wp , - ht_i_b(ji) ) )  
    713          t_su_b(ji) =  zindh * t_su_b(ji) + ( 1.0 - zindh ) * rtt 
     712         zindh    =  1.0 - MAX( 0._wp , SIGN( 1._wp , - ht_i_1d(ji) ) )  
     713         t_su_1d(ji) =  zindh * t_su_1d(ji) + ( 1.0 - zindh ) * rtt 
    714714      END DO  ! ji 
    715715 
     
    717717         DO ji = kideb,kiut 
    718718            ! mask enthalpy 
    719             zinda        =  MAX(  0._wp , SIGN( 1._wp, - ht_s_b(ji) )  ) 
    720             q_s_b(ji,jk) = ( 1.0 - zinda ) * q_s_b(ji,jk) 
    721             ! recalculate t_s_b from q_s_b 
    722             t_s_b(ji,jk) = rtt + ( 1._wp - zinda ) * ( - q_s_b(ji,jk) / ( rhosn * cpic ) + lfus / cpic ) 
     719            zinda        =  MAX(  0._wp , SIGN( 1._wp, - ht_s_1d(ji) )  ) 
     720            q_s_1d(ji,jk) = ( 1.0 - zinda ) * q_s_1d(ji,jk) 
     721            ! recalculate t_s_1d from q_s_1d 
     722            t_s_1d(ji,jk) = rtt + ( 1._wp - zinda ) * ( - q_s_1d(ji,jk) / ( rhosn * cpic ) + lfus / cpic ) 
    723723         END DO 
    724724      END DO 
     
    727727      CALL wrk_dealloc( jpij, zdh_s_mel, zdh_s_pre, zdh_s_sub, zqh_i, zqh_s, zq_s ) 
    728728      CALL wrk_dealloc( jpij, zintermelt ) 
    729       CALL wrk_dealloc( jpij, jkmax, zdeltah, zh_i ) 
     729      CALL wrk_dealloc( jpij, nlay_i+1, zdeltah, zh_i ) 
    730730      CALL wrk_dealloc( jpij, icount ) 
    731731      ! 
  • branches/2014/dev_CNRS_2014/NEMOGCM/NEMO/LIM_SRC_3/limthd_dif.F90

    r4901 r4902  
    7575      !! 
    7676      !! ** Inputs / Ouputs : (global commons) 
    77       !!           surface temperature : t_su_b 
    78       !!           ice/snow temperatures   : t_i_b, t_s_b 
    79       !!           ice salinities          : s_i_b 
     77      !!           surface temperature : t_su_1d 
     78      !!           ice/snow temperatures   : t_i_1d, t_s_1d 
     79      !!           ice salinities          : s_i_1d 
    8080      !!           number of layers in the ice/snow: nlay_i, nlay_s 
    8181      !!           profile of the ice/snow layers : z_i, z_s 
    82       !!           total ice/snow thickness : ht_i_b, ht_s_b 
     82      !!           total ice/snow thickness : ht_i_1d, ht_s_1d 
    8383      !! 
    8484      !! ** External :  
     
    9898      INTEGER ::   ii, ij      ! temporary dummy loop index 
    9999      INTEGER ::   numeq       ! current reference number of equation 
    100       INTEGER ::   layer       ! vertical dummy loop index  
     100      INTEGER ::   jk       ! vertical dummy loop index  
    101101      INTEGER ::   nconv       ! number of iterations in iterative procedure 
    102102      INTEGER ::   minnumeqmin, maxnumeqmax 
     
    114114      REAL(wp) ::   zerritmax   ! current maximal error on temperature  
    115115      REAL(wp), POINTER, DIMENSION(:) ::   ztfs        ! ice melting point 
    116       REAL(wp), POINTER, DIMENSION(:) ::   ztsuold     ! old surface temperature (before the iterative procedure ) 
    117       REAL(wp), POINTER, DIMENSION(:) ::   ztsuoldit   ! surface temperature at previous iteration 
     116      REAL(wp), POINTER, DIMENSION(:) ::   ztsu     ! old surface temperature (before the iterative procedure ) 
     117      REAL(wp), POINTER, DIMENSION(:) ::   ztsubit     ! surface temperature at previous iteration 
    118118      REAL(wp), POINTER, DIMENSION(:) ::   zh_i        ! ice layer thickness 
    119119      REAL(wp), POINTER, DIMENSION(:) ::   zh_s        ! snow layer thickness 
     
    129129      REAL(wp), POINTER, DIMENSION(:,:) ::   zradab_i    ! Radiation absorbed in the ice 
    130130      REAL(wp), POINTER, DIMENSION(:,:) ::   zkappa_i    ! Kappa factor in the ice 
    131       REAL(wp), POINTER, DIMENSION(:,:) ::   ztiold      ! Old temperature in the ice 
     131      REAL(wp), POINTER, DIMENSION(:,:) ::   zti      ! Old temperature in the ice 
    132132      REAL(wp), POINTER, DIMENSION(:,:) ::   zeta_i      ! Eta factor in the ice 
    133133      REAL(wp), POINTER, DIMENSION(:,:) ::   ztitemp     ! Temporary temperature in the ice to check the convergence 
     
    137137      REAL(wp), POINTER, DIMENSION(:,:) ::   zradab_s    ! Radiation absorbed in the snow 
    138138      REAL(wp), POINTER, DIMENSION(:,:) ::   zkappa_s    ! Kappa factor in the snow 
    139       REAL(wp), POINTER, DIMENSION(:,:) ::   zeta_s       ! Eta factor in the snow 
    140       REAL(wp), POINTER, DIMENSION(:,:) ::   ztstemp      ! Temporary temperature in the snow to check the convergence 
    141       REAL(wp), POINTER, DIMENSION(:,:) ::   ztsold       ! Temporary temperature in the snow 
    142       REAL(wp), POINTER, DIMENSION(:,:) ::   z_s          ! Vertical cotes of the layers in the snow 
    143       REAL(wp), POINTER, DIMENSION(:,:) ::   zindterm   ! Independent term 
    144       REAL(wp), POINTER, DIMENSION(:,:) ::   zindtbis   ! temporary independent term 
     139      REAL(wp), POINTER, DIMENSION(:,:) ::   zeta_s      ! Eta factor in the snow 
     140      REAL(wp), POINTER, DIMENSION(:,:) ::   ztstemp     ! Temporary temperature in the snow to check the convergence 
     141      REAL(wp), POINTER, DIMENSION(:,:) ::   ztsb        ! Temporary temperature in the snow 
     142      REAL(wp), POINTER, DIMENSION(:,:) ::   z_s         ! Vertical cotes of the layers in the snow 
     143      REAL(wp), POINTER, DIMENSION(:,:) ::   zindterm    ! Independent term 
     144      REAL(wp), POINTER, DIMENSION(:,:) ::   zindtbis    ! temporary independent term 
    145145      REAL(wp), POINTER, DIMENSION(:,:) ::   zdiagbis 
    146       REAL(wp), POINTER, DIMENSION(:,:,:) ::   ztrid   ! tridiagonal system terms 
     146      REAL(wp), POINTER, DIMENSION(:,:,:) ::   ztrid     ! tridiagonal system terms 
    147147      ! diag errors on heat 
    148148      REAL(wp), POINTER, DIMENSION(:) :: zdq, zq_ini, zhfx_err 
     
    150150      !  
    151151      CALL wrk_alloc( jpij, numeqmin, numeqmax, isnow ) 
    152       CALL wrk_alloc( jpij, ztfs, ztsuold, ztsuoldit, zh_i, zh_s, zfsw ) 
     152      CALL wrk_alloc( jpij, ztfs, ztsub, ztsubit, zh_i, zh_s, zfsw ) 
    153153      CALL wrk_alloc( jpij, zf, dzf, zerrit, zdifcase, zftrice, zihic, zhsu ) 
    154       CALL wrk_alloc( jpij, nlay_i+1, ztcond_i, zradtr_i, zradab_i, zkappa_i, ztiold, zeta_i, ztitemp, z_i, zspeche_i, kjstart=0) 
    155       CALL wrk_alloc( jpij, nlay_s+1,           zradtr_s, zradab_s, zkappa_s, ztsold, zeta_s, ztstemp, z_s, kjstart=0) 
    156       CALL wrk_alloc( jpij, jkmax+2, zindterm, zindtbis, zdiagbis  ) 
    157       CALL wrk_alloc( jpij, jkmax+2, 3, ztrid ) 
     154      CALL wrk_alloc( jpij, nlay_i+1, ztcond_i, zradtr_i, zradab_i, zkappa_i, ztib, zeta_i, ztitemp, z_i, zspeche_i, kjstart=0) 
     155      CALL wrk_alloc( jpij, nlay_s+1,           zradtr_s, zradab_s, zkappa_s, ztsb, zeta_s, ztstemp, z_s, kjstart=0) 
     156      CALL wrk_alloc( jpij, nlay_i+3, zindterm, zindtbis, zdiagbis  ) 
     157      CALL wrk_alloc( jpij, nlay_i+3, 3, ztrid ) 
    158158 
    159159      CALL wrk_alloc( jpij, zdq, zq_ini, zhfx_err ) 
     
    162162      zdq(:) = 0._wp ; zq_ini(:) = 0._wp       
    163163      DO ji = kideb, kiut 
    164          zq_ini(ji) = ( SUM( q_i_b(ji,1:nlay_i) ) * ht_i_b(ji) / REAL( nlay_i ) +  & 
    165             &           SUM( q_s_b(ji,1:nlay_s) ) * ht_s_b(ji) / REAL( nlay_s ) )  
     164         zq_ini(ji) = ( SUM( q_i_1d(ji,1:nlay_i) ) * ht_i_1d(ji) / REAL( nlay_i ) +  & 
     165            &           SUM( q_s_1d(ji,1:nlay_s) ) * ht_s_1d(ji) / REAL( nlay_s ) )  
    166166      END DO 
    167167 
     
    172172      DO ji = kideb , kiut 
    173173         ! is there snow or not 
    174          isnow(ji)= NINT(  1._wp - MAX( 0._wp , SIGN(1._wp, - ht_s_b(ji) ) )  ) 
     174         isnow(ji)= NINT(  1._wp - MAX( 0._wp , SIGN(1._wp, - ht_s_1d(ji) ) )  ) 
    175175         ! surface temperature of fusion 
    176176         ztfs(ji) = REAL( isnow(ji) ) * rtt + REAL( 1 - isnow(ji) ) * rtt 
    177177         ! layer thickness 
    178          zh_i(ji) = ht_i_b(ji) / REAL( nlay_i ) 
    179          zh_s(ji) = ht_s_b(ji) / REAL( nlay_s ) 
     178         zh_i(ji) = ht_i_1d(ji) / REAL( nlay_i ) 
     179         zh_s(ji) = ht_s_1d(ji) / REAL( nlay_s ) 
    180180      END DO 
    181181 
     
    187187      z_i(:,0) = 0._wp   ! vert. coord. of the up. lim. of the 1st ice layer 
    188188 
    189       DO layer = 1, nlay_s            ! vert. coord of the up. lim. of the layer-th snow layer 
    190          DO ji = kideb , kiut 
    191             z_s(ji,layer) = z_s(ji,layer-1) + ht_s_b(ji) / REAL( nlay_s ) 
    192          END DO 
    193       END DO 
    194  
    195       DO layer = 1, nlay_i            ! vert. coord of the up. lim. of the layer-th ice layer 
    196          DO ji = kideb , kiut 
    197             z_i(ji,layer) = z_i(ji,layer-1) + ht_i_b(ji) / REAL( nlay_i ) 
     189      DO jk = 1, nlay_s            ! vert. coord of the up. lim. of the layer-th snow layer 
     190         DO ji = kideb , kiut 
     191            z_s(ji,jk) = z_s(ji,jk-1) + ht_s_1d(ji) / REAL( nlay_s ) 
     192         END DO 
     193      END DO 
     194 
     195      DO jk = 1, nlay_i            ! vert. coord of the up. lim. of the layer-th ice layer 
     196         DO ji = kideb , kiut 
     197            z_i(ji,jk) = z_i(ji,jk-1) + ht_i_1d(ji) / REAL( nlay_i ) 
    198198         END DO 
    199199      END DO 
     
    216216      DO ji = kideb , kiut 
    217217         ! switches 
    218          isnow(ji) = NINT(  1._wp - MAX( 0._wp , SIGN( 1._wp , - ht_s_b(ji) ) )  )  
     218         isnow(ji) = NINT(  1._wp - MAX( 0._wp , SIGN( 1._wp , - ht_s_1d(ji) ) )  )  
    219219         ! hs > 0, isnow = 1 
    220220         zhsu (ji) = hnzst  ! threshold for the computation of i0 
    221          zihic(ji) = MAX( 0._wp , 1._wp - ( ht_i_b(ji) / zhsu(ji) ) )      
     221         zihic(ji) = MAX( 0._wp , 1._wp - ( ht_i_1d(ji) / zhsu(ji) ) )      
    222222 
    223223         i0(ji)    = REAL( 1 - isnow(ji) ) * ( fr1_i0_1d(ji) + zihic(ji) * fr2_i0_1d(ji) ) 
     
    226226         !            a function of the cloud cover 
    227227         ! 
    228          !i0(ji)     =  (1.0-FLOAT(isnow(ji)))*3.0/(100*ht_s_b(ji)+10.0) 
     228         !i0(ji)     =  (1.0-FLOAT(isnow(ji)))*3.0/(100*ht_s_1d(ji)+10.0) 
    229229         !formula used in Cice 
    230230      END DO 
     
    248248      END DO 
    249249 
    250       DO layer = 1, nlay_s          ! Radiation through snow 
     250      DO jk = 1, nlay_s          ! Radiation through snow 
    251251         DO ji = kideb, kiut 
    252252            !                             ! radiation transmitted below the layer-th snow layer 
    253             zradtr_s(ji,layer) = zradtr_s(ji,0) * EXP( - zraext_s * ( MAX ( 0._wp , z_s(ji,layer) ) ) ) 
     253            zradtr_s(ji,jk) = zradtr_s(ji,0) * EXP( - zraext_s * ( MAX ( 0._wp , z_s(ji,jk) ) ) ) 
    254254            !                             ! radiation absorbed by the layer-th snow layer 
    255             zradab_s(ji,layer) = zradtr_s(ji,layer-1) - zradtr_s(ji,layer) 
     255            zradab_s(ji,jk) = zradtr_s(ji,jk-1) - zradtr_s(ji,jk) 
    256256         END DO 
    257257      END DO 
     
    261261      END DO 
    262262 
    263       DO layer = 1, nlay_i          ! Radiation through ice 
     263      DO jk = 1, nlay_i          ! Radiation through ice 
    264264         DO ji = kideb, kiut 
    265265            !                             ! radiation transmitted below the layer-th ice layer 
    266             zradtr_i(ji,layer) = zradtr_i(ji,0) * EXP( - kappa_i * ( MAX ( 0._wp , z_i(ji,layer) ) ) ) 
     266            zradtr_i(ji,jk) = zradtr_i(ji,0) * EXP( - kappa_i * ( MAX ( 0._wp , z_i(ji,jk) ) ) ) 
    267267            !                             ! radiation absorbed by the layer-th ice layer 
    268             zradab_i(ji,layer) = zradtr_i(ji,layer-1) - zradtr_i(ji,layer) 
     268            zradab_i(ji,jk) = zradtr_i(ji,jk-1) - zradtr_i(ji,jk) 
    269269         END DO 
    270270      END DO 
     
    280280      ! 
    281281      DO ji = kideb, kiut        ! Old surface temperature 
    282          ztsuold  (ji) =  t_su_b(ji)                              ! temperature at the beg of iter pr. 
    283          ztsuoldit(ji) =  t_su_b(ji)                              ! temperature at the previous iter 
    284          t_su_b   (ji) =  MIN( t_su_b(ji), ztfs(ji) - ztsu_err )  ! necessary 
     282         ztsub  (ji) =  t_su_1d(ji)                              ! temperature at the beg of iter pr. 
     283         ztsubit(ji) =  t_su_1d(ji)                              ! temperature at the previous iter 
     284         t_su_1d   (ji) =  MIN( t_su_1d(ji), ztfs(ji) - ztsu_err )  ! necessary 
    285285         zerrit   (ji) =  1000._wp                                ! initial value of error 
    286286      END DO 
    287287 
    288       DO layer = 1, nlay_s       ! Old snow temperature 
    289          DO ji = kideb , kiut 
    290             ztsold(ji,layer) =  t_s_b(ji,layer) 
    291          END DO 
    292       END DO 
    293  
    294       DO layer = 1, nlay_i       ! Old ice temperature 
    295          DO ji = kideb , kiut 
    296             ztiold(ji,layer) =  t_i_b(ji,layer) 
     288      DO jk = 1, nlay_s       ! Old snow temperature 
     289         DO ji = kideb , kiut 
     290            ztsb(ji,jk) =  t_s_1d(ji,jk) 
     291         END DO 
     292      END DO 
     293 
     294      DO jk = 1, nlay_i       ! Old ice temperature 
     295         DO ji = kideb , kiut 
     296            ztib(ji,jk) =  t_i_1d(ji,jk) 
    297297         END DO 
    298298      END DO 
     
    311311         IF( thcon_i_swi == 0 ) THEN      ! Untersteiner (1964) formula 
    312312            DO ji = kideb , kiut 
    313                ztcond_i(ji,0)        = rcdic + zbeta*s_i_b(ji,1) / MIN(-epsi10,t_i_b(ji,1)-rtt) 
     313               ztcond_i(ji,0)        = rcdic + zbeta*s_i_1d(ji,1) / MIN(-epsi10,t_i_1d(ji,1)-rtt) 
    314314               ztcond_i(ji,0)        = MAX(ztcond_i(ji,0),zkimin) 
    315315            END DO 
    316             DO layer = 1, nlay_i-1 
     316            DO jk = 1, nlay_i-1 
    317317               DO ji = kideb , kiut 
    318                   ztcond_i(ji,layer) = rcdic + zbeta*( s_i_b(ji,layer) + s_i_b(ji,layer+1) ) /  & 
    319                      MIN(-2.0_wp * epsi10, t_i_b(ji,layer)+t_i_b(ji,layer+1) - 2.0_wp * rtt) 
    320                   ztcond_i(ji,layer) = MAX(ztcond_i(ji,layer),zkimin) 
     318                  ztcond_i(ji,jk) = rcdic + zbeta*( s_i_1d(ji,jk) + s_i_1d(ji,jk+1) ) /  & 
     319                     MIN(-2.0_wp * epsi10, t_i_1d(ji,jk)+t_i_1d(ji,jk+1) - 2.0_wp * rtt) 
     320                  ztcond_i(ji,jk) = MAX(ztcond_i(ji,jk),zkimin) 
    321321               END DO 
    322322            END DO 
     
    325325         IF( thcon_i_swi == 1 ) THEN      ! Pringle et al formula included: 2.11 + 0.09 S/T - 0.011.T 
    326326            DO ji = kideb , kiut 
    327                ztcond_i(ji,0) = rcdic + 0.090_wp * s_i_b(ji,1) / MIN( -epsi10, t_i_b(ji,1)-rtt )   & 
    328                   &                   - 0.011_wp * ( t_i_b(ji,1) - rtt )   
     327               ztcond_i(ji,0) = rcdic + 0.090_wp * s_i_1d(ji,1) / MIN( -epsi10, t_i_1d(ji,1)-rtt )   & 
     328                  &                   - 0.011_wp * ( t_i_1d(ji,1) - rtt )   
    329329               ztcond_i(ji,0) = MAX( ztcond_i(ji,0), zkimin ) 
    330330            END DO 
    331             DO layer = 1, nlay_i-1 
     331            DO jk = 1, nlay_i-1 
    332332               DO ji = kideb , kiut 
    333                   ztcond_i(ji,layer) = rcdic + 0.090_wp * ( s_i_b(ji,layer) + s_i_b(ji,layer+1) )   & 
    334                      &                                  / MIN(-2.0_wp * epsi10, t_i_b(ji,layer)+t_i_b(ji,layer+1) - 2.0_wp * rtt)   & 
    335                      &                       - 0.0055_wp* ( t_i_b(ji,layer) + t_i_b(ji,layer+1) - 2.0*rtt )   
    336                   ztcond_i(ji,layer) = MAX( ztcond_i(ji,layer), zkimin ) 
     333                  ztcond_i(ji,jk) = rcdic +                                                                     &  
     334                     &                 0.090_wp * ( s_i_1d(ji,jk) + s_i_1d(ji,jk+1) )                          & 
     335                     &                 / MIN(-2.0_wp * epsi10, t_i_1d(ji,jk)+t_i_1d(ji,jk+1) - 2.0_wp * rtt)   & 
     336                     &               - 0.0055_wp* ( t_i_1d(ji,jk) + t_i_1d(ji,jk+1) - 2.0*rtt )   
     337                  ztcond_i(ji,jk) = MAX( ztcond_i(ji,jk), zkimin ) 
    337338               END DO 
    338339            END DO 
    339340            DO ji = kideb , kiut 
    340                ztcond_i(ji,nlay_i) = rcdic + 0.090_wp * s_i_b(ji,nlay_i) / MIN(-epsi10,t_bo_b(ji)-rtt)   & 
    341                   &                        - 0.011_wp * ( t_bo_b(ji) - rtt )   
     341               ztcond_i(ji,nlay_i) = rcdic + 0.090_wp * s_i_1d(ji,nlay_i) / MIN(-epsi10,t_bo_1d(ji)-rtt)   & 
     342                  &                        - 0.011_wp * ( t_bo_1d(ji) - rtt )   
    342343               ztcond_i(ji,nlay_i) = MAX( ztcond_i(ji,nlay_i), zkimin ) 
    343344            END DO 
     
    355356         END DO 
    356357 
    357          DO layer = 1, nlay_s-1 
    358             DO ji = kideb , kiut 
    359                zkappa_s(ji,layer)  = 2.0 * rcdsn / & 
     358         DO jk = 1, nlay_s-1 
     359            DO ji = kideb , kiut 
     360               zkappa_s(ji,jk)  = 2.0 * rcdsn / & 
    360361                  MAX(epsi10,2.0*zh_s(ji)) 
    361362            END DO 
    362363         END DO 
    363364 
    364          DO layer = 1, nlay_i-1 
     365         DO jk = 1, nlay_i-1 
    365366            DO ji = kideb , kiut 
    366367               !-- Ice kappa factors 
    367                zkappa_i(ji,layer)  = 2.0*ztcond_i(ji,layer)/ & 
     368               zkappa_i(ji,jk)  = 2.0*ztcond_i(ji,jk)/ & 
    368369                  MAX(epsi10,2.0*zh_i(ji))  
    369370            END DO 
     
    384385         !------------------------------------------------------------------------------| 
    385386         ! 
    386          DO layer = 1, nlay_i 
    387             DO ji = kideb , kiut 
    388                ztitemp(ji,layer)   = t_i_b(ji,layer) 
    389                zspeche_i(ji,layer) = cpic + zgamma*s_i_b(ji,layer)/ & 
    390                   MAX((t_i_b(ji,layer)-rtt)*(ztiold(ji,layer)-rtt),epsi10) 
    391                zeta_i(ji,layer)    = rdt_ice / MAX(rhoic*zspeche_i(ji,layer)*zh_i(ji), & 
     387         DO jk = 1, nlay_i 
     388            DO ji = kideb , kiut 
     389               ztitemp(ji,jk)   = t_i_1d(ji,jk) 
     390               zspeche_i(ji,jk) = cpic + zgamma*s_i_1d(ji,jk)/ & 
     391                  MAX((t_i_1d(ji,jk)-rtt)*(ztib(ji,jk)-rtt),epsi10) 
     392               zeta_i(ji,jk)    = rdt_ice / MAX(rhoic*zspeche_i(ji,jk)*zh_i(ji), & 
    392393                  epsi10) 
    393394            END DO 
    394395         END DO 
    395396 
    396          DO layer = 1, nlay_s 
    397             DO ji = kideb , kiut 
    398                ztstemp(ji,layer) = t_s_b(ji,layer) 
    399                zeta_s(ji,layer)  = rdt_ice / MAX(rhosn*cpic*zh_s(ji),epsi10) 
     397         DO jk = 1, nlay_s 
     398            DO ji = kideb , kiut 
     399               ztstemp(ji,jk) = t_s_1d(ji,jk) 
     400               zeta_s(ji,jk)  = rdt_ice / MAX(rhosn*cpic*zh_s(ji),epsi10) 
    400401            END DO 
    401402         END DO 
     
    408409            DO ji = kideb , kiut 
    409410               ! update of the non solar flux according to the update in T_su 
    410                qns_ice_1d(ji) = qns_ice_1d(ji) + dqns_ice_1d(ji) * ( t_su_b(ji) - ztsuoldit(ji) ) 
     411               qns_ice_1d(ji) = qns_ice_1d(ji) + dqns_ice_1d(ji) * ( t_su_1d(ji) - ztsubit(ji) ) 
    411412            END DO 
    412413         ENDIF 
     
    432433         !!ice interior terms (top equation has the same form as the others) 
    433434 
    434          DO numeq=1,jkmax+2 
     435         DO numeq=1,nlay_i+3 
    435436            DO ji = kideb , kiut 
    436437               ztrid(ji,numeq,1) = 0. 
     
    445446         DO numeq = nlay_s + 2, nlay_s + nlay_i  
    446447            DO ji = kideb , kiut 
    447                layer              = numeq - nlay_s - 1 
    448                ztrid(ji,numeq,1)  =  - zeta_i(ji,layer)*zkappa_i(ji,layer-1) 
    449                ztrid(ji,numeq,2)  =  1.0 + zeta_i(ji,layer)*(zkappa_i(ji,layer-1) + & 
    450                   zkappa_i(ji,layer)) 
    451                ztrid(ji,numeq,3)  =  - zeta_i(ji,layer)*zkappa_i(ji,layer) 
    452                zindterm(ji,numeq) =  ztiold(ji,layer) + zeta_i(ji,layer)* & 
    453                   zradab_i(ji,layer) 
     448               jk              = numeq - nlay_s - 1 
     449               ztrid(ji,numeq,1)  =  - zeta_i(ji,jk)*zkappa_i(ji,jk-1) 
     450               ztrid(ji,numeq,2)  =  1.0 + zeta_i(ji,jk)*(zkappa_i(ji,jk-1) + & 
     451                  zkappa_i(ji,jk)) 
     452               ztrid(ji,numeq,3)  =  - zeta_i(ji,jk)*zkappa_i(ji,jk) 
     453               zindterm(ji,numeq) =  ztib(ji,jk) + zeta_i(ji,jk)* & 
     454                  zradab_i(ji,jk) 
    454455            END DO 
    455456         ENDDO 
     
    462463               +  zkappa_i(ji,nlay_i-1) ) 
    463464            ztrid(ji,numeq,3)  =  0.0 
    464             zindterm(ji,numeq) =  ztiold(ji,nlay_i) + zeta_i(ji,nlay_i)* & 
     465            zindterm(ji,numeq) =  ztib(ji,nlay_i) + zeta_i(ji,nlay_i)* & 
    465466               ( zradab_i(ji,nlay_i) + zkappa_i(ji,nlay_i)*zg1 & 
    466                *  t_bo_b(ji) )  
     467               *  t_bo_1d(ji) )  
    467468         ENDDO 
    468469 
    469470 
    470471         DO ji = kideb , kiut 
    471             IF ( ht_s_b(ji).gt.0.0 ) THEN 
     472            IF ( ht_s_1d(ji).gt.0.0 ) THEN 
    472473               ! 
    473474               !------------------------------------------------------------------------------| 
     
    477478               !!snow interior terms (bottom equation has the same form as the others) 
    478479               DO numeq = 3, nlay_s + 1 
    479                   layer =  numeq - 1 
    480                   ztrid(ji,numeq,1)   =  - zeta_s(ji,layer)*zkappa_s(ji,layer-1) 
    481                   ztrid(ji,numeq,2)   =  1.0 + zeta_s(ji,layer)*( zkappa_s(ji,layer-1) + & 
    482                      zkappa_s(ji,layer) ) 
    483                   ztrid(ji,numeq,3)   =  - zeta_s(ji,layer)*zkappa_s(ji,layer) 
    484                   zindterm(ji,numeq)  =  ztsold(ji,layer) + zeta_s(ji,layer)* & 
    485                      zradab_s(ji,layer) 
     480                  jk =  numeq - 1 
     481                  ztrid(ji,numeq,1)   =  - zeta_s(ji,jk)*zkappa_s(ji,jk-1) 
     482                  ztrid(ji,numeq,2)   =  1.0 + zeta_s(ji,jk)*( zkappa_s(ji,jk-1) + & 
     483                     zkappa_s(ji,jk) ) 
     484                  ztrid(ji,numeq,3)   =  - zeta_s(ji,jk)*zkappa_s(ji,jk) 
     485                  zindterm(ji,numeq)  =  ztsb(ji,jk) + zeta_s(ji,jk)* & 
     486                     zradab_s(ji,jk) 
    486487               END DO 
    487488 
     
    490491                  ztrid(ji,nlay_s+2,3)    =  0.0 
    491492                  zindterm(ji,nlay_s+2)   =  zindterm(ji,nlay_s+2) + zkappa_i(ji,1)* & 
    492                      t_bo_b(ji)  
     493                     t_bo_1d(ji)  
    493494               ENDIF 
    494495 
    495                IF ( t_su_b(ji) .LT. rtt ) THEN 
     496               IF ( t_su_1d(ji) .LT. rtt ) THEN 
    496497 
    497498                  !------------------------------------------------------------------------------| 
     
    506507                  ztrid(ji,1,2) = dzf(ji) - zg1s*zkappa_s(ji,0) 
    507508                  ztrid(ji,1,3) = zg1s*zkappa_s(ji,0) 
    508                   zindterm(ji,1) = dzf(ji)*t_su_b(ji)   - zf(ji) 
     509                  zindterm(ji,1) = dzf(ji)*t_su_1d(ji)   - zf(ji) 
    509510 
    510511                  !!first layer of snow equation 
     
    512513                  ztrid(ji,2,2)  =  1.0 + zeta_s(ji,1)*(zkappa_s(ji,1) + zkappa_s(ji,0)*zg1s) 
    513514                  ztrid(ji,2,3)  =  - zeta_s(ji,1)* zkappa_s(ji,1) 
    514                   zindterm(ji,2) =  ztsold(ji,1) + zeta_s(ji,1)*zradab_s(ji,1) 
     515                  zindterm(ji,2) =  ztsb(ji,1) + zeta_s(ji,1)*zradab_s(ji,1) 
    515516 
    516517               ELSE  
     
    529530                     zkappa_s(ji,0) * zg1s ) 
    530531                  ztrid(ji,2,3)  =  - zeta_s(ji,1)*zkappa_s(ji,1)  
    531                   zindterm(ji,2) = ztsold(ji,1) + zeta_s(ji,1) *            & 
     532                  zindterm(ji,2) = ztsb(ji,1) + zeta_s(ji,1) *            & 
    532533                     ( zradab_s(ji,1) +                         & 
    533                      zkappa_s(ji,0) * zg1s * t_su_b(ji) )  
     534                     zkappa_s(ji,0) * zg1s * t_su_1d(ji) )  
    534535               ENDIF 
    535536            ELSE 
     
    539540               !------------------------------------------------------------------------------| 
    540541               ! 
    541                IF (t_su_b(ji) .LT. rtt) THEN 
     542               IF (t_su_1d(ji) .LT. rtt) THEN 
    542543                  ! 
    543544                  !------------------------------------------------------------------------------| 
     
    553554                  ztrid(ji,numeqmin(ji),2)   =  dzf(ji) - zkappa_i(ji,0)*zg1     
    554555                  ztrid(ji,numeqmin(ji),3)   =  zkappa_i(ji,0)*zg1 
    555                   zindterm(ji,numeqmin(ji))  =  dzf(ji)*t_su_b(ji) - zf(ji) 
     556                  zindterm(ji,numeqmin(ji))  =  dzf(ji)*t_su_1d(ji) - zf(ji) 
    556557 
    557558                  !!first layer of ice equation 
     
    560561                     + zkappa_i(ji,0) * zg1 ) 
    561562                  ztrid(ji,numeqmin(ji)+1,3) =  - zeta_i(ji,1)*zkappa_i(ji,1)   
    562                   zindterm(ji,numeqmin(ji)+1)=  ztiold(ji,1) + zeta_i(ji,1)*zradab_i(ji,1)   
     563                  zindterm(ji,numeqmin(ji)+1)=  ztib(ji,1) + zeta_i(ji,1)*zradab_i(ji,1)   
    563564 
    564565                  !!case of only one layer in the ice (surface & ice equations are altered) 
     
    573574                     ztrid(ji,numeqmin(ji)+1,3)  =  0.0 
    574575 
    575                      zindterm(ji,numeqmin(ji)+1) =  ztiold(ji,1) + zeta_i(ji,1)* & 
    576                         ( zradab_i(ji,1) + zkappa_i(ji,1)*t_bo_b(ji) ) 
     576                     zindterm(ji,numeqmin(ji)+1) =  ztib(ji,1) + zeta_i(ji,1)* & 
     577                        ( zradab_i(ji,1) + zkappa_i(ji,1)*t_bo_1d(ji) ) 
    577578                  ENDIF 
    578579 
     
    593594                     zg1)   
    594595                  ztrid(ji,numeqmin(ji),3)      =  - zeta_i(ji,1) * zkappa_i(ji,1) 
    595                   zindterm(ji,numeqmin(ji))     =  ztiold(ji,1) + zeta_i(ji,1)*( zradab_i(ji,1) + & 
    596                      zkappa_i(ji,0) * zg1 * t_su_b(ji) )  
     596                  zindterm(ji,numeqmin(ji))     =  ztib(ji,1) + zeta_i(ji,1)*( zradab_i(ji,1) + & 
     597                     zkappa_i(ji,0) * zg1 * t_su_1d(ji) )  
    597598 
    598599                  !!case of only one layer in the ice (surface & ice equations are altered) 
     
    602603                        zkappa_i(ji,1)) 
    603604                     ztrid(ji,numeqmin(ji),3)  =  0.0 
    604                      zindterm(ji,numeqmin(ji)) =  ztiold(ji,1) + zeta_i(ji,1)* & 
    605                         (zradab_i(ji,1) + zkappa_i(ji,1)*t_bo_b(ji)) & 
    606                         + t_su_b(ji)*zeta_i(ji,1)*zkappa_i(ji,0)*2.0 
     605                     zindterm(ji,numeqmin(ji)) =  ztib(ji,1) + zeta_i(ji,1)* & 
     606                        (zradab_i(ji,1) + zkappa_i(ji,1)*t_bo_1d(ji)) & 
     607                        + t_su_1d(ji)*zeta_i(ji,1)*zkappa_i(ji,0)*2.0 
    607608                  ENDIF 
    608609 
     
    623624 
    624625         maxnumeqmax = 0 
    625          minnumeqmin = jkmax+4 
     626         minnumeqmin = nlay_i+5 
    626627 
    627628         DO ji = kideb , kiut 
     
    632633         END DO 
    633634 
    634          DO layer = minnumeqmin+1, maxnumeqmax 
    635             DO ji = kideb , kiut 
    636                numeq               =  min(max(numeqmin(ji)+1,layer),numeqmax(ji)) 
     635         DO jk = minnumeqmin+1, maxnumeqmax 
     636            DO ji = kideb , kiut 
     637               numeq               =  min(max(numeqmin(ji)+1,jk),numeqmax(ji)) 
    637638               zdiagbis(ji,numeq)  =  ztrid(ji,numeq,2) - ztrid(ji,numeq,1)* & 
    638639                  ztrid(ji,numeq-1,3)/zdiagbis(ji,numeq-1) 
     
    644645         DO ji = kideb , kiut 
    645646            ! ice temperatures 
    646             t_i_b(ji,nlay_i)    =  zindtbis(ji,numeqmax(ji))/zdiagbis(ji,numeqmax(ji)) 
     647            t_i_1d(ji,nlay_i)    =  zindtbis(ji,numeqmax(ji))/zdiagbis(ji,numeqmax(ji)) 
    647648         END DO 
    648649 
    649650         DO numeq = nlay_i + nlay_s + 1, nlay_s + 2, -1 
    650651            DO ji = kideb , kiut 
    651                layer    =  numeq - nlay_s - 1 
    652                t_i_b(ji,layer)  =  (zindtbis(ji,numeq) - ztrid(ji,numeq,3)* & 
    653                   t_i_b(ji,layer+1))/zdiagbis(ji,numeq) 
     652               jk    =  numeq - nlay_s - 1 
     653               t_i_1d(ji,jk)  =  (zindtbis(ji,numeq) - ztrid(ji,numeq,3)* & 
     654                  t_i_1d(ji,jk+1))/zdiagbis(ji,numeq) 
    654655            END DO 
    655656         END DO 
     
    657658         DO ji = kideb , kiut 
    658659            ! snow temperatures       
    659             IF (ht_s_b(ji).GT.0._wp) & 
    660                t_s_b(ji,nlay_s)     =  (zindtbis(ji,nlay_s+1) - ztrid(ji,nlay_s+1,3) & 
    661                *  t_i_b(ji,1))/zdiagbis(ji,nlay_s+1) & 
    662                *        MAX(0.0,SIGN(1.0,ht_s_b(ji)))  
     660            IF (ht_s_1d(ji).GT.0._wp) & 
     661               t_s_1d(ji,nlay_s)     =  (zindtbis(ji,nlay_s+1) - ztrid(ji,nlay_s+1,3) & 
     662               *  t_i_1d(ji,1))/zdiagbis(ji,nlay_s+1) & 
     663               *        MAX(0.0,SIGN(1.0,ht_s_1d(ji)))  
    663664 
    664665            ! surface temperature 
    665             isnow(ji)     = NINT(  1.0 - MAX( 0.0 , SIGN( 1.0 , -ht_s_b(ji) )  )  ) 
    666             ztsuoldit(ji) = t_su_b(ji) 
    667             IF( t_su_b(ji) < ztfs(ji) ) & 
    668                t_su_b(ji) = ( zindtbis(ji,numeqmin(ji)) - ztrid(ji,numeqmin(ji),3)* ( REAL( isnow(ji) )*t_s_b(ji,1)   & 
    669                &          + REAL( 1 - isnow(ji) )*t_i_b(ji,1) ) ) / zdiagbis(ji,numeqmin(ji))   
     666            isnow(ji)     = NINT(  1.0 - MAX( 0.0 , SIGN( 1.0 , -ht_s_1d(ji) )  )  ) 
     667            ztsubit(ji) = t_su_1d(ji) 
     668            IF( t_su_1d(ji) < ztfs(ji) ) & 
     669               t_su_1d(ji) = ( zindtbis(ji,numeqmin(ji)) - ztrid(ji,numeqmin(ji),3)* ( REAL( isnow(ji) )*t_s_1d(ji,1)   & 
     670               &          + REAL( 1 - isnow(ji) )*t_i_1d(ji,1) ) ) / zdiagbis(ji,numeqmin(ji))   
    670671         END DO 
    671672         ! 
     
    677678         ! zerrit(ji) is a measure of error, it has to be under maxer_i_thd 
    678679         DO ji = kideb , kiut 
    679             t_su_b(ji) =  MAX(  MIN( t_su_b(ji) , ztfs(ji) ) , 190._wp  ) 
    680             zerrit(ji) =  ABS( t_su_b(ji) - ztsuoldit(ji) )      
    681          END DO 
    682  
    683          DO layer  =  1, nlay_s 
    684             DO ji = kideb , kiut 
    685                t_s_b(ji,layer) = MAX(  MIN( t_s_b(ji,layer), rtt ), 190._wp  ) 
    686                zerrit(ji)      = MAX(zerrit(ji),ABS(t_s_b(ji,layer) - ztstemp(ji,layer))) 
    687             END DO 
    688          END DO 
    689  
    690          DO layer  =  1, nlay_i 
    691             DO ji = kideb , kiut 
    692                ztmelt_i        = -tmut * s_i_b(ji,layer) + rtt  
    693                t_i_b(ji,layer) =  MAX(MIN(t_i_b(ji,layer),ztmelt_i), 190._wp) 
    694                zerrit(ji)      =  MAX(zerrit(ji),ABS(t_i_b(ji,layer) - ztitemp(ji,layer))) 
     680            t_su_1d(ji) =  MAX(  MIN( t_su_1d(ji) , ztfs(ji) ) , 190._wp  ) 
     681            zerrit(ji) =  ABS( t_su_1d(ji) - ztsubit(ji) )      
     682         END DO 
     683 
     684         DO jk  =  1, nlay_s 
     685            DO ji = kideb , kiut 
     686               t_s_1d(ji,jk) = MAX(  MIN( t_s_1d(ji,jk), rtt ), 190._wp  ) 
     687               zerrit(ji)      = MAX(zerrit(ji),ABS(t_s_1d(ji,jk) - ztstemp(ji,jk))) 
     688            END DO 
     689         END DO 
     690 
     691         DO jk  =  1, nlay_i 
     692            DO ji = kideb , kiut 
     693               ztmelt_i        = -tmut * s_i_1d(ji,jk) + rtt  
     694               t_i_1d(ji,jk) =  MAX(MIN(t_i_1d(ji,jk),ztmelt_i), 190._wp) 
     695               zerrit(ji)      =  MAX(zerrit(ji),ABS(t_i_1d(ji,jk) - ztitemp(ji,jk))) 
    695696            END DO 
    696697         END DO 
     
    717718      DO ji = kideb, kiut 
    718719         ! forced mode only : update of latent heat fluxes (sublimation) (always >=0, upward flux)  
    719          IF( .NOT. lk_cpl) qla_ice_1d (ji) = MAX( 0._wp, qla_ice_1d (ji) + dqla_ice_1d(ji) * ( t_su_b(ji) - ztsuold(ji) ) ) 
     720         IF( .NOT. lk_cpl) qla_ice_1d (ji) = MAX( 0._wp, qla_ice_1d (ji) + dqla_ice_1d(ji) * ( t_su_1d(ji) - ztsub(ji) ) ) 
    720721         !                                ! surface ice conduction flux 
    721          isnow(ji)       = NINT(  1._wp - MAX( 0._wp, SIGN( 1._wp, -ht_s_b(ji) ) )  ) 
    722          fc_su(ji)       =  -     REAL( isnow(ji) ) * zkappa_s(ji,0) * zg1s * (t_s_b(ji,1) - t_su_b(ji))   & 
    723             &               - REAL( 1 - isnow(ji) ) * zkappa_i(ji,0) * zg1  * (t_i_b(ji,1) - t_su_b(ji)) 
     722         isnow(ji)       = NINT(  1._wp - MAX( 0._wp, SIGN( 1._wp, -ht_s_1d(ji) ) )  ) 
     723         fc_su(ji)       =  -     REAL( isnow(ji) ) * zkappa_s(ji,0) * zg1s * (t_s_1d(ji,1) - t_su_1d(ji))   & 
     724            &               - REAL( 1 - isnow(ji) ) * zkappa_i(ji,0) * zg1  * (t_i_1d(ji,1) - t_su_1d(ji)) 
    724725         !                                ! bottom ice conduction flux 
    725          fc_bo_i(ji)     =  - zkappa_i(ji,nlay_i) * ( zg1*(t_bo_b(ji) - t_i_b(ji,nlay_i)) ) 
     726         fc_bo_i(ji)     =  - zkappa_i(ji,nlay_i) * ( zg1*(t_bo_1d(ji) - t_i_1d(ji,nlay_i)) ) 
    726727      END DO 
    727728 
     
    730731      !----------------------------------------- 
    731732      DO ji = kideb, kiut 
    732          IF( t_su_b(ji) < rtt ) THEN  ! case T_su < 0degC 
    733             hfx_dif_1d(ji) = hfx_dif_1d(ji) + ( qns_ice_1d(ji) + qsr_ice_1d(ji) - zradtr_i(ji,nlay_i) - fc_bo_i(ji) ) * a_i_b(ji) 
     733         IF( t_su_1d(ji) < rtt ) THEN  ! case T_su < 0degC 
     734            hfx_dif_1d(ji) = hfx_dif_1d(ji)  +   & 
     735               &            ( qns_ice_1d(ji) + qsr_ice_1d(ji) - zradtr_i(ji,nlay_i) - fc_bo_i(ji) ) * a_i_1d(ji) 
    734736         ELSE                         ! case T_su = 0degC 
    735             hfx_dif_1d(ji) = hfx_dif_1d(ji) + ( fc_su(ji) + i0(ji) * qsr_ice_1d(ji) - zradtr_i(ji,nlay_i) - fc_bo_i(ji) ) * a_i_b(ji) 
     737            hfx_dif_1d(ji) = hfx_dif_1d(ji) +    & 
     738               &             ( fc_su(ji) + i0(ji) * qsr_ice_1d(ji) - zradtr_i(ji,nlay_i) - fc_bo_i(ji) ) * a_i_1d(ji) 
    736739         ENDIF 
    737740      END DO 
     
    742745      ! --- diag conservation imbalance on heat diffusion - PART 2 --- ! 
    743746      DO ji = kideb, kiut 
    744          zdq(ji)        = - zq_ini(ji) + ( SUM( q_i_b(ji,1:nlay_i) ) * ht_i_b(ji) / REAL( nlay_i ) +  & 
    745             &                              SUM( q_s_b(ji,1:nlay_s) ) * ht_s_b(ji) / REAL( nlay_s ) ) 
     747         zdq(ji)        = - zq_ini(ji) + ( SUM( q_i_1d(ji,1:nlay_i) ) * ht_i_1d(ji) / REAL( nlay_i ) +  & 
     748            &                              SUM( q_s_1d(ji,1:nlay_s) ) * ht_s_1d(ji) / REAL( nlay_s ) ) 
    746749         zhfx_err(ji)   = ( fc_su(ji) + i0(ji) * qsr_ice_1d(ji) - zradtr_i(ji,nlay_i) - fc_bo_i(ji) + zdq(ji) * r1_rdtice )  
    747          hfx_err_1d(ji) = hfx_err_1d(ji) + zhfx_err(ji) * a_i_b(ji) 
     750         hfx_err_1d(ji) = hfx_err_1d(ji) + zhfx_err(ji) * a_i_1d(ji) 
    748751      END DO  
    749752 
     
    767770      DO ji = kideb, kiut 
    768771         ii = MOD( npb(ji) - 1, jpi ) + 1 ; ij = ( npb(ji) - 1 ) / jpi + 1 
    769          hfx_in (ii,ij) = hfx_in (ii,ij) + a_i_b(ji) * ( qsr_ice_1d(ji) + qns_ice_1d(ji) ) 
     772         hfx_in (ii,ij) = hfx_in (ii,ij) + a_i_1d(ji) * ( qsr_ice_1d(ji) + qns_ice_1d(ji) ) 
    770773      END DO 
    771774    
    772775      ! 
    773776      CALL wrk_dealloc( jpij, numeqmin, numeqmax, isnow ) 
    774       CALL wrk_dealloc( jpij, ztfs, ztsuold, ztsuoldit, zh_i, zh_s, zfsw ) 
     777      CALL wrk_dealloc( jpij, ztfs, ztsub, ztsubit, zh_i, zh_s, zfsw ) 
    775778      CALL wrk_dealloc( jpij, zf, dzf, zerrit, zdifcase, zftrice, zihic, zhsu ) 
    776       CALL wrk_dealloc( jpij, nlay_i+1, ztcond_i, zradtr_i, zradab_i, zkappa_i, ztiold, zeta_i, ztitemp, z_i, zspeche_i, kjstart = 0 ) 
    777       CALL wrk_dealloc( jpij, nlay_s+1,           zradtr_s, zradab_s, zkappa_s, ztsold, zeta_s, ztstemp, z_s, kjstart = 0 ) 
    778       CALL wrk_dealloc( jpij, jkmax+2, zindterm, zindtbis, zdiagbis ) 
    779       CALL wrk_dealloc( jpij, jkmax+2, 3, ztrid ) 
     779      CALL wrk_dealloc( jpij, nlay_i+1, ztcond_i, zradtr_i, zradab_i, zkappa_i,   & 
     780         &              ztib, zeta_i, ztitemp, z_i, zspeche_i, kjstart = 0 ) 
     781      CALL wrk_dealloc( jpij, nlay_s+1,           zradtr_s, zradab_s, zkappa_s, ztsb, zeta_s, ztstemp, z_s, kjstart = 0 ) 
     782      CALL wrk_dealloc( jpij, nlay_i+3, zindterm, zindtbis, zdiagbis ) 
     783      CALL wrk_dealloc( jpij, nlay_i+3, 3, ztrid ) 
    780784      CALL wrk_dealloc( jpij, zdq, zq_ini, zhfx_err ) 
    781785 
     
    798802      DO jk = 1, nlay_i             ! Sea ice energy of melting 
    799803         DO ji = kideb, kiut 
    800             ztmelts      = - tmut  * s_i_b(ji,jk) + rtt  
    801             zindb        = MAX( 0._wp , SIGN( 1._wp , -(t_i_b(ji,jk) - rtt) - epsi10 ) ) 
    802             q_i_b(ji,jk) = rhoic * ( cpic * ( ztmelts - t_i_b(ji,jk) )                                             & 
    803                &                   + lfus * ( 1.0 - zindb * ( ztmelts-rtt ) / MIN( t_i_b(ji,jk)-rtt, -epsi10 ) )   & 
     804            ztmelts      = - tmut  * s_i_1d(ji,jk) + rtt  
     805            zindb        = MAX( 0._wp , SIGN( 1._wp , -(t_i_1d(ji,jk) - rtt) - epsi10 ) ) 
     806            q_i_1d(ji,jk) = rhoic * ( cpic * ( ztmelts - t_i_1d(ji,jk) )                                             & 
     807               &                   + lfus * ( 1.0 - zindb * ( ztmelts-rtt ) / MIN( t_i_1d(ji,jk)-rtt, -epsi10 ) )   & 
    804808               &                   - rcp  *                 ( ztmelts-rtt )  )  
    805809         END DO 
     
    807811      DO jk = 1, nlay_s             ! Snow energy of melting 
    808812         DO ji = kideb, kiut 
    809             q_s_b(ji,jk) = rhosn * ( cpic * ( rtt - t_s_b(ji,jk) ) + lfus ) 
     813            q_s_1d(ji,jk) = rhosn * ( cpic * ( rtt - t_s_1d(ji,jk) ) + lfus ) 
    810814         END DO 
    811815      END DO 
  • branches/2014/dev_CNRS_2014/NEMOGCM/NEMO/LIM_SRC_3/limthd_ent.F90

    r4900 r4902  
    146146      ! then we should not (* a_i) again but not important since this is just to check that remap error is ~0 
    147147      DO ji = kideb, kiut 
    148          hfx_err_rem_1d(ji) = hfx_err_rem_1d(ji) + a_i_b(ji) * r1_rdtice *  & 
     148         hfx_err_rem_1d(ji) = hfx_err_rem_1d(ji) + a_i_1d(ji) * r1_rdtice *  & 
    149149            &               ( SUM( qnew(ji,1:nlay_i) ) * zhnew(ji) - SUM( qh_i_old(ji,0:nlay_i+1) ) )  
    150150      END DO 
  • branches/2014/dev_CNRS_2014/NEMOGCM/NEMO/LIM_SRC_3/limthd_lac.F90

    r4901 r4902  
    7272      !!             - Computation of variation of ice volume and mass 
    7373      !!             - Computation of frldb after lateral accretion and  
    74       !!               update ht_s_b, ht_i_b and tbif_1d(:,:)       
     74      !!               update ht_s_1d, ht_i_1d and tbif_1d(:,:)       
    7575      !!------------------------------------------------------------------------ 
    76       INTEGER ::   ji,jj,jk,jl,jm   ! dummy loop indices 
    77       INTEGER ::   layer, nbpac     ! local integers  
    78       INTEGER ::   ii, ij, iter   !   -       - 
     76      INTEGER ::   ji,jj,jk,jl      ! dummy loop indices 
     77      INTEGER ::   nbpac            ! local integers  
     78      INTEGER ::   ii, ij, iter     !   -       - 
    7979      REAL(wp)  ::   ztmelts, zdv, zfrazb, zweight, zindb, zinda, zde  ! local scalars 
    8080      REAL(wp) ::   zgamafr, zvfrx, zvgx, ztaux, ztwogp, zf , zhicol_new        !   -      - 
     
    9090      REAL(wp) ::   zv_newfra 
    9191   
    92       INTEGER , POINTER, DIMENSION(:) ::   jcat      ! indexes of categories where new ice grows 
     92      INTEGER , POINTER, DIMENSION(:) ::   jcat        ! indexes of categories where new ice grows 
    9393      REAL(wp), POINTER, DIMENSION(:) ::   zswinew     ! switch for new ice or not 
    9494 
     
    102102      REAL(wp), POINTER, DIMENSION(:) ::   zda_res     ! residual area in case of excessive heat budget 
    103103      REAL(wp), POINTER, DIMENSION(:) ::   zat_i_1d    ! total ice fraction     
    104       REAL(wp), POINTER, DIMENSION(:) ::   zat_i_lev   ! total ice fraction for level ice only (type 1)    
    105       REAL(wp), POINTER, DIMENSION(:) ::   zv_frazb   ! accretion of frazil ice at the ice bottom 
     104      REAL(wp), POINTER, DIMENSION(:) ::   zv_frazb    ! accretion of frazil ice at the ice bottom 
    106105      REAL(wp), POINTER, DIMENSION(:) ::   zvrel_1d    ! relative ice / frazil velocity (1D vector) 
    107106 
    108       REAL(wp), POINTER, DIMENSION(:,:) ::   zv_old      ! old volume of ice in category jl 
    109       REAL(wp), POINTER, DIMENSION(:,:) ::   za_old      ! old area of ice in category jl 
    110       REAL(wp), POINTER, DIMENSION(:,:) ::   za_i_1d     ! 1-D version of a_i 
    111       REAL(wp), POINTER, DIMENSION(:,:) ::   zv_i_1d     ! 1-D version of v_i 
    112       REAL(wp), POINTER, DIMENSION(:,:) ::   zoa_i_1d    ! 1-D version of oa_i 
    113       REAL(wp), POINTER, DIMENSION(:,:) ::   zsmv_i_1d   ! 1-D version of smv_i 
    114  
    115       REAL(wp), POINTER, DIMENSION(:,:,:) ::   ze_i_1d   !: 1-D version of e_i 
     107      REAL(wp), POINTER, DIMENSION(:,:) ::   zv_b      ! old volume of ice in category jl 
     108      REAL(wp), POINTER, DIMENSION(:,:) ::   za_b      ! old area of ice in category jl 
     109      REAL(wp), POINTER, DIMENSION(:,:) ::   za_i_1d   ! 1-D version of a_i 
     110      REAL(wp), POINTER, DIMENSION(:,:) ::   zv_i_1d   ! 1-D version of v_i 
     111      REAL(wp), POINTER, DIMENSION(:,:) ::   zoa_i_1d  ! 1-D version of oa_i 
     112      REAL(wp), POINTER, DIMENSION(:,:) ::   zsmv_i_1d ! 1-D version of smv_i 
     113 
     114      REAL(wp), POINTER, DIMENSION(:,:,:) ::   ze_i_1d !: 1-D version of e_i 
    116115 
    117116      REAL(wp), POINTER, DIMENSION(:,:) ::   zvrel                   ! relative ice / frazil velocity 
     
    120119      CALL wrk_alloc( jpij, jcat )   ! integer 
    121120      CALL wrk_alloc( jpij, zswinew, zv_newice, za_newice, zh_newice, ze_newice, zs_newice, zo_newice ) 
    122       CALL wrk_alloc( jpij, zdv_res, zda_res, zat_i_1d, zat_i_lev, zv_frazb, zvrel_1d ) 
    123       CALL wrk_alloc( jpij,jpl, zv_old, za_old, za_i_1d, zv_i_1d, zoa_i_1d, zsmv_i_1d ) 
    124       CALL wrk_alloc( jpij,jkmax,jpl, ze_i_1d ) 
     121      CALL wrk_alloc( jpij, zdv_res, zda_res, zat_i_1d, zv_frazb, zvrel_1d ) 
     122      CALL wrk_alloc( jpij,jpl, zv_b, za_b, za_i_1d, zv_i_1d, zoa_i_1d, zsmv_i_1d ) 
     123      CALL wrk_alloc( jpij,nlay_i+1,jpl, ze_i_1d ) 
    125124      CALL wrk_alloc( jpi,jpj, zvrel ) 
    126125 
     
    303302 
    304303         CALL tab_2d_1d( nbpac, qlead_1d  (1:nbpac)     , qlead  , jpi, jpj, npac(1:nbpac) ) 
    305          CALL tab_2d_1d( nbpac, t_bo_b    (1:nbpac)     , t_bo   , jpi, jpj, npac(1:nbpac) ) 
     304         CALL tab_2d_1d( nbpac, t_bo_1d   (1:nbpac)     , t_bo   , jpi, jpj, npac(1:nbpac) ) 
    306305         CALL tab_2d_1d( nbpac, sfx_opw_1d(1:nbpac)     , sfx_opw, jpi, jpj, npac(1:nbpac) ) 
    307306         CALL tab_2d_1d( nbpac, wfx_opw_1d(1:nbpac)     , wfx_opw, jpi, jpj, npac(1:nbpac) ) 
    308          CALL tab_2d_1d( nbpac, wfx_opw_1d(1:nbpac)     , wfx_opw, jpi, jpj, npac(1:nbpac) ) 
    309          CALL tab_2d_1d( nbpac, hicol_b   (1:nbpac)     , hicol  , jpi, jpj, npac(1:nbpac) ) 
     307         CALL tab_2d_1d( nbpac, hicol_1d  (1:nbpac)     , hicol  , jpi, jpj, npac(1:nbpac) ) 
    310308         CALL tab_2d_1d( nbpac, zvrel_1d  (1:nbpac)     , zvrel  , jpi, jpj, npac(1:nbpac) ) 
    311309 
     
    320318         ! Keep old ice areas and volume in memory 
    321319         !----------------------------------------- 
    322          zv_old(1:nbpac,:) = zv_i_1d(1:nbpac,:)  
    323          za_old(1:nbpac,:) = za_i_1d(1:nbpac,:) 
     320         zv_b(1:nbpac,:) = zv_i_1d(1:nbpac,:)  
     321         za_b(1:nbpac,:) = za_i_1d(1:nbpac,:) 
    324322         !---------------------- 
    325323         ! Thickness of new ice 
     
    328326            zh_newice(ji) = hiccrit 
    329327         END DO 
    330          IF( fraz_swi == 1 ) zh_newice(1:nbpac) = hicol_b(1:nbpac) 
     328         IF( fraz_swi == 1 ) zh_newice(1:nbpac) = hicol_1d(1:nbpac) 
    331329 
    332330         !---------------------- 
     
    352350         DO ji = 1, nbpac 
    353351            ztmelts       = - tmut * zs_newice(ji) + rtt                  ! Melting point (K) 
    354             ze_newice(ji) =   rhoic * (  cpic * ( ztmelts - t_bo_b(ji) )                             & 
    355                &                       + lfus * ( 1.0 - ( ztmelts - rtt ) / MIN( t_bo_b(ji) - rtt, -epsi10 ) )   & 
     352            ze_newice(ji) =   rhoic * (  cpic * ( ztmelts - t_bo_1d(ji) )                             & 
     353               &                       + lfus * ( 1.0 - ( ztmelts - rtt ) / MIN( t_bo_1d(ji) - rtt, -epsi10 ) )   & 
    356354               &                       - rcp  *         ( ztmelts - rtt )  ) 
    357355         END DO ! ji 
     
    371369            zEi           = - ze_newice(ji) / rhoic                ! specific enthalpy of forming ice [J/kg] 
    372370 
    373             zEw           = rcp * ( t_bo_b(ji) - rt0 )             ! specific enthalpy of seawater at t_bo_b [J/kg] 
     371            zEw           = rcp * ( t_bo_1d(ji) - rt0 )             ! specific enthalpy of seawater at t_bo_1d [J/kg] 
    374372                                                                   ! clem: we suppose we are already at the freezing point (condition qlead<0 is satisfyied)  
    375373                                                                    
     
    442440         DO ji = 1, nbpac 
    443441            jl = jcat(ji)                                                    ! categroy in which new ice is put 
    444             zswinew  (ji) = MAX( 0._wp , SIGN( 1._wp , - za_old(ji,jl) ) )   ! 0 if old ice 
     442            zswinew  (ji) = MAX( 0._wp , SIGN( 1._wp , - za_b(ji,jl) ) )   ! 0 if old ice 
    445443         END DO 
    446444 
     
    450448               zinda = MAX( 0._wp, SIGN( 1._wp , zv_i_1d(ji,jl) - epsi20 ) ) 
    451449               ze_i_1d(ji,jk,jl) = zswinew(ji)   *   ze_newice(ji) +                                                      & 
    452                   &        ( 1.0 - zswinew(ji) ) * ( ze_newice(ji) * zv_newice(ji) + ze_i_1d(ji,jk,jl) * zv_old(ji,jl) )  & 
     450                  &        ( 1.0 - zswinew(ji) ) * ( ze_newice(ji) * zv_newice(ji) + ze_i_1d(ji,jk,jl) * zv_b(ji,jl) )  & 
    453451                  &        * zinda / MAX( zv_i_1d(ji,jl), epsi20 ) 
    454452            END DO 
     
    492490            DO ji = 1, nbpac 
    493491               zindb = 1._wp - MAX( 0._wp , SIGN( 1._wp , - za_i_1d(ji,jl) + epsi20 ) )  ! 0 if no ice and 1 if yes 
    494                zoa_i_1d(ji,jl)  = za_old(ji,jl) * zoa_i_1d(ji,jl) / MAX( za_i_1d(ji,jl) , epsi20 ) * zindb    
     492               zoa_i_1d(ji,jl)  = za_b(ji,jl) * zoa_i_1d(ji,jl) / MAX( za_i_1d(ji,jl) , epsi20 ) * zindb    
    495493            END DO  
    496494         END DO    
     
    501499         DO jl = 1, jpl 
    502500            DO ji = 1, nbpac 
    503                zdv   = zv_i_1d(ji,jl) - zv_old(ji,jl) 
     501               zdv   = zv_i_1d(ji,jl) - zv_b(ji,jl) 
    504502               zsmv_i_1d(ji,jl) = zsmv_i_1d(ji,jl) + zdv * zs_newice(ji) 
    505503            END DO 
     
    520518         CALL tab_1d_2d( nbpac, sfx_opw, npac(1:nbpac), sfx_opw_1d(1:nbpac), jpi, jpj ) 
    521519         CALL tab_1d_2d( nbpac, wfx_opw, npac(1:nbpac), wfx_opw_1d(1:nbpac), jpi, jpj ) 
    522          CALL tab_1d_2d( nbpac, wfx_opw, npac(1:nbpac), wfx_opw_1d(1:nbpac), jpi, jpj ) 
    523520 
    524521         CALL tab_1d_2d( nbpac, hfx_thd, npac(1:nbpac), hfx_thd_1d(1:nbpac), jpi, jpj ) 
     
    544541      CALL wrk_dealloc( jpij, jcat )   ! integer 
    545542      CALL wrk_dealloc( jpij, zswinew, zv_newice, za_newice, zh_newice, ze_newice, zs_newice, zo_newice ) 
    546       CALL wrk_dealloc( jpij, zdv_res, zda_res, zat_i_1d, zat_i_lev, zv_frazb, zvrel_1d ) 
    547       CALL wrk_dealloc( jpij,jpl, zv_old, za_old, za_i_1d, zv_i_1d, zoa_i_1d, zsmv_i_1d ) 
    548       CALL wrk_dealloc( jpij,jkmax,jpl, ze_i_1d ) 
     543      CALL wrk_dealloc( jpij, zdv_res, zda_res, zat_i_1d, zv_frazb, zvrel_1d ) 
     544      CALL wrk_dealloc( jpij,jpl, zv_b, za_b, za_i_1d, zv_i_1d, zoa_i_1d, zsmv_i_1d ) 
     545      CALL wrk_dealloc( jpij,nlay_i+1,jpl, ze_i_1d ) 
    549546      CALL wrk_dealloc( jpi,jpj, zvrel ) 
    550547      ! 
  • branches/2014/dev_CNRS_2014/NEMOGCM/NEMO/LIM_SRC_3/limthd_sal.F90

    r4900 r4902  
    6060      !--------------------------------------------------------- 
    6161      DO ji = kideb, kiut 
    62          sm_i_b(ji) = sm_i_b(ji) + dsm_i_se_1d(ji) + dsm_i_si_1d(ji) 
     62         sm_i_1d(ji) = sm_i_1d(ji) + dsm_i_se_1d(ji) + dsm_i_si_1d(ji) 
    6363      END DO 
    6464  
     
    6666      ! 1) Constant salinity, constant in time                                       | 
    6767      !------------------------------------------------------------------------------| 
    68 !!gm comment: if num_sal = 1 s_i_new, s_i_b and sm_i_b can be set to bulk_sal one for all in the initialisation phase !! 
     68!!gm comment: if num_sal = 1 s_i_new, s_i_1d and sm_i_1d can be set to bulk_sal one for all in the initialisation phase !! 
    6969!!gm           ===>>>   simplification of almost all test on num_sal value 
    7070      IF(  num_sal == 1  ) THEN 
    71             s_i_b (kideb:kiut,1:nlay_i) =  bulk_sal 
    72             sm_i_b (kideb:kiut)          =  bulk_sal  
     71            s_i_1d (kideb:kiut,1:nlay_i) =  bulk_sal 
     72            sm_i_1d(kideb:kiut)          =  bulk_sal  
    7373            s_i_new(kideb:kiut)          =  bulk_sal 
    7474      ENDIF 
     
    8383            ! Switches  
    8484            !---------- 
    85             iflush  = MAX( 0._wp , SIGN( 1._wp , t_su_b(ji) - rtt )        )    ! =1 if summer  
    86             igravdr = MAX( 0._wp , SIGN( 1._wp , t_bo_b(ji) - t_su_b(ji) ) )    ! =1 if t_su < t_bo 
     85            iflush  = MAX( 0._wp , SIGN( 1._wp , t_su_1d(ji) - rtt )        )     ! =1 if summer  
     86            igravdr = MAX( 0._wp , SIGN( 1._wp , t_bo_1d(ji) - t_su_1d(ji) ) )    ! =1 if t_su < t_bo 
    8787 
    8888            !--------------------- 
     
    9090            !--------------------- 
    9191            ! drainage by gravity drainage 
    92             dsm_i_gd_1d(ji) = - igravdr * MAX( sm_i_b(ji) - sal_G , 0._wp ) / time_G * rdt_ice  
     92            dsm_i_gd_1d(ji) = - igravdr * MAX( sm_i_1d(ji) - sal_G , 0._wp ) / time_G * rdt_ice  
    9393            ! drainage by flushing   
    94             dsm_i_fl_1d(ji) = - iflush  * MAX( sm_i_b(ji) - sal_F , 0._wp ) / time_F * rdt_ice 
     94            dsm_i_fl_1d(ji) = - iflush  * MAX( sm_i_1d(ji) - sal_F , 0._wp ) / time_F * rdt_ice 
    9595 
    9696            !----------------- 
     
    9999            ! only drainage terms ( gravity drainage and flushing ) 
    100100            ! snow ice / bottom sources are added in lim_thd_ent to conserve energy 
    101             sm_i_b(ji) = sm_i_b(ji) + dsm_i_fl_1d(ji) + dsm_i_gd_1d(ji) 
     101            sm_i_1d(ji) = sm_i_1d(ji) + dsm_i_fl_1d(ji) + dsm_i_gd_1d(ji) 
    102102 
    103103            !---------------------------- 
    104104            ! Salt flux - brine drainage 
    105105            !---------------------------- 
    106             sfx_bri_1d(ji) = sfx_bri_1d(ji) - rhoic * a_i_b(ji) * ht_i_b(ji) * ( dsm_i_fl_1d(ji) + dsm_i_gd_1d(ji) ) * r1_rdtice 
     106            sfx_bri_1d(ji) = sfx_bri_1d(ji) - rhoic * a_i_1d(ji) * ht_i_1d(ji) * ( dsm_i_fl_1d(ji) + dsm_i_gd_1d(ji) ) * r1_rdtice 
    107107 
    108108         END DO 
  • branches/2014/dev_CNRS_2014/NEMOGCM/NEMO/LIM_SRC_3/limtrp.F90

    r4900 r4902  
    6363      INTEGER, INTENT(in) ::   kt   ! number of iteration 
    6464      ! 
    65       INTEGER  ::   ji, jj, jk, jl, layer   ! dummy loop indices 
     65      INTEGER  ::   ji, jj, jk, jl, jn      ! dummy loop indices 
    6666      INTEGER  ::   initad                  ! number of sub-timestep for the advection 
    6767      INTEGER  ::   ierr                    ! error status 
     
    8585      CALL wrk_alloc( jpi, jpj, zui_u, zvi_v, zsm, zs0at, zs0ow, zeiold, zesold ) 
    8686      CALL wrk_alloc( jpi, jpj, jpl, zs0ice, zs0sn, zs0a, zs0c0 , zs0sm , zs0oi ) 
    87       CALL wrk_alloc( jpi, jpj, jkmax, jpl, zs0e ) 
     87      CALL wrk_alloc( jpi, jpj, nlay_i+1, jpl, zs0e ) 
    8888 
    8989      CALL wrk_alloc( jpi, jpj, jpl, zaiold, zhimax, zviold, zvsold )   ! clem 
     
    167167 
    168168         IF( MOD( ( kt - 1) / nn_fsbc , 2 ) == 0 ) THEN       !==  odd ice time step:  adv_x then adv_y  ==! 
    169             DO jk = 1,initad 
     169            DO jn = 1,initad 
    170170               CALL lim_adv_x( zusnit, u_ice, 1._wp , zsm, zs0ow (:,:), sxopw(:,:),   &             !--- ice open water area 
    171171                  &                                       sxxopw(:,:), syopw(:,:), syyopw(:,:), sxyopw(:,:)  ) 
     
    197197                  CALL lim_adv_y( zusnit, v_ice, 0._wp, zsm, zs0c0 (:,:,jl), sxc0 (:,:,jl),   & 
    198198                     &                                       sxxc0 (:,:,jl), syc0 (:,:,jl), syyc0 (:,:,jl), sxyc0 (:,:,jl)  ) 
    199                   DO layer = 1, nlay_i                                                           !--- ice heat contents --- 
    200                      CALL lim_adv_x( zusnit, u_ice, 1._wp , zsm, zs0e(:,:,layer,jl), sxe (:,:,layer,jl),   &  
    201                         &                                       sxxe(:,:,layer,jl), sye (:,:,layer,jl),   & 
    202                         &                                       syye(:,:,layer,jl), sxye(:,:,layer,jl) ) 
    203                      CALL lim_adv_y( zusnit, v_ice, 0._wp, zsm, zs0e(:,:,layer,jl), sxe (:,:,layer,jl),   &  
    204                         &                                       sxxe(:,:,layer,jl), sye (:,:,layer,jl),   & 
    205                         &                                       syye(:,:,layer,jl), sxye(:,:,layer,jl) ) 
     199                  DO jk = 1, nlay_i                                                           !--- ice heat contents --- 
     200                     CALL lim_adv_x( zusnit, u_ice, 1._wp , zsm, zs0e(:,:,jk,jl), sxe (:,:,jk,jl),   &  
     201                        &                                       sxxe(:,:,jk,jl), sye (:,:,jk,jl),   & 
     202                        &                                       syye(:,:,jk,jl), sxye(:,:,jk,jl) ) 
     203                     CALL lim_adv_y( zusnit, v_ice, 0._wp, zsm, zs0e(:,:,jk,jl), sxe (:,:,jk,jl),   &  
     204                        &                                       sxxe(:,:,jk,jl), sye (:,:,jk,jl),   & 
     205                        &                                       syye(:,:,jk,jl), sxye(:,:,jk,jl) ) 
    206206                  END DO 
    207207               END DO 
    208208            END DO 
    209209         ELSE 
    210             DO jk = 1, initad 
     210            DO jn = 1, initad 
    211211               CALL lim_adv_y( zusnit, v_ice, 1._wp , zsm, zs0ow (:,:), sxopw(:,:),   &             !--- ice open water area 
    212212                  &                                       sxxopw(:,:), syopw(:,:), syyopw(:,:), sxyopw(:,:)  ) 
     
    239239                  CALL lim_adv_x( zusnit, u_ice, 0._wp, zsm, zs0c0 (:,:,jl), sxc0 (:,:,jl),   & 
    240240                     &                                       sxxc0 (:,:,jl), syc0 (:,:,jl), syyc0 (:,:,jl), sxyc0 (:,:,jl)  ) 
    241                   DO layer = 1, nlay_i                                                           !--- ice heat contents --- 
    242                      CALL lim_adv_y( zusnit, v_ice, 1._wp , zsm, zs0e(:,:,layer,jl), sxe (:,:,layer,jl),   &  
    243                         &                                       sxxe(:,:,layer,jl), sye (:,:,layer,jl),   & 
    244                         &                                       syye(:,:,layer,jl), sxye(:,:,layer,jl) ) 
    245                      CALL lim_adv_x( zusnit, u_ice, 0._wp, zsm, zs0e(:,:,layer,jl), sxe (:,:,layer,jl),   &  
    246                         &                                       sxxe(:,:,layer,jl), sye (:,:,layer,jl),   & 
    247                         &                                       syye(:,:,layer,jl), sxye(:,:,layer,jl) ) 
     241                  DO jk = 1, nlay_i                                                           !--- ice heat contents --- 
     242                     CALL lim_adv_y( zusnit, v_ice, 1._wp , zsm, zs0e(:,:,jk,jl), sxe (:,:,jk,jl),   &  
     243                        &                                       sxxe(:,:,jk,jl), sye (:,:,jk,jl),   & 
     244                        &                                       syye(:,:,jk,jl), sxye(:,:,jk,jl) ) 
     245                     CALL lim_adv_x( zusnit, u_ice, 0._wp, zsm, zs0e(:,:,jk,jl), sxe (:,:,jk,jl),   &  
     246                        &                                       sxxe(:,:,jk,jl), sye (:,:,jk,jl),   & 
     247                        &                                       syye(:,:,jk,jl), sxye(:,:,jk,jl) ) 
    248248                  END DO 
    249249               END DO 
     
    506506      CALL wrk_dealloc( jpi, jpj, zui_u, zvi_v, zsm, zs0at, zs0ow, zeiold, zesold ) 
    507507      CALL wrk_dealloc( jpi, jpj, jpl, zs0ice, zs0sn, zs0a, zs0c0 , zs0sm , zs0oi ) 
    508       CALL wrk_dealloc( jpi, jpj, jkmax, jpl, zs0e ) 
     508      CALL wrk_dealloc( jpi, jpj, nlay_i+1, jpl, zs0e ) 
    509509 
    510510      CALL wrk_dealloc( jpi, jpj, jpl, zviold, zvsold, zaiold, zhimax )   ! clem 
  • branches/2014/dev_CNRS_2014/NEMOGCM/NEMO/LIM_SRC_3/limupdate1.F90

    r4900 r4902  
    6969      !!                 
    7070      !!--------------------------------------------------------------------- 
    71       INTEGER  ::   ji, jj, jk, jl, jm    ! dummy loop indices 
    72       INTEGER  ::   jbnd1, jbnd2 
     71      INTEGER  ::   ji, jj, jk, jl   ! dummy loop indices 
    7372      INTEGER  ::   i_ice_switch 
    7473      REAL(wp) ::   zsal 
     
    9392      ! Rebin categories with thickness out of bounds 
    9493      !---------------------------------------------------- 
    95       DO jm = 1, jpm 
    96          jbnd1 = ice_cat_bounds(jm,1) 
    97          jbnd2 = ice_cat_bounds(jm,2) 
    98          IF (ice_ncat_types(jm) .GT. 1 )   CALL lim_itd_th_reb(jbnd1, jbnd2, jm) 
    99       END DO 
     94      IF ( jpl > 1 )   CALL lim_itd_th_reb(1, jpl) 
    10095 
    10196      at_i(:,:) = 0._wp 
     
    126121      ! Final thickness distribution rebinning 
    127122      ! -------------------------------------- 
    128       DO jm = 1, jpm 
    129          jbnd1 = ice_cat_bounds(jm,1) 
    130          jbnd2 = ice_cat_bounds(jm,2) 
    131          IF (ice_ncat_types(jm) .GT. 1 ) CALL lim_itd_th_reb(jbnd1, jbnd2, jm) 
    132          IF (ice_ncat_types(jm) .EQ. 1 ) THEN 
    133          ENDIF 
    134       END DO 
     123      IF ( jpl > 1 ) CALL lim_itd_th_reb(1, jpl) 
    135124 
    136125      !----------------- 
     
    161150      ! Diagnostics 
    162151      ! ------------------------------------------------- 
    163       d_u_ice_dyn(:,:)     = u_ice(:,:)     - old_u_ice(:,:) 
    164       d_v_ice_dyn(:,:)     = v_ice(:,:)     - old_v_ice(:,:) 
    165       d_a_i_trp  (:,:,:)   = a_i  (:,:,:)   - old_a_i  (:,:,:) 
    166       d_v_s_trp  (:,:,:)   = v_s  (:,:,:)   - old_v_s  (:,:,:)   
    167       d_v_i_trp  (:,:,:)   = v_i  (:,:,:)   - old_v_i  (:,:,:)    
    168       d_e_s_trp  (:,:,:,:) = e_s  (:,:,:,:) - old_e_s  (:,:,:,:)   
    169       d_e_i_trp  (:,:,1:nlay_i,:) = e_i  (:,:,1:nlay_i,:) - old_e_i(:,:,1:nlay_i,:) 
    170       d_oa_i_trp (:,:,:)   = oa_i (:,:,:)   - old_oa_i (:,:,:) 
     152      d_u_ice_dyn(:,:)     = u_ice(:,:)     - u_ice_b(:,:) 
     153      d_v_ice_dyn(:,:)     = v_ice(:,:)     - v_ice_b(:,:) 
     154      d_a_i_trp  (:,:,:)   = a_i  (:,:,:)   - a_i_b  (:,:,:) 
     155      d_v_s_trp  (:,:,:)   = v_s  (:,:,:)   - v_s_b  (:,:,:)   
     156      d_v_i_trp  (:,:,:)   = v_i  (:,:,:)   - v_i_b  (:,:,:)    
     157      d_e_s_trp  (:,:,:,:) = e_s  (:,:,:,:) - e_s_b  (:,:,:,:)   
     158      d_e_i_trp  (:,:,1:nlay_i,:) = e_i  (:,:,1:nlay_i,:) - e_i_b(:,:,1:nlay_i,:) 
     159      d_oa_i_trp (:,:,:)   = oa_i (:,:,:)   - oa_i_b (:,:,:) 
    171160      d_smv_i_trp(:,:,:)   = 0._wp 
    172       IF(  num_sal == 2  ) d_smv_i_trp(:,:,:) = smv_i(:,:,:) - old_smv_i(:,:,:) 
     161      IF(  num_sal == 2  ) d_smv_i_trp(:,:,:) = smv_i(:,:,:) - smv_i_b(:,:,:) 
    173162 
    174163      ! conservation test 
     
    186175         CALL prt_ctl(tab2d_1=u_ice      , clinfo1=' lim_update1  : u_ice       :', tab2d_2=v_ice      , clinfo2=' v_ice       :') 
    187176         CALL prt_ctl(tab2d_1=d_u_ice_dyn, clinfo1=' lim_update1  : d_u_ice_dyn :', tab2d_2=d_v_ice_dyn, clinfo2=' d_v_ice_dyn :') 
    188          CALL prt_ctl(tab2d_1=old_u_ice  , clinfo1=' lim_update1  : old_u_ice   :', tab2d_2=old_v_ice  , clinfo2=' old_v_ice   :') 
     177         CALL prt_ctl(tab2d_1=u_ice_b    , clinfo1=' lim_update1  : u_ice_b     :', tab2d_2=v_ice_b    , clinfo2=' v_ice_b     :') 
    189178 
    190179         DO jl = 1, jpl 
     
    199188            CALL prt_ctl(tab2d_1=o_i        (:,:,jl)        , clinfo1= ' lim_update1  : o_i         : ') 
    200189            CALL prt_ctl(tab2d_1=a_i        (:,:,jl)        , clinfo1= ' lim_update1  : a_i         : ') 
    201             CALL prt_ctl(tab2d_1=old_a_i    (:,:,jl)        , clinfo1= ' lim_update1  : old_a_i     : ') 
     190            CALL prt_ctl(tab2d_1=a_i_b      (:,:,jl)        , clinfo1= ' lim_update1  : a_i_b       : ') 
    202191            CALL prt_ctl(tab2d_1=d_a_i_trp  (:,:,jl)        , clinfo1= ' lim_update1  : d_a_i_trp   : ') 
    203192            CALL prt_ctl(tab2d_1=v_i        (:,:,jl)        , clinfo1= ' lim_update1  : v_i         : ') 
    204             CALL prt_ctl(tab2d_1=old_v_i    (:,:,jl)        , clinfo1= ' lim_update1  : old_v_i     : ') 
     193            CALL prt_ctl(tab2d_1=v_i_b      (:,:,jl)        , clinfo1= ' lim_update1  : v_i_b       : ') 
    205194            CALL prt_ctl(tab2d_1=d_v_i_trp  (:,:,jl)        , clinfo1= ' lim_update1  : d_v_i_trp   : ') 
    206195            CALL prt_ctl(tab2d_1=v_s        (:,:,jl)        , clinfo1= ' lim_update1  : v_s         : ') 
    207             CALL prt_ctl(tab2d_1=old_v_s    (:,:,jl)        , clinfo1= ' lim_update1  : old_v_s     : ') 
     196            CALL prt_ctl(tab2d_1=v_s_b      (:,:,jl)        , clinfo1= ' lim_update1  : v_s_b       : ') 
    208197            CALL prt_ctl(tab2d_1=d_v_s_trp  (:,:,jl)        , clinfo1= ' lim_update1  : d_v_s_trp   : ') 
    209198            CALL prt_ctl(tab2d_1=e_i        (:,:,1,jl)/1.0e9, clinfo1= ' lim_update1  : e_i1        : ') 
    210             CALL prt_ctl(tab2d_1=old_e_i    (:,:,1,jl)/1.0e9, clinfo1= ' lim_update1  : old_e_i1    : ') 
     199            CALL prt_ctl(tab2d_1=e_i_b      (:,:,1,jl)/1.0e9, clinfo1= ' lim_update1  : e_i1_b      : ') 
    211200            CALL prt_ctl(tab2d_1=d_e_i_trp  (:,:,1,jl)/1.0e9, clinfo1= ' lim_update1  : de_i1_trp   : ') 
    212201            CALL prt_ctl(tab2d_1=e_i        (:,:,2,jl)/1.0e9, clinfo1= ' lim_update1  : e_i2        : ') 
    213             CALL prt_ctl(tab2d_1=old_e_i    (:,:,2,jl)/1.0e9, clinfo1= ' lim_update1  : old_e_i2    : ') 
     202            CALL prt_ctl(tab2d_1=e_i_b      (:,:,2,jl)/1.0e9, clinfo1= ' lim_update1  : e_i2_b      : ') 
    214203            CALL prt_ctl(tab2d_1=d_e_i_trp  (:,:,2,jl)/1.0e9, clinfo1= ' lim_update1  : de_i2_trp   : ') 
    215204            CALL prt_ctl(tab2d_1=e_s        (:,:,1,jl)      , clinfo1= ' lim_update1  : e_snow      : ') 
    216             CALL prt_ctl(tab2d_1=old_e_s    (:,:,1,jl)      , clinfo1= ' lim_update1  : old_e_snow  : ') 
     205            CALL prt_ctl(tab2d_1=e_s_b      (:,:,1,jl)      , clinfo1= ' lim_update1  : e_snow_b    : ') 
    217206            CALL prt_ctl(tab2d_1=d_e_s_trp  (:,:,1,jl)/1.0e9, clinfo1= ' lim_update1  : d_e_s_trp   : ') 
    218207            CALL prt_ctl(tab2d_1=smv_i      (:,:,jl)        , clinfo1= ' lim_update1  : smv_i       : ') 
    219             CALL prt_ctl(tab2d_1=old_smv_i  (:,:,jl)        , clinfo1= ' lim_update1  : old_smv_i   : ') 
     208            CALL prt_ctl(tab2d_1=smv_i_b    (:,:,jl)        , clinfo1= ' lim_update1  : smv_i_b     : ') 
    220209            CALL prt_ctl(tab2d_1=d_smv_i_trp(:,:,jl)        , clinfo1= ' lim_update1  : d_smv_i_trp : ') 
    221210            CALL prt_ctl(tab2d_1=oa_i       (:,:,jl)        , clinfo1= ' lim_update1  : oa_i        : ') 
    222             CALL prt_ctl(tab2d_1=old_oa_i   (:,:,jl)        , clinfo1= ' lim_update1  : old_oa_i    : ') 
     211            CALL prt_ctl(tab2d_1=oa_i_b     (:,:,jl)        , clinfo1= ' lim_update1  : oa_i_b      : ') 
    223212            CALL prt_ctl(tab2d_1=d_oa_i_trp (:,:,jl)        , clinfo1= ' lim_update1  : d_oa_i_trp  : ') 
    224213 
  • branches/2014/dev_CNRS_2014/NEMOGCM/NEMO/LIM_SRC_3/limupdate2.F90

    r4900 r4902  
    6767      !! 
    6868      !!--------------------------------------------------------------------- 
    69       INTEGER  ::   ji, jj, jk, jl, jm    ! dummy loop indices 
    70       INTEGER  ::   jbnd1, jbnd2 
     69      INTEGER  ::   ji, jj, jk, jl    ! dummy loop indices 
    7170      INTEGER  ::   i_ice_switch 
    7271      REAL(wp) ::   zh, zsal 
     
    8988      ! Rebin categories with thickness out of bounds 
    9089      !---------------------------------------------------- 
    91       DO jm = 1, jpm 
    92          jbnd1 = ice_cat_bounds(jm,1) 
    93          jbnd2 = ice_cat_bounds(jm,2) 
    94          IF (ice_ncat_types(jm) .GT. 1 )   CALL lim_itd_th_reb(jbnd1, jbnd2, jm) 
    95       END DO 
     90      IF ( jpl > 1 )   CALL lim_itd_th_reb(1, jpl) 
    9691 
    9792      !---------------------------------------------------------------------- 
    9893      ! Constrain the thickness of the smallest category above hiclim 
    9994      !---------------------------------------------------------------------- 
    100       DO jm = 1, jpm 
    101          DO jj = 1, jpj  
    102             DO ji = 1, jpi 
    103                jl = ice_cat_bounds(jm,1) 
    104                IF( v_i(ji,jj,jl) > 0._wp .AND. ht_i(ji,jj,jl) < hiclim ) THEN 
    105                   zh             = hiclim / ht_i(ji,jj,jl) 
    106                   ht_s(ji,jj,jl) = ht_s(ji,jj,jl) * zh 
    107                   ht_i(ji,jj,jl) = ht_i(ji,jj,jl) * zh 
    108                   a_i (ji,jj,jl) = a_i(ji,jj,jl)  / zh 
    109                ENDIF 
    110             END DO !ji 
    111          END DO !jj 
    112       END DO !jm 
     95      DO jj = 1, jpj  
     96         DO ji = 1, jpi 
     97            IF( v_i(ji,jj,1) > 0._wp .AND. ht_i(ji,jj,1) < hiclim ) THEN 
     98               zh             = hiclim / ht_i(ji,jj,1) 
     99               ht_s(ji,jj,1) = ht_s(ji,jj,1) * zh 
     100               ht_i(ji,jj,1) = ht_i(ji,jj,1) * zh 
     101               a_i (ji,jj,1) = a_i(ji,jj,1)  / zh 
     102            ENDIF 
     103         END DO 
     104      END DO 
    113105       
    114106      !----------------------------------------------------- 
     
    139131      ! Final thickness distribution rebinning 
    140132      ! -------------------------------------- 
    141       DO jm = 1, jpm 
    142          jbnd1 = ice_cat_bounds(jm,1) 
    143          jbnd2 = ice_cat_bounds(jm,2) 
    144          IF (ice_ncat_types(jm) .GT. 1 ) CALL lim_itd_th_reb(jbnd1, jbnd2, jm) 
    145          IF (ice_ncat_types(jm) .EQ. 1 ) THEN 
    146          ENDIF 
    147       END DO 
     133      IF ( jpl > 1 ) CALL lim_itd_th_reb( 1, jpl ) 
    148134 
    149135      !----------------- 
     
    196182      ! Diagnostics 
    197183      ! ------------------------------------------------- 
    198       d_a_i_thd(:,:,:)   = a_i(:,:,:)   - old_a_i(:,:,:)  
    199       d_v_s_thd(:,:,:)   = v_s(:,:,:)   - old_v_s(:,:,:) 
    200       d_v_i_thd(:,:,:)   = v_i(:,:,:)   - old_v_i(:,:,:)   
    201       d_e_s_thd(:,:,:,:) = e_s(:,:,:,:) - old_e_s(:,:,:,:)  
    202       d_e_i_thd(:,:,1:nlay_i,:) = e_i(:,:,1:nlay_i,:) - old_e_i(:,:,1:nlay_i,:) 
    203       !?? d_oa_i_thd(:,:,:)  = oa_i (:,:,:) - old_oa_i (:,:,:) 
     184      d_a_i_thd(:,:,:)   = a_i(:,:,:)   - a_i_b(:,:,:)  
     185      d_v_s_thd(:,:,:)   = v_s(:,:,:)   - v_s_b(:,:,:) 
     186      d_v_i_thd(:,:,:)   = v_i(:,:,:)   - v_i_b(:,:,:)   
     187      d_e_s_thd(:,:,:,:) = e_s(:,:,:,:) - e_s_b(:,:,:,:)  
     188      d_e_i_thd(:,:,1:nlay_i,:) = e_i(:,:,1:nlay_i,:) - e_i_b(:,:,1:nlay_i,:) 
     189      !?? d_oa_i_thd(:,:,:)  = oa_i (:,:,:) - oa_i_b (:,:,:) 
    204190      d_smv_i_thd(:,:,:) = 0._wp 
    205       IF( num_sal == 2 )   d_smv_i_thd(:,:,:) = smv_i(:,:,:) - old_smv_i(:,:,:) 
     191      IF( num_sal == 2 )   d_smv_i_thd(:,:,:) = smv_i(:,:,:) - smv_i_b(:,:,:) 
    206192      ! diag only (clem) 
    207193      dv_dt_thd(:,:,:) = d_v_i_thd(:,:,:) * r1_rdtice * rday 
     
    211197         DO ji = 1, jpi             
    212198            diag_heat_dhc(ji,jj) = ( SUM( d_e_i_trp(ji,jj,1:nlay_i,:) + d_e_i_thd(ji,jj,1:nlay_i,:) ) +  &  
    213                &                     SUM( d_e_s_trp(ji,jj,1:nlay_s,:) + d_e_s_thd(ji,jj,1:nlay_s,:) ) ) * unit_fac * r1_rdtice / area(ji,jj)    
     199               &                     SUM( d_e_s_trp(ji,jj,1:nlay_s,:) + d_e_s_thd(ji,jj,1:nlay_s,:) )    & 
     200               &                   ) * unit_fac * r1_rdtice / area(ji,jj)    
    214201         END DO 
    215202      END DO 
     
    228215         CALL prt_ctl(tab2d_1=strength   , clinfo1=' lim_update2  : strength    :') 
    229216         CALL prt_ctl(tab2d_1=u_ice      , clinfo1=' lim_update2  : u_ice       :', tab2d_2=v_ice      , clinfo2=' v_ice       :') 
    230          CALL prt_ctl(tab2d_1=old_u_ice  , clinfo1=' lim_update2  : old_u_ice   :', tab2d_2=old_v_ice  , clinfo2=' old_v_ice   :') 
     217         CALL prt_ctl(tab2d_1=u_ice_b    , clinfo1=' lim_update2  : u_ice_b     :', tab2d_2=v_ice_b    , clinfo2=' v_ice_b     :') 
    231218 
    232219         DO jl = 1, jpl 
     
    241228            CALL prt_ctl(tab2d_1=o_i        (:,:,jl)        , clinfo1= ' lim_update2  : o_i         : ') 
    242229            CALL prt_ctl(tab2d_1=a_i        (:,:,jl)        , clinfo1= ' lim_update2  : a_i         : ') 
    243             CALL prt_ctl(tab2d_1=old_a_i    (:,:,jl)        , clinfo1= ' lim_update2  : old_a_i     : ') 
     230            CALL prt_ctl(tab2d_1=a_i_b      (:,:,jl)        , clinfo1= ' lim_update2  : a_i_b       : ') 
    244231            CALL prt_ctl(tab2d_1=d_a_i_thd  (:,:,jl)        , clinfo1= ' lim_update2  : d_a_i_thd   : ') 
    245232            CALL prt_ctl(tab2d_1=v_i        (:,:,jl)        , clinfo1= ' lim_update2  : v_i         : ') 
    246             CALL prt_ctl(tab2d_1=old_v_i    (:,:,jl)        , clinfo1= ' lim_update2  : old_v_i     : ') 
     233            CALL prt_ctl(tab2d_1=v_i_b      (:,:,jl)        , clinfo1= ' lim_update2  : v_i_b       : ') 
    247234            CALL prt_ctl(tab2d_1=d_v_i_thd  (:,:,jl)        , clinfo1= ' lim_update2  : d_v_i_thd   : ') 
    248235            CALL prt_ctl(tab2d_1=v_s        (:,:,jl)        , clinfo1= ' lim_update2  : v_s         : ') 
    249             CALL prt_ctl(tab2d_1=old_v_s    (:,:,jl)        , clinfo1= ' lim_update2  : old_v_s     : ') 
     236            CALL prt_ctl(tab2d_1=v_s_b      (:,:,jl)        , clinfo1= ' lim_update2  : v_s_b       : ') 
    250237            CALL prt_ctl(tab2d_1=d_v_s_thd  (:,:,jl)        , clinfo1= ' lim_update2  : d_v_s_thd   : ') 
    251238            CALL prt_ctl(tab2d_1=e_i        (:,:,1,jl)/1.0e9, clinfo1= ' lim_update2  : e_i1        : ') 
    252             CALL prt_ctl(tab2d_1=old_e_i    (:,:,1,jl)/1.0e9, clinfo1= ' lim_update2  : old_e_i1    : ') 
     239            CALL prt_ctl(tab2d_1=e_i_b      (:,:,1,jl)/1.0e9, clinfo1= ' lim_update2  : e_i1_b      : ') 
    253240            CALL prt_ctl(tab2d_1=d_e_i_thd  (:,:,1,jl)/1.0e9, clinfo1= ' lim_update2  : de_i1_thd   : ') 
    254241            CALL prt_ctl(tab2d_1=e_i        (:,:,2,jl)/1.0e9, clinfo1= ' lim_update2  : e_i2        : ') 
    255             CALL prt_ctl(tab2d_1=old_e_i    (:,:,2,jl)/1.0e9, clinfo1= ' lim_update2  : old_e_i2    : ') 
     242            CALL prt_ctl(tab2d_1=e_i_b      (:,:,2,jl)/1.0e9, clinfo1= ' lim_update2  : e_i2_b      : ') 
    256243            CALL prt_ctl(tab2d_1=d_e_i_thd  (:,:,2,jl)/1.0e9, clinfo1= ' lim_update2  : de_i2_thd   : ') 
    257244            CALL prt_ctl(tab2d_1=e_s        (:,:,1,jl)      , clinfo1= ' lim_update2  : e_snow      : ') 
    258             CALL prt_ctl(tab2d_1=old_e_s    (:,:,1,jl)      , clinfo1= ' lim_update2  : old_e_snow  : ') 
     245            CALL prt_ctl(tab2d_1=e_s_b      (:,:,1,jl)      , clinfo1= ' lim_update2  : e_snow_b    : ') 
    259246            CALL prt_ctl(tab2d_1=d_e_s_thd  (:,:,1,jl)/1.0e9, clinfo1= ' lim_update2  : d_e_s_thd   : ') 
    260247            CALL prt_ctl(tab2d_1=smv_i      (:,:,jl)        , clinfo1= ' lim_update2  : smv_i       : ') 
    261             CALL prt_ctl(tab2d_1=old_smv_i  (:,:,jl)        , clinfo1= ' lim_update2  : old_smv_i   : ') 
     248            CALL prt_ctl(tab2d_1=smv_i_b    (:,:,jl)        , clinfo1= ' lim_update2  : smv_i_b     : ') 
    262249            CALL prt_ctl(tab2d_1=d_smv_i_thd(:,:,jl)        , clinfo1= ' lim_update2  : d_smv_i_thd : ') 
    263250            CALL prt_ctl(tab2d_1=oa_i       (:,:,jl)        , clinfo1= ' lim_update2  : oa_i        : ') 
    264             CALL prt_ctl(tab2d_1=old_oa_i   (:,:,jl)        , clinfo1= ' lim_update2  : old_oa_i    : ') 
     251            CALL prt_ctl(tab2d_1=oa_i_b     (:,:,jl)        , clinfo1= ' lim_update2  : oa_i_b      : ') 
    265252            CALL prt_ctl(tab2d_1=d_oa_i_thd (:,:,jl)        , clinfo1= ' lim_update2  : d_oa_i_thd  : ') 
    266253 
  • branches/2014/dev_CNRS_2014/NEMOGCM/NEMO/LIM_SRC_3/limvar.F90

    r4900 r4902  
    464464      ! Vertically constant, constant in time 
    465465      !--------------------------------------- 
    466       IF( num_sal == 1 )   s_i_b(:,:) = bulk_sal 
     466      IF( num_sal == 1 )   s_i_1d(:,:) = bulk_sal 
    467467 
    468468      !------------------------------------------------------ 
     
    473473         ! 
    474474         DO ji = kideb, kiut          ! Slope of the linear profile zs_zero 
    475             z_slope_s(ji) = 2._wp * sm_i_b(ji) / MAX( epsi10 , ht_i_b(ji) ) 
     475            z_slope_s(ji) = 2._wp * sm_i_1d(ji) / MAX( epsi10 , ht_i_1d(ji) ) 
    476476         END DO 
    477477 
     
    489489               ij =     ( npb(ji) - 1 ) / jpi + 1 
    490490               ! zind0 = 1 if sm_i le s_i_0 and 0 otherwise 
    491                zind0  = MAX( 0._wp , SIGN( 1._wp  , s_i_0 - sm_i_b(ji) ) )  
     491               zind0  = MAX( 0._wp , SIGN( 1._wp  , s_i_0 - sm_i_1d(ji) ) )  
    492492               ! zind01 = 1 if sm_i is between s_i_0 and s_i_1 and 0 othws  
    493                zind01 = ( 1._wp - zind0 ) * MAX( 0._wp , SIGN( 1._wp , s_i_1 - sm_i_b(ji) ) )  
     493               zind01 = ( 1._wp - zind0 ) * MAX( 0._wp , SIGN( 1._wp , s_i_1 - sm_i_1d(ji) ) )  
    494494               ! if 2.sm_i GE sss_m then zindbal = 1 
    495495               ! this is to force a constant salinity profile in the Baltic Sea 
    496                zindbal = MAX( 0._wp , SIGN( 1._wp , 2._wp * sm_i_b(ji) - sss_m(ii,ij) ) ) 
     496               zindbal = MAX( 0._wp , SIGN( 1._wp , 2._wp * sm_i_1d(ji) - sss_m(ii,ij) ) ) 
    497497               ! 
    498                zalpha = (  zind0 + zind01 * ( sm_i_b(ji) * dummy_fac0 + dummy_fac1 )  ) * ( 1.0 - zindbal ) 
     498               zalpha = (  zind0 + zind01 * ( sm_i_1d(ji) * dummy_fac0 + dummy_fac1 )  ) * ( 1.0 - zindbal ) 
    499499               ! 
    500                zs_zero = z_slope_s(ji) * ( REAL(jk,wp) - 0.5_wp ) * ht_i_b(ji) * dummy_fac2 
     500               zs_zero = z_slope_s(ji) * ( REAL(jk,wp) - 0.5_wp ) * ht_i_1d(ji) * dummy_fac2 
    501501               ! weighting the profile 
    502                s_i_b(ji,jk) = zalpha * zs_zero + ( 1._wp - zalpha ) * sm_i_b(ji) 
     502               s_i_1d(ji,jk) = zalpha * zs_zero + ( 1._wp - zalpha ) * sm_i_1d(ji) 
    503503            END DO ! ji 
    504504         END DO ! jk 
     
    512512      IF( num_sal == 3 ) THEN      ! Schwarzacher (1959) multiyear salinity profile (mean = 2.30) 
    513513         ! 
    514          sm_i_b(:) = 2.30_wp 
     514         sm_i_1d(:) = 2.30_wp 
    515515         ! 
    516516!CDIR NOVERRCHK 
     
    519519            zsal =  1.6_wp * (  1._wp - COS( rpi * zargtemp**(0.407_wp/(0.573_wp+zargtemp)) )  ) 
    520520            DO ji = kideb, kiut 
    521                s_i_b(ji,jk) = zsal 
     521               s_i_1d(ji,jk) = zsal 
    522522            END DO 
    523523         END DO 
  • branches/2014/dev_CNRS_2014/NEMOGCM/NEMO/LIM_SRC_3/limwri.F90

    r4900 r4902  
    298298      !!---------------------------------------------------------------------- 
    299299 
    300       CALL histdef( kid, "iicethic", "Ice thickness"           , "m"      , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
    301       CALL histdef( kid, "iiceconc", "Ice concentration"       , "%"      , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
    302       CALL histdef( kid, "iicetemp", "Ice temperature"         , "C"      , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
    303       CALL histdef( kid, "iicevelu", "i-Ice speed (I-point)"   , "m/s"    , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
    304       CALL histdef( kid, "iicevelv", "j-Ice speed (I-point)"   , "m/s"    , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )  
    305       CALL histdef( kid, "iicestru", "i-Wind stress over ice (I-pt)", "Pa", jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
    306       CALL histdef( kid, "iicestrv", "j-Wind stress over ice (I-pt)", "Pa", jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )  
    307       CALL histdef( kid, "iicesflx", "Solar flux over ocean"     , "w/m2"   , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )  
    308       CALL histdef( kid, "iicenflx", "Non-solar flux over ocean" , "w/m2"   , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
    309       CALL histdef( kid, "isnowpre", "Snow precipitation"      , "kg/m2/s", jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )  
    310       CALL histdef( kid, "iicesali", "Ice salinity"            , "PSU"    , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )  
    311       CALL histdef( kid, "iicevolu", "Ice volume"              , "m"      , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )  
    312       CALL histdef( kid, "iicedive", "Ice divergence"          , "10-8s-1", jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )  
    313       CALL histdef( kid, "iicebopr", "Ice bottom production"   , "m/s"      , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
    314       CALL histdef( kid, "iicedypr", "Ice dynamic production"  , "m/s"      , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
    315       CALL histdef( kid, "iicelapr", "Ice open water prod"     , "m/s"      , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
    316       CALL histdef( kid, "iicesipr", "Snow ice production "    , "m/s"      , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
    317       CALL histdef( kid, "iicerepr", "Ice prod from limupdate" , "m/s"      , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
    318       CALL histdef( kid, "iicebome", "Ice bottom melt"         , "m/s"      , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
    319       CALL histdef( kid, "iicesume", "Ice surface melt"        , "m/s"      , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
    320       CALL histdef( kid, "iisfxdyn", "Salt flux from dynmics"  , ""      , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
    321       CALL histdef( kid, "iisfxres", "Salt flux from limupdate", ""      , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
     300      CALL histdef( kid, "iicethic", "Ice thickness"           , "m"      ,   & 
     301      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
     302      CALL histdef( kid, "iiceconc", "Ice concentration"       , "%"      ,   & 
     303      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
     304      CALL histdef( kid, "iicetemp", "Ice temperature"         , "C"      ,   & 
     305      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
     306      CALL histdef( kid, "iicevelu", "i-Ice speed (I-point)"   , "m/s"    ,   & 
     307      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
     308      CALL histdef( kid, "iicevelv", "j-Ice speed (I-point)"   , "m/s"    ,   & 
     309      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )  
     310      CALL histdef( kid, "iicestru", "i-Wind stress over ice (I-pt)", "Pa",   & 
     311      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
     312      CALL histdef( kid, "iicestrv", "j-Wind stress over ice (I-pt)", "Pa",   & 
     313      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )  
     314      CALL histdef( kid, "iicesflx", "Solar flux over ocean"     , "w/m2" ,   & 
     315      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )  
     316      CALL histdef( kid, "iicenflx", "Non-solar flux over ocean" , "w/m2" ,   & 
     317      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
     318      CALL histdef( kid, "isnowpre", "Snow precipitation"      , "kg/m2/s",   & 
     319      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )  
     320      CALL histdef( kid, "iicesali", "Ice salinity"            , "PSU"    ,   & 
     321      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )  
     322      CALL histdef( kid, "iicevolu", "Ice volume"              , "m"      ,   & 
     323      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )  
     324      CALL histdef( kid, "iicedive", "Ice divergence"          , "10-8s-1",   & 
     325      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )  
     326      CALL histdef( kid, "iicebopr", "Ice bottom production"   , "m/s"    ,   & 
     327      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
     328      CALL histdef( kid, "iicedypr", "Ice dynamic production"  , "m/s"    ,   & 
     329      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
     330      CALL histdef( kid, "iicelapr", "Ice open water prod"     , "m/s"    ,   & 
     331      &       jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
     332      CALL histdef( kid, "iicesipr", "Snow ice production "    , "m/s"    ,   & 
     333      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
     334      CALL histdef( kid, "iicerepr", "Ice prod from limupdate" , "m/s"    ,   & 
     335      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
     336      CALL histdef( kid, "iicebome", "Ice bottom melt"         , "m/s"    ,   & 
     337      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
     338      CALL histdef( kid, "iicesume", "Ice surface melt"        , "m/s"    ,   & 
     339      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
     340      CALL histdef( kid, "iisfxdyn", "Salt flux from dynmics"  , ""       ,   & 
     341      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
     342      CALL histdef( kid, "iisfxres", "Salt flux from limupdate", ""       ,   & 
     343      &      jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) 
    322344 
    323345      CALL histend( kid, snc4set )   ! end of the file definition 
  • branches/2014/dev_CNRS_2014/NEMOGCM/NEMO/LIM_SRC_3/par_ice.F90

    r4900 r4902  
    1212 
    1313   !                                             !!! ice thermodynamics 
    14    INTEGER, PUBLIC, PARAMETER ::   jkmax    = 6   !: maximum number of ice layers 
    1514   INTEGER, PUBLIC, PARAMETER ::   nlay_i   = 5   !: number of ice layers 
    1615   INTEGER, PUBLIC, PARAMETER ::   nlay_s   = 1   !: number of snow layers 
     
    1817   !                                             !!! ice mechanical redistribution 
    1918   INTEGER, PUBLIC, PARAMETER ::   jpl      = 5   !: number of ice categories 
    20    INTEGER, PUBLIC, PARAMETER ::   jpm      = 1   !: number of ice types 
    2119 
    2220   !!---------------------------------------------------------------------- 
  • branches/2014/dev_CNRS_2014/NEMOGCM/NEMO/LIM_SRC_3/thd_ice.F90

    r4901 r4902  
    3434   !!----------------------------- 
    3535   !: In ice thermodynamics, to spare memory, the vectors are folded 
    36    !: from 1D to 2D vectors. The following variables, with ending _1d (or _b) 
     36   !: from 1D to 2D vectors. The following variables, with ending _1d 
    3737   !: are the variables corresponding to 2d vectors 
    3838 
     
    4040   INTEGER , PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   npac   !: correspondance between points (lateral accretion) 
    4141 
    42    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   qlead_1d      !: <==> the 2D  qlead 
    43    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   ftr_ice_1d    !: <==> the 2D  ftr_ice 
    44    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   qsr_ice_1d    !: <==> the 2D  qsr_ice 
    45    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   fr1_i0_1d     !: <==> the 2D  fr1_i0 
    46    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   fr2_i0_1d     !: <==> the 2D  fr2_i0 
    47    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   qns_ice_1d    !: <==> the 2D  qns_ice 
    48    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   t_bo_b        !: <==> the 2D  t_bo 
     42   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   qlead_1d      
     43   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   ftr_ice_1d    
     44   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   qsr_ice_1d   
     45   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   fr1_i0_1d    
     46   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   fr2_i0_1d    
     47   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   qns_ice_1d   
     48   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   t_bo_1d      
    4949 
    5050   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   hfx_sum_1d 
     
    6565   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   hfx_res_1d 
    6666 
    67    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   wfx_ice_1d    !: <==> the 2D  wfx_ice 
    68    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   wfx_snw_1d    !: <==> the 2D  wfx_snw 
    69    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   wfx_sub_1d    !: <==> the 2D  wfx_sub 
     67   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   wfx_snw_1d  
     68   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   wfx_sub_1d 
    7069 
    71    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   wfx_bog_1d    !: <==> the 2D  wfx_ice 
    72    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   wfx_bom_1d    !: <==> the 2D  wfx_ice 
    73    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   wfx_sum_1d    !: <==> the 2D  wfx_ice 
    74    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   wfx_sni_1d    !: <==> the 2D  wfx_ice 
    75    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   wfx_opw_1d    !: <==> the 2D  wfx_ice 
    76    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   wfx_res_1d    !: <==> the 2D  wfx_ice 
    77    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   wfx_spr_1d    !: <==> the 2D  wfx_ice 
     70   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   wfx_bog_1d     
     71   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   wfx_bom_1d    
     72   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   wfx_sum_1d   
     73   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   wfx_sni_1d  
     74   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   wfx_opw_1d 
     75   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   wfx_res_1d  
     76   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   wfx_spr_1d 
    7877 
    79    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   sfx_bri_1d    !: <==> the 2D sfx_bri 
    80    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   sfx_bog_1d    !:  
    81    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   sfx_bom_1d    !:  
    82    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   sfx_sum_1d    !:  
    83    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   sfx_sni_1d    !:  
    84    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   sfx_opw_1d    !: 
    85    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   sfx_res_1d    !: 
     78   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   sfx_bri_1d 
     79   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   sfx_bog_1d     
     80   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   sfx_bom_1d     
     81   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   sfx_sum_1d     
     82   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   sfx_sni_1d     
     83   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   sfx_opw_1d    
     84   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   sfx_res_1d   
    8685 
    8786   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   sprecip_1d    !: <==> the 2D  sprecip 
    8887   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   frld_1d       !: <==> the 2D  frld 
    89    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   at_i_b        !: <==> the 2D  at_i 
    90    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   fhtur_1d       !: <==> the 2D  fhtur 
     88   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   at_i_1d        !: <==> the 2D  at_i 
     89   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   fhtur_1d      !: <==> the 2D  fhtur 
    9190   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   fhld_1d       !: <==> the 2D  fhld 
    9291   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   dqns_ice_1d   !: <==> the 2D  dqns_ice 
     
    10099   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   dsm_i_se_1d   !: Ice salinity variations due to basal salt entrapment 
    101100   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   dsm_i_si_1d   !: Ice salinity variations due to lateral accretion     
    102    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   hicol_b       !: Ice collection thickness accumulated in fleads 
     101   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   hicol_1d      !: Ice collection thickness accumulated in leads 
    103102 
    104    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   t_su_b      !: <==> the 2D  t_su 
    105    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   a_i_b       !: <==> the 2D  a_i 
    106    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   ht_i_b      !: <==> the 2D  ht_s 
    107    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   ht_s_b      !: <==> the 2D  ht_i 
    108    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   fc_su       !: Surface Conduction flux  
    109    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   fc_bo_i     !: Bottom  Conduction flux  
    110    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   dh_s_tot    !: Snow accretion/ablation        [m] 
    111    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   dh_i_surf   !: Ice surface accretion/ablation [m] 
    112    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   dh_i_bott   !: Ice bottom accretion/ablation  [m] 
    113    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   dh_snowice  !: Snow ice formation             [m of ice] 
    114    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   sm_i_b      !: Ice bulk salinity [ppt] 
    115    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   s_i_new     !: Salinity of new ice at the bottom 
     103   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   t_su_1d       !: <==> the 2D  t_su 
     104   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   a_i_1d        !: <==> the 2D  a_i 
     105   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   ht_i_1d       !: <==> the 2D  ht_s 
     106   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   ht_s_1d       !: <==> the 2D  ht_i 
     107   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   fc_su         !: Surface Conduction flux  
     108   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   fc_bo_i       !: Bottom  Conduction flux  
     109   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   dh_s_tot      !: Snow accretion/ablation        [m] 
     110   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   dh_i_surf     !: Ice surface accretion/ablation [m] 
     111   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   dh_i_bott     !: Ice bottom accretion/ablation  [m] 
     112   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   dh_snowice    !: Snow ice formation             [m of ice] 
     113   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   sm_i_1d       !: Ice bulk salinity [ppt] 
     114   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:) ::   s_i_new       !: Salinity of new ice at the bottom 
    116115 
    117    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   t_s_b   !: corresponding to the 2D var  t_s 
    118    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   t_i_b   !: corresponding to the 2D var  t_i 
    119    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   s_i_b   !: profiled ice salinity 
    120    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   q_i_b   !:    Ice  enthalpy per unit volume 
    121    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   q_s_b   !:    Snow enthalpy per unit volume 
     116   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   t_s_1d   !: corresponding to the 2D var  t_s 
     117   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   t_i_1d   !: corresponding to the 2D var  t_i 
     118   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   s_i_1d   !: profiled ice salinity 
     119   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   q_i_1d   !:    Ice  enthalpy per unit volume 
     120   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   q_s_1d   !:    Snow enthalpy per unit volume 
    122121 
    123    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   qh_i_old  !: ice heat content (q*h, J.m-2) 
    124    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   h_i_old   !: ice thickness layer (m) 
     122   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   qh_i_old !: ice heat content (q*h, J.m-2) 
     123   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) ::   h_i_old  !: ice thickness layer (m) 
    125124 
    126125   INTEGER , PUBLIC ::   jiindex_1d   ! 1D index of debugging point 
     
    146145         &      qsr_ice_1d (jpij) ,     & 
    147146         &      fr1_i0_1d(jpij) , fr2_i0_1d(jpij) , qns_ice_1d(jpij) ,     & 
    148          &      t_bo_b   (jpij) ,                                          & 
    149          &      hfx_sum_1d(jpij) , hfx_bom_1d(jpij) ,hfx_bog_1d(jpij) ,hfx_dif_1d(jpij) ,hfx_opw_1d(jpij) , & 
     147         &      t_bo_1d   (jpij) ,                                          & 
     148         &      hfx_sum_1d(jpij) , hfx_bom_1d(jpij) ,hfx_bog_1d(jpij) ,     &  
     149         &      hfx_dif_1d(jpij) ,hfx_opw_1d(jpij) , & 
    150150         &      hfx_thd_1d(jpij) , hfx_spr_1d(jpij) , & 
    151          &      hfx_snw_1d(jpij) , hfx_sub_1d(jpij) , hfx_err_1d(jpij) , hfx_res_1d(jpij) , hfx_err_rem_1d(jpij),       STAT=ierr(1) ) 
     151         &      hfx_snw_1d(jpij) , hfx_sub_1d(jpij) , hfx_err_1d(jpij) , & 
     152         &      hfx_res_1d(jpij) , hfx_err_rem_1d(jpij),       STAT=ierr(1) ) 
    152153      ! 
    153       ALLOCATE( sprecip_1d (jpij) , frld_1d    (jpij) , at_i_b     (jpij) ,     & 
    154          &      fhtur_1d   (jpij) , wfx_ice_1d (jpij) , wfx_snw_1d (jpij) , wfx_spr_1d (jpij) ,     & 
    155          &      fhld_1d    (jpij) , wfx_sub_1d (jpij) , wfx_bog_1d(jpij) , wfx_bom_1d(jpij) , wfx_sum_1d(jpij) , wfx_sni_1d (jpij) , wfx_opw_1d (jpij) ,  wfx_res_1d (jpij) ,  & 
     154      ALLOCATE( sprecip_1d (jpij) , frld_1d    (jpij) , at_i_1d     (jpij) ,     & 
     155         &      fhtur_1d   (jpij) , wfx_snw_1d (jpij) , wfx_spr_1d (jpij) ,     & 
     156         &      fhld_1d    (jpij) , wfx_sub_1d (jpij) , wfx_bog_1d(jpij) , wfx_bom_1d(jpij) , & 
     157         &      wfx_sum_1d(jpij)  , wfx_sni_1d (jpij) , wfx_opw_1d (jpij) ,  wfx_res_1d (jpij) ,  & 
    156158         &      dqns_ice_1d(jpij) , qla_ice_1d (jpij) , dqla_ice_1d(jpij) ,     & 
    157159         &      tatm_ice_1d(jpij) ,      &    
    158160         &      i0         (jpij) ,     &   
    159          &      sfx_bri_1d (jpij) , sfx_bog_1d (jpij) , sfx_bom_1d (jpij) ,sfx_sum_1d (jpij) ,sfx_sni_1d (jpij) , sfx_opw_1d (jpij) , sfx_res_1d (jpij) , & 
     161         &      sfx_bri_1d (jpij) , sfx_bog_1d (jpij) , sfx_bom_1d (jpij) ,sfx_sum_1d (jpij) ,   & 
     162         &      sfx_sni_1d (jpij) , sfx_opw_1d (jpij) , sfx_res_1d (jpij) , & 
    160163         &      dsm_i_fl_1d(jpij) , dsm_i_gd_1d(jpij) , dsm_i_se_1d(jpij) ,     &      
    161          &      dsm_i_si_1d(jpij) , hicol_b    (jpij)                     , STAT=ierr(2) ) 
     164         &      dsm_i_si_1d(jpij) , hicol_1d    (jpij)                     , STAT=ierr(2) ) 
    162165      ! 
    163       ALLOCATE( t_su_b    (jpij) , a_i_b    (jpij) , ht_i_b   (jpij) ,    &    
    164          &      ht_s_b    (jpij) , fc_su    (jpij) , fc_bo_i  (jpij) ,    &     
     166      ALLOCATE( t_su_1d    (jpij) , a_i_1d    (jpij) , ht_i_1d   (jpij) ,    &    
     167         &      ht_s_1d    (jpij) , fc_su    (jpij) , fc_bo_i  (jpij) ,    &     
    165168         &      dh_s_tot  (jpij) , dh_i_surf(jpij) , dh_i_bott(jpij) ,    &     
    166          &      dh_snowice(jpij) , sm_i_b   (jpij) , s_i_new  (jpij) ,    & 
    167          &      t_s_b(jpij,nlay_s),                                       & 
    168          &      t_i_b(jpij,jkmax), s_i_b(jpij,jkmax)                ,     &             
    169          &      q_i_b(jpij,jkmax), q_s_b(jpij,jkmax)                ,     & 
    170          &      qh_i_old(jpij,0:jkmax), h_i_old(jpij,0:jkmax) , STAT=ierr(3)) 
     169         &      dh_snowice(jpij) , sm_i_1d   (jpij) , s_i_new  (jpij) ,    & 
     170         &      t_s_1d(jpij,nlay_s),                                       & 
     171         &      t_i_1d(jpij,nlay_i+1), s_i_1d(jpij,nlay_i+1)                ,     &             
     172         &      q_i_1d(jpij,nlay_i+1), q_s_1d(jpij,nlay_i+1)                ,     & 
     173         &      qh_i_old(jpij,0:nlay_i+1), h_i_old(jpij,0:nlay_i+1) , STAT=ierr(3)) 
    171174      ! 
    172175      thd_ice_alloc = MAXVAL( ierr ) 
  • branches/2014/dev_CNRS_2014/NEMOGCM/NEMO/OFF_SRC/nemogcm.F90

    r4897 r4902  
    5151   USE trcnam 
    5252   USE trcrst 
     53   USE diaptr         ! Need to initialise this as some variables are used in if statements later 
    5354 
    5455   IMPLICIT NONE 
     
    298299      !                                     ! Passive tracers 
    299300                            CALL     trc_init   ! Passive tracers initialization 
    300  
     301      ! 
     302      ! Initialise diaptr as some variables are used in if statements later (in 
     303      ! various advection and diffusion routines. 
     304                            CALL dia_ptr_init 
     305      ! 
    301306      IF(lwp) WRITE(numout,cform_aaa)       ! Flag AAAAAAA 
    302307      ! 
  • branches/2014/dev_CNRS_2014/NEMOGCM/NEMO/OPA_SRC/BDY/bdyice_lim.F90

    r4900 r4902  
    2424   USE par_ice_2 
    2525   USE ice_2           ! LIM_2 ice variables 
     26   USE dom_ice_2       ! sea-ice domain 
    2627#elif defined key_lim3 
    2728   USE par_ice 
    2829   USE ice             ! LIM_3 ice variables 
     30   USE dom_ice         ! sea-ice domain 
    2931#endif  
    3032   USE par_oce         ! ocean parameters 
    3133   USE dom_oce         ! ocean space and time domain variables  
    32    USE dom_ice          ! sea-ice domain 
    3334   USE sbc_oce         ! Surface boundary condition: ocean fields 
    3435   USE bdy_oce         ! ocean open boundary conditions 
  • branches/2014/dev_CNRS_2014/NEMOGCM/NEMO/OPA_SRC/BDY/bdytides.F90

    r4897 r4902  
    418418      DO ib_bdy = 1,nb_bdy 
    419419 
    420          ! line below should be simplified (runoff case) 
    421 !! CHANUT: TO BE SORTED OUT 
    422 !!         IF (( nn_dyn2d_dta(ib_bdy) .ge. 2 ).AND.(nn_tra(ib_bdy).NE.4)) THEN 
    423420         IF ( nn_dyn2d_dta(ib_bdy) .ge. 2 ) THEN 
    424421 
     
    453450            IF ( PRESENT(kit) ) THEN 
    454451               IF ( lk_first_btstp ) THEN ! Save slow varying open boundary data: 
    455                   dta_bdy_s(ib_bdy)%ssh(1:ilen0(1)) = dta_bdy(ib_bdy)%ssh(1:ilen0(1)) 
    456                   dta_bdy_s(ib_bdy)%u2d(1:ilen0(2)) = dta_bdy(ib_bdy)%u2d(1:ilen0(2)) 
    457                   dta_bdy_s(ib_bdy)%v2d(1:ilen0(3)) = dta_bdy(ib_bdy)%v2d(1:ilen0(3)) 
     452                  IF ( dta_bdy(ib_bdy)%ll_ssh ) dta_bdy_s(ib_bdy)%ssh(1:ilen0(1)) = dta_bdy(ib_bdy)%ssh(1:ilen0(1)) 
     453                  IF ( dta_bdy(ib_bdy)%ll_u2d ) dta_bdy_s(ib_bdy)%u2d(1:ilen0(2)) = dta_bdy(ib_bdy)%u2d(1:ilen0(2)) 
     454                  IF ( dta_bdy(ib_bdy)%ll_v2d ) dta_bdy_s(ib_bdy)%v2d(1:ilen0(3)) = dta_bdy(ib_bdy)%v2d(1:ilen0(3)) 
    458455 
    459456               ELSE ! Initialize arrays from slow varying open boundary data:             
    460                   dta_bdy(ib_bdy)%ssh(1:ilen0(1)) = dta_bdy_s(ib_bdy)%ssh(1:ilen0(1)) 
    461                   dta_bdy(ib_bdy)%u2d(1:ilen0(2)) = dta_bdy_s(ib_bdy)%u2d(1:ilen0(2)) 
    462                   dta_bdy(ib_bdy)%v2d(1:ilen0(3)) = dta_bdy_s(ib_bdy)%v2d(1:ilen0(3)) 
     457                  IF ( dta_bdy(ib_bdy)%ll_ssh ) dta_bdy(ib_bdy)%ssh(1:ilen0(1)) = dta_bdy_s(ib_bdy)%ssh(1:ilen0(1)) 
     458                  IF ( dta_bdy(ib_bdy)%ll_u2d ) dta_bdy(ib_bdy)%u2d(1:ilen0(2)) = dta_bdy_s(ib_bdy)%u2d(1:ilen0(2)) 
     459                  IF ( dta_bdy(ib_bdy)%ll_v2d ) dta_bdy(ib_bdy)%v2d(1:ilen0(3)) = dta_bdy_s(ib_bdy)%v2d(1:ilen0(3)) 
    463460               ENDIF 
    464461            ENDIF 
     
    471468               z_sist = zramp * SIN( z_sarg ) 
    472469               ! 
    473                igrd=1                              ! SSH on tracer grid 
    474                DO ib = 1, ilen0(igrd) 
    475                   dta_bdy(ib_bdy)%ssh(ib) = dta_bdy(ib_bdy)%ssh(ib) + & 
    476                      &                      ( tides(ib_bdy)%ssh(ib,itide,1)*z_cost + & 
    477                      &                        tides(ib_bdy)%ssh(ib,itide,2)*z_sist ) 
    478                END DO 
    479                ! 
    480                igrd=2                              ! U grid 
    481                DO ib = 1, ilen0(igrd) 
    482                   dta_bdy(ib_bdy)%u2d(ib) = dta_bdy(ib_bdy)%u2d(ib) + & 
    483                      &                      ( tides(ib_bdy)%u(ib,itide,1)*z_cost + & 
    484                      &                        tides(ib_bdy)%u(ib,itide,2)*z_sist ) 
    485                END DO 
    486                ! 
    487                igrd=3                              ! V grid 
    488                DO ib = 1, ilen0(igrd)  
    489                   dta_bdy(ib_bdy)%v2d(ib) = dta_bdy(ib_bdy)%v2d(ib) + & 
    490                      &                      ( tides(ib_bdy)%v(ib,itide,1)*z_cost + & 
    491                      &                        tides(ib_bdy)%v(ib,itide,2)*z_sist ) 
    492                END DO 
    493             END DO 
     470               IF ( dta_bdy(ib_bdy)%ll_ssh ) THEN 
     471                  igrd=1                              ! SSH on tracer grid 
     472                  DO ib = 1, ilen0(igrd) 
     473                     dta_bdy(ib_bdy)%ssh(ib) = dta_bdy(ib_bdy)%ssh(ib) + & 
     474                        &                      ( tides(ib_bdy)%ssh(ib,itide,1)*z_cost + & 
     475                        &                        tides(ib_bdy)%ssh(ib,itide,2)*z_sist ) 
     476                  END DO 
     477               ENDIF 
     478               ! 
     479               IF ( dta_bdy(ib_bdy)%ll_u2d ) THEN 
     480                  igrd=2                              ! U grid 
     481                  DO ib = 1, ilen0(igrd) 
     482                     dta_bdy(ib_bdy)%u2d(ib) = dta_bdy(ib_bdy)%u2d(ib) + & 
     483                        &                      ( tides(ib_bdy)%u(ib,itide,1)*z_cost + & 
     484                        &                        tides(ib_bdy)%u(ib,itide,2)*z_sist ) 
     485                  END DO 
     486               ENDIF 
     487               ! 
     488               IF ( dta_bdy(ib_bdy)%ll_v2d ) THEN 
     489                  igrd=3                              ! V grid 
     490                  DO ib = 1, ilen0(igrd)  
     491                     dta_bdy(ib_bdy)%v2d(ib) = dta_bdy(ib_bdy)%v2d(ib) + & 
     492                        &                      ( tides(ib_bdy)%v(ib,itide,1)*z_cost + & 
     493                        &                        tides(ib_bdy)%v(ib,itide,2)*z_sist ) 
     494                  END DO 
     495               ENDIF 
     496            END DO              
    494497         END IF 
    495498      END DO 
  • branches/2014/dev_CNRS_2014/NEMOGCM/NEMO/OPA_SRC/DIA/diawri.F90

    r4901 r4902  
    4545   USE diadimg         ! dimg direct access file format output 
    4646   USE diaar5, ONLY :   lk_diaar5 
    47    USE dynadv, ONLY :   ln_dynadv_vec 
    4847   USE iom 
    4948   USE ioipsl 
     
    129128      REAL(wp)                     ::   zztmp, zztmpx, zztmpy   !  
    130129      !! 
    131       REAL(wp), POINTER, DIMENSION(:,:)   :: z2d       ! 2D workspace 
     130      REAL(wp), POINTER, DIMENSION(:,:)   :: z2d      ! 2D workspace 
     131      REAL(wp), POINTER, DIMENSION(:,:)   :: z2ds     ! 2D workspace 
    132132      REAL(wp), POINTER, DIMENSION(:,:,:) :: z3d      ! 3D workspace 
    133133      !!---------------------------------------------------------------------- 
     
    135135      IF( nn_timing == 1 )   CALL timing_start('dia_wri') 
    136136      !  
    137       CALL wrk_alloc( jpi , jpj      , z2d ) 
     137      CALL wrk_alloc( jpi , jpj      , z2d , z2ds ) 
    138138      CALL wrk_alloc( jpi , jpj, jpk , z3d ) 
    139139      ! 
     
    192192      CALL iom_put( "sstgrad" ,  z2d               )    ! module of sst gradient 
    193193 
     194      ! clem: heat and salt content 
     195      z2d(:,:)  = 0._wp  
     196      z2ds(:,:) = 0._wp  
     197      DO jk = 1, jpkm1 
     198         DO jj = 2, jpjm1 
     199            DO ji = fs_2, fs_jpim1   ! vector opt. 
     200               z2d(ji,jj) = z2d(ji,jj) + rau0 * rcp * fse3t(ji,jj,jk) * tsn(ji,jj,jk,jp_tem) * tmask(ji,jj,jk) 
     201               z2ds(ji,jj) = z2ds(ji,jj) + rau0 * fse3t(ji,jj,jk) * tsn(ji,jj,jk,jp_sal) * tmask(ji,jj,jk) 
     202            END DO 
     203         END DO 
     204      END DO 
     205      CALL lbc_lnk( z2d, 'T', 1. ) 
     206      CALL lbc_lnk( z2ds, 'T', 1. ) 
     207      CALL iom_put( "heatc", z2d )    ! vertically integrated heat content (J/m2) 
     208      CALL iom_put( "saltc", z2ds )   ! vertically integrated salt content (PSU*kg/m2) 
     209   
     210      ! 
     211      rke(:,:,jk) = 0._wp                               !      kinetic energy  
     212      DO jk = 1, jpkm1 
     213         DO jj = 2, jpjm1 
     214            DO ji = fs_2, fs_jpim1   ! vector opt. 
     215               zztmp   = 1._wp / ( e1e2t(ji,jj) * fse3t(ji,jj,jk) ) 
     216               zztmpx  = 0.5 * (  un(ji-1,jj,jk) * un(ji-1,jj,jk) * e2u(ji-1,jj) * fse3u(ji-1,jj,jk)    & 
     217                  &             + un(ji  ,jj,jk) * un(ji  ,jj,jk) * e2u(ji  ,jj) * fse3u(ji  ,jj,jk) )  & 
     218                  &          *  zztmp  
     219               ! 
     220               zztmpy  = 0.5 * (  vn(ji,jj-1,jk) * vn(ji,jj-1,jk) * e1v(ji,jj-1) * fse3v(ji,jj-1,jk)    & 
     221                  &             + vn(ji,jj  ,jk) * vn(ji,jj  ,jk) * e1v(ji,jj  ) * fse3v(ji,jj  ,jk) )  & 
     222                  &          *  zztmp  
     223               ! 
     224               rke(ji,jj,jk) = 0.5_wp * ( zztmpx + zztmpy ) 
     225               ! 
     226            ENDDO 
     227         ENDDO 
     228      ENDDO 
     229      CALL lbc_lnk( rke, 'T', 1. ) 
     230      CALL iom_put( "eken", rke )            
     231 
    194232      IF( lk_diaar5 ) THEN 
    195233         z3d(:,:,jpk) = 0.e0 
    196234         DO jk = 1, jpkm1 
    197             z3d(:,:,jk) = rau0 * un(:,:,jk) * e2u(:,:) * fse3u(:,:,jk) 
     235            z3d(:,:,jk) = rau0 * un(:,:,jk) * e2u(:,:) * fse3u(:,:,jk) * umask(:,:,jk) 
    198236         END DO 
    199237         CALL iom_put( "u_masstr", z3d )                  ! mass transport in i-direction 
     238 
    200239         zztmp = 0.5 * rcp 
    201240         z2d(:,:) = 0.e0  
     241         z2ds(:,:) = 0.e0  
    202242         DO jk = 1, jpkm1 
    203243            DO jj = 2, jpjm1 
    204244               DO ji = fs_2, fs_jpim1   ! vector opt. 
    205245                  z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * zztmp * ( tsn(ji,jj,jk,jp_tem) + tsn(ji+1,jj,jk,jp_tem) ) 
     246                  z2ds(ji,jj) = z2ds(ji,jj) + z3d(ji,jj,jk) * 0.5_wp * ( tsn(ji,jj,jk,jp_sal) + tsn(ji+1,jj,jk,jp_sal) ) 
    206247               END DO 
    207248            END DO 
    208249         END DO 
    209250         CALL lbc_lnk( z2d, 'U', -1. ) 
     251         CALL lbc_lnk( z2ds, 'U', -1. ) 
    210252         CALL iom_put( "u_heattr", z2d )                  ! heat transport in i-direction 
     253         CALL iom_put( "u_salttr", z2ds )                 ! salt transport in i-direction 
     254 
     255         z3d(:,:,jpk) = 0.e0 
    211256         DO jk = 1, jpkm1 
    212             z3d(:,:,jk) = rau0 * vn(:,:,jk) * e1v(:,:) * fse3v(:,:,jk) 
     257            z3d(:,:,jk) = rau0 * vn(:,:,jk) * e1v(:,:) * fse3v(:,:,jk) * vmask(:,:,jk) 
    213258         END DO 
    214259         CALL iom_put( "v_masstr", z3d )                  ! mass transport in j-direction 
     260 
    215261         z2d(:,:) = 0.e0  
     262         z2ds(:,:) = 0.e0  
    216263         DO jk = 1, jpkm1 
    217264            DO jj = 2, jpjm1 
    218265               DO ji = fs_2, fs_jpim1   ! vector opt. 
    219266                  z2d(ji,jj) = z2d(ji,jj) + z3d(ji,jj,jk) * zztmp * ( tsn(ji,jj,jk,jp_tem) + tsn(ji,jj+1,jk,jp_tem) ) 
     267                  z2ds(ji,jj) = z2ds(ji,jj) + z3d(ji,jj,jk) * 0.5_wp * ( tsn(ji,jj,jk,jp_sal) + tsn(ji,jj+1,jk,jp_sal) ) 
    220268               END DO 
    221269            END DO 
    222270         END DO 
    223271         CALL lbc_lnk( z2d, 'V', -1. ) 
    224          CALL iom_put( "v_heattr", z2d )                  !  heat transport in i-direction 
    225       ENDIF 
    226       ! 
    227       CALL wrk_dealloc( jpi , jpj      , z2d ) 
     272         CALL lbc_lnk( z2ds, 'V', -1. ) 
     273         CALL iom_put( "v_heattr", z2d )                  !  heat transport in j-direction 
     274         CALL iom_put( "v_salttr", z2ds )                 !  salt transport in j-direction 
     275      ENDIF 
     276      ! 
     277      CALL wrk_dealloc( jpi , jpj      , z2d , z2ds ) 
    228278      CALL wrk_dealloc( jpi , jpj, jpk , z3d ) 
    229279      ! 
  • branches/2014/dev_CNRS_2014/NEMOGCM/NEMO/OPA_SRC/DOM/domvvl.F90

    r4897 r4902  
    808808            id3 = iom_varid( numror, 'tilde_e3t_b', ldstop = .FALSE. ) 
    809809            id4 = iom_varid( numror, 'tilde_e3t_n', ldstop = .FALSE. ) 
    810             id5 = iom_varid( numror, 'hdif_lf', ldstop = .FALSE. ) 
     810            id5 = iom_varid( numror, 'hdiv_lf', ldstop = .FALSE. ) 
    811811            !                             ! --------- ! 
    812812            !                             ! all cases ! 
  • branches/2014/dev_CNRS_2014/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90

    r4900 r4902  
    4444   USE agrif_opa_interp ! agrif 
    4545#endif 
    46  
     46#if defined key_asminc    
     47   USE asminc          ! Assimilation increment 
     48#endif 
    4749 
    4850   IMPLICIT NONE 
     
    455457      !                                             ! ==================== !   
    456458      ! Initialize barotropic variables:       
    457       IF( kt==nit000 .AND. .NOT. ln_rstart )THEN 
     459      IF( ll_init )THEN 
    458460         sshbb_e(:,:) = 0._wp 
    459461         ubb_e  (:,:) = 0._wp 
  • branches/2014/dev_CNRS_2014/NEMOGCM/NEMO/OPA_SRC/LBC/lib_mpp.F90

    r4897 r4902  
    20842084         IF (l_isend) THEN 
    20852085            DO jr = 1,nsndto 
    2086                IF ((nfipproc(isendto(jr),jpnj) .ne. (narea-1)) .and. (nfipproc(isendto(jr),jpnj) .ne. -1)) CALL mpi_wait(ml_req_nf(jr), ml_stat, ml_err) 
     2086               IF ((nfipproc(isendto(jr),jpnj) .ne. (narea-1)) .and. (nfipproc(isendto(jr),jpnj) .ne. -1)) THEN 
     2087                  CALL mpi_wait(ml_req_nf(jr), ml_stat, ml_err) 
     2088               ENDIF     
    20872089            END DO 
    20882090         ENDIF 
  • branches/2014/dev_CNRS_2014/NEMOGCM/NEMO/OPA_SRC/OBS/diaobs.F90

    r4897 r4902  
    208208      !----------------------------------------------------------------------- 
    209209 
     210      !Initalise all values in namelist arrays 
     211      enactfiles(:) = '' 
     212      coriofiles(:) = '' 
     213      profbfiles(:) = '' 
     214      slafilesact(:) = '' 
     215      slafilespas(:) = '' 
     216      slafbfiles(:) = '' 
     217      sstfiles(:)   = '' 
     218      sstfbfiles(:) = '' 
     219      seaicefiles(:) = '' 
    210220      velcurfiles(:) = '' 
    211221      veladcpfiles(:) = '' 
     222      velavcurfiles(:) = '' 
     223      velhrcurfiles(:) = '' 
     224      velavadcpfiles(:) = '' 
     225      velhradcpfiles(:) = '' 
     226      velfbfiles(:) = '' 
     227      velcurfiles(:) = '' 
     228      veladcpfiles(:) = '' 
     229      endailyavtypes(:) = -1 
     230      endailyavtypes(1) = 820 
     231      ln_profb_ena(:) = .FALSE. 
     232      ln_profb_enatim(:) = .TRUE. 
     233      ln_velfb_av(:) = .FALSE. 
     234      ln_ignmis = .FALSE. 
    212235      CALL ini_date( dobsini ) 
    213236      CALL fin_date( dobsend ) 
  • branches/2014/dev_CNRS_2014/NEMOGCM/NEMO/OPA_SRC/SBC/fldread.F90

    r4897 r4902  
    473473            !       forcing record :    1  
    474474            !                             
    475             ztmp = REAL( nday, wp ) / REAL( nyear_len(1), wp ) + 0.5 + REAL( it_offset, wp ) 
     475            ztmp = REAL( nsec_year, wp ) / ( REAL( nyear_len(1), wp ) * rday ) + 0.5 & 
     476           &       + REAL( it_offset, wp ) / ( REAL( nyear_len(1), wp ) * rday ) 
    476477            sdjf%nrec_a(1) = 1 + INT( ztmp ) - COUNT((/llbefore/)) 
    477478            ! swap at the middle of the year 
    478             IF( llbefore ) THEN   ;   sdjf%nrec_a(2) = nsec1jan000 - NINT(0.5 * rday) * nyear_len(0) 
    479             ELSE                  ;   sdjf%nrec_a(2) = nsec1jan000 + NINT(0.5 * rday) * nyear_len(1)    
     479            IF( llbefore ) THEN   ;   sdjf%nrec_a(2) = nsec1jan000 - (1 - INT(ztmp)) * NINT(0.5 * rday) * nyear_len(0) + & 
     480                                    & INT(ztmp) * NINT( 0.5 * rday) * nyear_len(1)  
     481            ELSE                  ;   sdjf%nrec_a(2) = nsec1jan000 + (1 - INT(ztmp)) * NINT(0.5 * rday) * nyear_len(1) + & 
     482                                    & INT(ztmp) * INT(rday) * nyear_len(1) + INT(ztmp) * NINT( 0.5 * rday) * nyear_len(2)  
    480483            ENDIF 
    481484         ELSE                                    ! no time interpolation 
     
    501504            !       forcing record :  nmonth  
    502505            !                             
    503             ztmp = REAL( nday, wp ) / REAL( nmonth_len(nmonth), wp ) + 0.5 + REAL( it_offset, wp ) 
     506            ztmp = REAL( nsec_month, wp ) / ( REAL( nmonth_len(nmonth), wp ) * rday ) + 0.5 & 
     507           &       + REAL( it_offset, wp ) / ( REAL( nmonth_len(nmonth), wp ) * rday ) 
    504508            imth = nmonth + INT( ztmp ) - COUNT((/llbefore/)) 
    505509            IF( sdjf%cltype == 'monthly' ) THEN   ;   sdjf%nrec_a(1) = 1 + INT( ztmp ) - COUNT((/llbefore/)) 
  • branches/2014/dev_CNRS_2014/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_lim.F90

    r4900 r4902  
    160160      IF( lk_cpl ) THEN 
    161161         IF ( ln_iceflx_ave .OR. ln_iceflx_linear ) & 
    162             &   CALL wrk_alloc( jpi,jpj, ztem_ice_all, zalb_ice_all, z_qsr_ice_all, z_qns_ice_all, z_qla_ice_all, z_dqns_ice_all, z_dqla_ice_all) 
     162            &   CALL wrk_alloc( jpi, jpj, ztem_ice_all , zalb_ice_all  , z_qsr_ice_all, z_qns_ice_all,   & 
     163            &                             z_qla_ice_all, z_dqns_ice_all, z_dqla_ice_all) 
    163164      ENDIF 
    164165 
     
    288289         ! 
    289290         !                                           ! Store previous ice values 
    290 !!gm : remark   old_...   should becomes ...b  as tn versus tb   
    291          old_a_i  (:,:,:)   = a_i  (:,:,:)     ! ice area 
    292          old_e_i  (:,:,:,:) = e_i  (:,:,:,:)   ! ice thermal energy 
    293          old_v_i  (:,:,:)   = v_i  (:,:,:)     ! ice volume 
    294          old_v_s  (:,:,:)   = v_s  (:,:,:)     ! snow volume  
    295          old_e_s  (:,:,:,:) = e_s  (:,:,:,:)   ! snow thermal energy 
    296          old_smv_i(:,:,:)   = smv_i(:,:,:)     ! salt content 
    297          old_oa_i (:,:,:)   = oa_i (:,:,:)     ! areal age content 
    298          old_u_ice(:,:)     = u_ice(:,:) 
    299          old_v_ice(:,:)     = v_ice(:,:) 
     291         a_i_b  (:,:,:)   = a_i  (:,:,:)     ! ice area 
     292         e_i_b  (:,:,:,:) = e_i  (:,:,:,:)   ! ice thermal energy 
     293         v_i_b  (:,:,:)   = v_i  (:,:,:)     ! ice volume 
     294         v_s_b  (:,:,:)   = v_s  (:,:,:)     ! snow volume  
     295         e_s_b  (:,:,:,:) = e_s  (:,:,:,:)   ! snow thermal energy 
     296         smv_i_b(:,:,:)   = smv_i(:,:,:)     ! salt content 
     297         oa_i_b (:,:,:)   = oa_i (:,:,:)     ! areal age content 
     298         u_ice_b(:,:)     = u_ice(:,:) 
     299         v_ice_b(:,:)     = v_ice(:,:) 
    300300 
    301301         ! trends    !!gm is it truly necessary ??? 
     
    311311         ! salt, heat and mass fluxes 
    312312         sfx    (:,:) = 0._wp   ; 
    313          sfx_bri(:,:) = 0._wp   ;   sfx_dyn(:,:) = 0._wp  
     313         sfx_bri(:,:) = 0._wp   ;  
    314314         sfx_sni(:,:) = 0._wp   ;   sfx_opw(:,:) = 0._wp 
    315315         sfx_bog(:,:) = 0._wp   ;   sfx_dyn(:,:) = 0._wp 
     
    370370         ENDIF 
    371371!                         !- Change old values for new values 
    372                           old_u_ice(:,:)   = u_ice (:,:) 
    373                           old_v_ice(:,:)   = v_ice (:,:) 
    374                           old_a_i(:,:,:)   = a_i (:,:,:) 
    375                           old_v_s(:,:,:)   = v_s (:,:,:) 
    376                           old_v_i(:,:,:)   = v_i (:,:,:) 
    377                           old_e_s(:,:,:,:) = e_s (:,:,:,:) 
    378                           old_e_i(:,:,:,:) = e_i (:,:,:,:) 
    379                           old_oa_i(:,:,:)  = oa_i(:,:,:) 
    380                           old_smv_i(:,:,:) = smv_i (:,:,:) 
     372                          u_ice_b(:,:)     = u_ice(:,:) 
     373                          v_ice_b(:,:)     = v_ice(:,:) 
     374                          a_i_b  (:,:,:)   = a_i (:,:,:) 
     375                          v_s_b  (:,:,:)   = v_s (:,:,:) 
     376                          v_i_b  (:,:,:)   = v_i (:,:,:) 
     377                          e_s_b  (:,:,:,:) = e_s (:,:,:,:) 
     378                          e_i_b  (:,:,:,:) = e_i (:,:,:,:) 
     379                          oa_i_b (:,:,:)   = oa_i (:,:,:) 
     380                          smv_i_b(:,:,:)   = smv_i(:,:,:) 
    381381  
    382382         ! ---------------------------------------------- 
     
    434434      IF( lk_cpl ) THEN 
    435435         IF ( ln_iceflx_ave .OR. ln_iceflx_linear ) & 
    436             &    CALL wrk_dealloc( jpi,jpj, ztem_ice_all, zalb_ice_all, z_qsr_ice_all, z_qns_ice_all, z_qla_ice_all, z_dqns_ice_all, z_dqla_ice_all) 
     436            &    CALL wrk_dealloc( jpi, jpj, ztem_ice_all , zalb_ice_all , z_qsr_ice_all, z_qns_ice_all,   & 
     437            &                                z_qla_ice_all, z_dqns_ice_all, z_dqla_ice_all) 
    437438      ENDIF 
    438439      ! 
     
    471472                  !WRITE(numout,*) ' at_i     ', at_i(ji,jj) 
    472473                  !WRITE(numout,*) ' Point - category', ji, jj, jl 
    473                   !WRITE(numout,*) ' a_i *** a_i_old ', a_i      (ji,jj,jl), old_a_i  (ji,jj,jl) 
    474                   !WRITE(numout,*) ' v_i *** v_i_old ', v_i      (ji,jj,jl), old_v_i  (ji,jj,jl) 
     474                  !WRITE(numout,*) ' a_i *** a_i_b   ', a_i      (ji,jj,jl), a_i_b  (ji,jj,jl) 
     475                  !WRITE(numout,*) ' v_i *** v_i_b   ', v_i      (ji,jj,jl), v_i_b  (ji,jj,jl) 
    475476                  !WRITE(numout,*) ' d_a_i_thd/trp   ', d_a_i_thd(ji,jj,jl), d_a_i_trp(ji,jj,jl) 
    476477                  !WRITE(numout,*) ' d_v_i_thd/trp   ', d_v_i_thd(ji,jj,jl), d_v_i_trp(ji,jj,jl) 
     
    582583               !DO jl = 1, jpl 
    583584                  !WRITE(numout,*) ' Category no: ', jl 
    584                   !WRITE(numout,*) ' a_i        : ', a_i      (ji,jj,jl) , ' old_a_i    : ', old_a_i  (ji,jj,jl)    
     585                  !WRITE(numout,*) ' a_i        : ', a_i      (ji,jj,jl) , ' a_i_b      : ', a_i_b  (ji,jj,jl)    
    585586                  !WRITE(numout,*) ' d_a_i_trp  : ', d_a_i_trp(ji,jj,jl) , ' d_a_i_thd  : ', d_a_i_thd(ji,jj,jl)  
    586                   !WRITE(numout,*) ' v_i        : ', v_i      (ji,jj,jl) , ' old_v_i    : ', old_v_i  (ji,jj,jl)    
     587                  !WRITE(numout,*) ' v_i        : ', v_i      (ji,jj,jl) , ' v_i_b      : ', v_i_b  (ji,jj,jl)    
    587588                  !WRITE(numout,*) ' d_v_i_trp  : ', d_v_i_trp(ji,jj,jl) , ' d_v_i_thd  : ', d_v_i_thd(ji,jj,jl)  
    588589                  !WRITE(numout,*) ' ' 
     
    760761               WRITE(numout,*) ' strength      : ', strength(ji,jj) 
    761762               WRITE(numout,*) ' d_u_ice_dyn   : ', d_u_ice_dyn(ji,jj), ' d_v_ice_dyn   : ', d_v_ice_dyn(ji,jj) 
    762                WRITE(numout,*) ' old_u_ice     : ', old_u_ice(ji,jj)  , ' old_v_ice     : ', old_v_ice(ji,jj)   
     763               WRITE(numout,*) ' u_ice_b       : ', u_ice_b(ji,jj)    , ' v_ice_b       : ', v_ice_b(ji,jj)   
    763764               WRITE(numout,*) 
    764765                
     
    770771                  WRITE(numout,*) ' t_su       : ', t_su(ji,jj,jl)             , ' t_s        : ', t_s(ji,jj,1,jl) 
    771772                  WRITE(numout,*) ' sm_i       : ', sm_i(ji,jj,jl)             , ' o_i        : ', o_i(ji,jj,jl) 
    772                   WRITE(numout,*) ' a_i        : ', a_i(ji,jj,jl)              , ' old_a_i    : ', old_a_i(ji,jj,jl)    
     773                  WRITE(numout,*) ' a_i        : ', a_i(ji,jj,jl)              , ' a_i_b      : ', a_i_b(ji,jj,jl)    
    773774                  WRITE(numout,*) ' d_a_i_trp  : ', d_a_i_trp(ji,jj,jl)        , ' d_a_i_thd  : ', d_a_i_thd(ji,jj,jl)  
    774                   WRITE(numout,*) ' v_i        : ', v_i(ji,jj,jl)              , ' old_v_i    : ', old_v_i(ji,jj,jl)    
     775                  WRITE(numout,*) ' v_i        : ', v_i(ji,jj,jl)              , ' v_i_b      : ', v_i_b(ji,jj,jl)    
    775776                  WRITE(numout,*) ' d_v_i_trp  : ', d_v_i_trp(ji,jj,jl)        , ' d_v_i_thd  : ', d_v_i_thd(ji,jj,jl)  
    776                   WRITE(numout,*) ' v_s        : ', v_s(ji,jj,jl)              , ' old_v_s    : ', old_v_s(ji,jj,jl)   
     777                  WRITE(numout,*) ' v_s        : ', v_s(ji,jj,jl)              , ' v_s_b      : ', v_s_b(ji,jj,jl)   
    777778                  WRITE(numout,*) ' d_v_s_trp  : ', d_v_s_trp(ji,jj,jl)        , ' d_v_s_thd  : ', d_v_s_thd(ji,jj,jl) 
    778                   WRITE(numout,*) ' e_i1       : ', e_i(ji,jj,1,jl)/1.0e9      , ' old_ei1    : ', old_e_i(ji,jj,1,jl)/1.0e9  
     779                  WRITE(numout,*) ' e_i1       : ', e_i(ji,jj,1,jl)/1.0e9      , ' ei1        : ', e_i_b(ji,jj,1,jl)/1.0e9  
    779780                  WRITE(numout,*) ' de_i1_trp  : ', d_e_i_trp(ji,jj,1,jl)/1.0e9, ' de_i1_thd  : ', d_e_i_thd(ji,jj,1,jl)/1.0e9 
    780                   WRITE(numout,*) ' e_i2       : ', e_i(ji,jj,2,jl)/1.0e9      , ' old_ei2    : ', old_e_i(ji,jj,2,jl)/1.0e9   
     781                  WRITE(numout,*) ' e_i2       : ', e_i(ji,jj,2,jl)/1.0e9      , ' ei2_b      : ', e_i_b(ji,jj,2,jl)/1.0e9   
    781782                  WRITE(numout,*) ' de_i2_trp  : ', d_e_i_trp(ji,jj,2,jl)/1.0e9, ' de_i2_thd  : ', d_e_i_thd(ji,jj,2,jl)/1.0e9 
    782                   WRITE(numout,*) ' e_snow     : ', e_s(ji,jj,1,jl)            , ' old_e_snow : ', old_e_s(ji,jj,1,jl)  
     783                  WRITE(numout,*) ' e_snow     : ', e_s(ji,jj,1,jl)            , ' e_snow_b   : ', e_s_b(ji,jj,1,jl)  
    783784                  WRITE(numout,*) ' d_e_s_trp  : ', d_e_s_trp(ji,jj,1,jl)      , ' d_e_s_thd  : ', d_e_s_thd(ji,jj,1,jl) 
    784                   WRITE(numout,*) ' smv_i      : ', smv_i(ji,jj,jl)            , ' old_smv_i  : ', old_smv_i(ji,jj,jl)    
     785                  WRITE(numout,*) ' smv_i      : ', smv_i(ji,jj,jl)            , ' smv_i_b    : ', smv_i_b(ji,jj,jl)    
    785786                  WRITE(numout,*) ' d_smv_i_trp: ', d_smv_i_trp(ji,jj,jl)      , ' d_smv_i_thd: ', d_smv_i_thd(ji,jj,jl)  
    786                   WRITE(numout,*) ' oa_i       : ', oa_i(ji,jj,jl)             , ' old_oa_i   : ', old_oa_i(ji,jj,jl) 
     787                  WRITE(numout,*) ' oa_i       : ', oa_i(ji,jj,jl)             , ' oa_i_b     : ', oa_i_b(ji,jj,jl) 
    787788                  WRITE(numout,*) ' d_oa_i_trp : ', d_oa_i_trp(ji,jj,jl)       , ' d_oa_i_thd : ', d_oa_i_thd(ji,jj,jl) 
    788789               END DO !jl 
     
    792793               WRITE(numout,*) '   ~~~~~~~~~~~~~~~~ ' 
    793794               WRITE(numout,*) ' - Heat fluxes in and out the ice ***' 
    794                WRITE(numout,*) ' qsr_ini       : ', pfrld(ji,jj) * qsr(ji,jj) + SUM( old_a_i(ji,jj,:) * qsr_ice(ji,jj,:) ) 
    795                WRITE(numout,*) ' qns_ini       : ', pfrld(ji,jj) * qns(ji,jj) + SUM( old_a_i(ji,jj,:) * qns_ice(ji,jj,:) ) 
     795               WRITE(numout,*) ' qsr_ini       : ', pfrld(ji,jj) * qsr(ji,jj) + SUM( a_i_b(ji,jj,:) * qsr_ice(ji,jj,:) ) 
     796               WRITE(numout,*) ' qns_ini       : ', pfrld(ji,jj) * qns(ji,jj) + SUM( a_i_b(ji,jj,:) * qns_ice(ji,jj,:) ) 
    796797               WRITE(numout,*) 
    797798               WRITE(numout,*)  
  • branches/2014/dev_CNRS_2014/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_lim_2.F90

    r4901 r4902  
    5353   USE agrif_lim2_update 
    5454# endif 
     55 
     56#if defined key_bdy  
     57   USE bdyice_lim       ! unstructured open boundary data  (bdy_ice_lim routine) 
     58#endif 
    5559 
    5660   IMPLICIT NONE 
     
    217221                           CALL lim_trp_2      ( kt )      ! Ice transport   ( Advection/diffusion ) 
    218222           IF( ln_limdmp ) CALL lim_dmp_2      ( kt )      ! Ice damping  
     223#if defined key_bdy 
     224                           CALL bdy_ice_lim( kt ) ! bdy ice thermo 
     225#endif 
    219226         END IF 
    220227         !                                             ! Ice surface fluxes in coupled mode  
  • branches/2014/dev_CNRS_2014/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90

    r4901 r4902  
    180180  
    181181      fmmflx(:,:) = 0.0_wp                        ! freezing-melting array initialisation 
     182       
     183      taum(:,:) = 0.0_wp                           ! Initialise taum for use in gls in case of reduced restart 
    182184 
    183185      !                                            ! restartability    
  • branches/2014/dev_CNRS_2014/NEMOGCM/NEMO/OPA_SRC/TRA/traadv_mle.F90

    r4897 r4902  
    203203      ! 
    204204      !                                      !==  structure function value at uw- and vw-points  ==! 
    205       zhu(:,:) = 1._wp / zhu(:,:)                   ! hu --> 1/hu 
    206       zhv(:,:) = 1._wp / zhv(:,:) 
     205      DO jj = 1, jpjm1 
     206         DO ji = 1, fs_jpim1   ! vector opt. 
     207            zhu(ji,jj) = 1._wp / zhu(ji,jj)                   ! hu --> 1/hu 
     208            zhv(ji,jj) = 1._wp / zhv(ji,jj) 
     209         END DO 
     210      END DO 
     211      ! 
    207212      zpsi_uw(:,:,:) = 0._wp 
    208213      zpsi_vw(:,:,:) = 0._wp 
  • branches/2014/dev_CNRS_2014/NEMOGCM/NEMO/OPA_SRC/TRA/traqsr.F90

    r4901 r4902  
    129129      IF( kt == nit000 ) THEN                     ! Set the forcing field at nit000 - 1 
    130130         !                                        ! ----------------------------------- 
     131         qsr_hc(:,:,:) = 0.e0 
     132         ! 
    131133         IF( ln_rstart .AND.    &                    ! Restart: read in restart file 
    132134              & iom_varid( numror, 'qsr_hc_b', ldstop = .FALSE. ) > 0 ) THEN 
  • branches/2014/dev_CNRS_2014/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfgls.F90

    r4897 r4902  
    12581258               en  (:,:,:) = rn_emin 
    12591259               mxln(:,:,:) = 0.001         
     1260               avt_k (:,:,:) = avt (:,:,:) 
     1261               avm_k (:,:,:) = avm (:,:,:) 
     1262               avmu_k(:,:,:) = avmu(:,:,:) 
     1263               avmv_k(:,:,:) = avmv(:,:,:) 
    12601264               DO jit = nit000 + 1, nit000 + 10   ;   CALL zdf_gls( jit )   ;   END DO 
    12611265            ENDIF 
  • branches/2014/dev_CNRS_2014/NEMOGCM/NEMO/OPA_SRC/oce.F90

    r4901 r4902  
    8585      ALLOCATE(rhd (jpi,jpj,jpk) ,                                         & 
    8686         &     rhop(jpi,jpj,jpk) ,                                         & 
     87         &     rke(jpi,jpj,jpk)  ,                                         & 
    8788         &     sshb(jpi,jpj)     , sshn(jpi,jpj)   , ssha(jpi,jpj)   ,     & 
    8889         &     ub_b(jpi,jpj)     , un_b(jpi,jpj)   , ua_b(jpi,jpj)   ,     & 
  • branches/2014/dev_CNRS_2014/NEMOGCM/NEMO/OPA_SRC/step.F90

    r4901 r4902  
    307307      IF( lk_diaobs  )         CALL dia_obs( kstp )         ! obs-minus-model (assimilation) diagnostics (call after dynamics update) 
    308308 
    309       IF( lrst_oce .AND. ln_diahsb )   CALL dia_hsb_rst( kstp, 'WRITE' ) 
    310309      !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
    311310      ! Control and restarts 
  • branches/2014/dev_CNRS_2014/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zfechem.F90

    r4897 r4902  
    244244               ztrc   = ( trn(ji,jj,jk,jppoc) + trn(ji,jj,jk,jpgoc) + trn(ji,jj,jk,jpcal) + trn(ji,jj,jk,jpgsi) ) * 1.e6  
    245245#endif 
    246                IF( ln_dust )  zdust  = dust(ji,jj) / ( wdust * rday ) * tmask(ji,jj,jk) ! dust in kg/m2/s 
     246               IF( ln_dust )  zdust  = dust(ji,jj) / ( wdust / rday ) * tmask(ji,jj,jk) ! dust in kg/m2/s 
    247247               zlam1b = 3.e-5 + xlamdust * zdust + xlam1 * ztrc 
    248248               zscave = zfeequi * zlam1b * zstep 
  • branches/2014/dev_CNRS_2014/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmeso.F90

    r4897 r4902  
    163163              zfrac     = zproport * grazflux  * zstep * wsbio4(ji,jj,jk)      & 
    164164               &          * trn(ji,jj,jk,jpgoc) * trn(ji,jj,jk,jpmes)          & 
    165                &          * ( 0.1 + 3.9 * zratio2 / ( 1.**2 + zratio2 ) ) 
     165               &          * ( 0.2 + 3.8 * zratio2 / ( 1.**2 + zratio2 ) ) 
    166166              zfracfe   = zfrac * trn(ji,jj,jk,jpbfe) / (trn(ji,jj,jk,jpgoc) + rtrn) 
    167167 
  • branches/2014/dev_CNRS_2014/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmicro.F90

    r4897 r4902  
    137137               !    Various remineralization and excretion terms 
    138138               !    -------------------------------------------- 
    139                zgrasrat  = zgraztotf / ( zgraztot + rtrn ) 
    140                zgrasratn = zgraztotn / ( zgraztot + rtrn ) 
     139               zgrasrat  = ( zgraztotf + rtrn ) / ( zgraztot + rtrn ) 
     140               zgrasratn = ( zgraztotn + rtrn ) / ( zgraztot + rtrn ) 
    141141               zepshert  =  MIN( 1., zgrasratn, zgrasrat / ferat3) 
    142142               zepsherv  = zepshert * MIN( epsher, (1. - unass) * zgrasrat / ferat3, (1. - unass) * zgrasratn ) 
  • branches/2014/dev_CNRS_2014/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsed.F90

    r4897 r4902  
    3535   REAL(wp) :: ryyss                    !: number of seconds per year  
    3636   REAL(wp) :: r1_ryyss                 !: inverse of ryyss 
    37    REAL(wp) :: rmtss                    !: number of seconds per month 
    3837   REAL(wp) :: r1_rday                  !: inverse of rday 
    3938 
     
    8584      IF( kt == nittrc000 .AND. jnt == 1 )  THEN 
    8685         ryyss    = nyear_len(1) * rday    ! number of seconds per year and per month 
    87          rmtss    = ryyss / raamo 
    8886         r1_rday  = 1. / rday 
    8987         r1_ryyss = 1. / ryyss 
     
    9997      zdenit2d(:,:) = 0.e0 
    10098      zbureff (:,:) = 0.e0 
     99      zwork1  (:,:) = 0.e0 
     100      zwork2  (:,:) = 0.e0 
     101      zwork3  (:,:) = 0.e0 
     102      zwork4  (:,:) = 0.e0 
    101103 
    102104      ! Iron input/uptake due to sea ice : Crude parameterization based on Lancelot et al. 
     
    132134         !                                              ! Iron and Si deposition at the surface 
    133135         IF( ln_solub ) THEN 
    134             zirondep(:,:,1) = solub(:,:) * dust(:,:) * mfrac * rfact2 / fse3t(:,:,1) / ( 55.85 * rmtss ) + 3.e-10 * r1_ryyss  
     136            zirondep(:,:,1) = solub(:,:) * dust(:,:) * mfrac * rfact2 / fse3t(:,:,1) / 55.85 + 3.e-10 * r1_ryyss  
    135137         ELSE 
    136             zirondep(:,:,1) = dustsolub  * dust(:,:) * mfrac * rfact2 / fse3t(:,:,1) / ( 55.85 * rmtss ) + 3.e-10 * r1_ryyss  
     138            zirondep(:,:,1) = dustsolub  * dust(:,:) * mfrac * rfact2 / fse3t(:,:,1) / 55.85 + 3.e-10 * r1_ryyss  
    137139         ENDIF 
    138          zsidep(:,:) = 8.8 * 0.075 * dust(:,:) * mfrac * rfact2 / fse3t(:,:,1) / ( 28.1  * rmtss ) 
    139          zpdep (:,:) = 0.1 * 0.021 * dust(:,:) * mfrac * rfact2 / fse3t(:,:,1) / ( 31.   * rmtss ) / po4r  
     140         zsidep(:,:) = 8.8 * 0.075 * dust(:,:) * mfrac * rfact2 / fse3t(:,:,1) / 28.1  
     141         zpdep (:,:) = 0.1 * 0.021 * dust(:,:) * mfrac * rfact2 / fse3t(:,:,1) / 31. / po4r  
    140142         !                                              ! Iron solubilization of particles in the water column 
    141143         !                                              ! dust in kg/m2/s ---> 1/55.85 to put in mol/Fe ;  wdust in m/j 
     
    250252      DO jj = 1, jpj 
    251253         DO ji = 1, jpi 
    252             ikt = mbkt(ji,jj)  
     254            IF( tmask(ji,jj,1) == 1 ) THEN 
     255               ikt = mbkt(ji,jj)  
    253256# if defined key_kriest 
    254             zwork1(ji,jj) = trn(ji,jj,ikt,jpgsi) * zwscal (ji,jj) 
    255             zwork2(ji,jj) = trn(ji,jj,ikt,jppoc) * zwsbio3(ji,jj) 
     257               zwork1(ji,jj) = trn(ji,jj,ikt,jpgsi) * zwscal (ji,jj) 
     258               zwork2(ji,jj) = trn(ji,jj,ikt,jppoc) * zwsbio3(ji,jj) 
    256259# else 
    257             zwork1(ji,jj) = trn(ji,jj,ikt,jpgsi) * zwsbio4(ji,jj) 
    258             zwork2(ji,jj) = trn(ji,jj,ikt,jpgoc) * zwsbio4(ji,jj) + trn(ji,jj,ikt,jppoc) * zwsbio3(ji,jj)  
     260               zwork1(ji,jj) = trn(ji,jj,ikt,jpgsi) * zwsbio4(ji,jj) 
     261               zwork2(ji,jj) = trn(ji,jj,ikt,jpgoc) * zwsbio4(ji,jj) + trn(ji,jj,ikt,jppoc) * zwsbio3(ji,jj)  
    259262# endif 
    260             ! For calcite, burial efficiency is made a function of saturation 
    261             zfactcal      = MIN( excess(ji,jj,ikt), 0.2 ) 
    262             zfactcal      = MIN( 1., 1.3 * ( 0.2 - zfactcal ) / ( 0.4 - zfactcal ) ) 
    263             zwork3(ji,jj) = trn(ji,jj,ikt,jpcal) * zwscal(ji,jj) * 2.e0 * zfactcal 
     263               ! For calcite, burial efficiency is made a function of saturation 
     264               zfactcal      = MIN( excess(ji,jj,ikt), 0.2 ) 
     265               zfactcal      = MIN( 1., 1.3 * ( 0.2 - zfactcal ) / ( 0.4 - zfactcal ) ) 
     266               zwork3(ji,jj) = trn(ji,jj,ikt,jpcal) * zwscal(ji,jj) * 2.e0 * zfactcal 
     267            ENDIF 
    264268         END DO 
    265269      END DO 
  • branches/2014/dev_CNRS_2014/NEMOGCM/SETTE/BATCH_TEMPLATE/batch-x3750_ADA

    r4255 r4902  
    6565# 
    6666  if [ MPI_FLAG == "yes" ]; then 
    67      echo "Running time ${MPIRUN} ./opa" 
    68      time ${MPIRUN} ./opa 
     67     echo "Running time ${MPIRUN} ./opa -procs $OCEANCORES" 
     68     time ${MPIRUN} ./opa -procs $OCEANCORES 
    6969  else 
    7070     echo "Running time ./opa" 
  • branches/2014/dev_CNRS_2014/NEMOGCM/SETTE/iodef_sette.xml

    r4242 r4902  
    22<simulation>  
    33 
    4  <context id="nemo" time_origin="1900-01-01 00:00:00" > 
     4 <context id="nemo" time_origin="1950-01-01 00:00:00" > 
    55     
    66    <!-- $id$ --> 
     
    2121    --> 
    2222     
    23     <file_definition type="multiple_file" name="@expname@_@freq@_@startdate@_@enddate@" sync_freq="1d" min_digits="4"> 
     23    <file_definition type="multiple_file" name="@expname@_@freq@_@startdate@_@enddate@" sync_freq="10d" min_digits="4"> 
    2424     
    25       <file_group id="1h" output_freq="1h"  output_level="10" enabled=".FALSE."/> <!-- 1h files --> 
    26       <file_group id="2h" output_freq="2h"  output_level="10" enabled=".FALSE."/> <!-- 2h files --> 
    27       <file_group id="3h" output_freq="3h"  output_level="10" enabled=".FALSE."/> <!-- 3h files -->      
    28       <file_group id="4h" output_freq="4h"  output_level="10" enabled=".FALSE."/> <!-- 4h files --> 
    29       <file_group id="6h" output_freq="6h"  output_level="10" enabled=".FALSE."/> <!-- 6h files --> 
    30       
    31       <file_group id="1d" output_freq="1d"  output_level="10" enabled=".FALSE."/> <!-- 1d files --> 
     25      <file_group id="1ts" output_freq="1ts"  output_level="10" enabled=".TRUE."/> <!-- 1 time step files --> 
     26      <file_group id="1h" output_freq="1h"  output_level="10" enabled=".TRUE."/> <!-- 1h files --> 
     27      <file_group id="2h" output_freq="2h"  output_level="10" enabled=".TRUE."/> <!-- 2h files --> 
     28      <file_group id="3h" output_freq="3h"  output_level="10" enabled=".TRUE."/> <!-- 3h files -->      
     29      <file_group id="4h" output_freq="4h"  output_level="10" enabled=".TRUE."/> <!-- 4h files --> 
     30      <file_group id="6h" output_freq="6h"  output_level="10" enabled=".TRUE."/> <!-- 6h files -->      
     31      <file_group id="1d" output_freq="1d"  output_level="10" enabled=".TRUE."/> <!-- 1d files --> 
     32      <file_group id="3d" output_freq="3d"  output_level="10" enabled=".TRUE."/> <!-- 3d files -->     
     33      <file_group id="5d" output_freq="5d"  output_level="10" enabled=".TRUE."/>  <!-- 5d files -->   
     34      <file_group id="1m" output_freq="1mo" output_level="10" enabled=".TRUE."/> <!-- real monthly files --> 
     35      <file_group id="2m" output_freq="2mo" output_level="10" enabled=".TRUE."/> <!-- real 2m files --> 
     36      <file_group id="3m" output_freq="3mo" output_level="10" enabled=".TRUE."/> <!-- real 3m files --> 
     37      <file_group id="4m" output_freq="4mo" output_level="10" enabled=".TRUE."/> <!-- real 4m files --> 
     38      <file_group id="6m" output_freq="6mo" output_level="10" enabled=".TRUE."/> <!-- real 6m files --> 
    3239 
    33       <file_group id="3d" output_freq="3d"  output_level="10" enabled=".FALSE."/> <!-- 3d files --> 
    34       <file_group id="5d" output_freq="5d"  output_level="10" enabled=".FALSE."/> <!-- 5d files --> 
    35  
    36       <file_group id="1m" output_freq="1mo" output_level="10" enabled=".FALSE."/> <!-- real monthly files --> 
    37       <file_group id="2m" output_freq="2mo" output_level="10" enabled=".FALSE."/> <!-- real 2m files --> 
    38       <file_group id="3m" output_freq="3mo" output_level="10" enabled=".FALSE."/> <!-- real 3m files --> 
    39       <file_group id="4m" output_freq="4mo" output_level="10" enabled=".FALSE."/> <!-- real 4m files --> 
    40       <file_group id="6m" output_freq="6mo" output_level="10" enabled=".FALSE."/> <!-- real 6m files --> 
    41  
    42       <file_group id="1y"  output_freq="1y" output_level="10" enabled=".FALSE."/> <!-- real yearly files --> 
    43       <file_group id="2y"  output_freq="2y" output_level="10" enabled=".FALSE."/> <!-- real 2y files --> 
    44       <file_group id="5y"  output_freq="5y" output_level="10" enabled=".FALSE."/> <!-- real 5y files --> 
    45       <file_group id="10y" output_freq="10y" output_level="10" enabled=".FALSE."/> <!-- real 10y files --> 
     40      <file_group id="1y"  output_freq="1y" output_level="10" enabled=".TRUE."/> <!-- real yearly files --> 
     41      <file_group id="2y"  output_freq="2y" output_level="10" enabled=".TRUE."/> <!-- real 2y files --> 
     42      <file_group id="5y"  output_freq="5y" output_level="10" enabled=".TRUE."/> <!-- real 5y files --> 
     43      <file_group id="10y" output_freq="10y" output_level="10" enabled=".TRUE."/> <!-- real 10y files --> 
    4644 
    4745   </file_definition> 
     
    6462   <domain_definition src="./domain_def.xml"/> 
    6563    
    66    <grid_definition />     
    67    
     64   <grid_definition>     
     65     <grid id="grid_T_2D" domain_ref="grid_T"/> 
     66     <grid id="grid_T_3D" domain_ref="grid_T" axis_ref="deptht"/> 
     67     <grid id="grid_U_2D" domain_ref="grid_U"/> 
     68     <grid id="grid_U_3D" domain_ref="grid_U" axis_ref="depthu"/> 
     69     <grid id="grid_V_2D" domain_ref="grid_V"/> 
     70     <grid id="grid_V_3D" domain_ref="grid_V" axis_ref="depthv"/> 
     71     <grid id="grid_W_2D" domain_ref="grid_W"/> 
     72     <grid id="grid_W_3D" domain_ref="grid_W" axis_ref="depthw"/> 
     73    </grid_definition>    
    6874  </context> 
    6975   
     
    8692============================================================================================================ 
    8793    --> 
    88   
     94     
    8995    <file_definition type="multiple_file" name="@expname@_@freq@_@startdate@_@enddate@" sync_freq="10d" min_digits="4"> 
    9096     
    91       <file_group id="1h" output_freq="1h"  output_level="10" enabled=".FALSE."/> <!-- 1h files --> 
    92       <file_group id="2h" output_freq="2h"  output_level="10" enabled=".FALSE."/> <!-- 2h files --> 
    93       <file_group id="3h" output_freq="3h"  output_level="10" enabled=".FALSE."/> <!-- 3h files -->      
    94       <file_group id="4h" output_freq="4h"  output_level="10" enabled=".FALSE."/> <!-- 4h files --> 
    95       <file_group id="6h" output_freq="6h"  output_level="10" enabled=".FALSE."/> <!-- 6h files --> 
    96       
    97       <file_group id="1d" output_freq="1d"  output_level="10" enabled=".FALSE."/> <!-- 1d files --> 
     97      <file_group id="1ts" output_freq="1ts"  output_level="10" enabled=".TRUE."/> <!-- 1 time step files --> 
     98      <file_group id="1h" output_freq="1h"  output_level="10" enabled=".TRUE."/> <!-- 1h files --> 
     99      <file_group id="2h" output_freq="2h"  output_level="10" enabled=".TRUE."/> <!-- 2h files --> 
     100      <file_group id="3h" output_freq="3h"  output_level="10" enabled=".TRUE."/> <!-- 3h files -->      
     101      <file_group id="4h" output_freq="4h"  output_level="10" enabled=".TRUE."/> <!-- 4h files --> 
     102      <file_group id="6h" output_freq="6h"  output_level="10" enabled=".TRUE."/> <!-- 6h files -->      
     103      <file_group id="1d" output_freq="1d"  output_level="10" enabled=".TRUE."/> <!-- 1d files --> 
     104      <file_group id="3d" output_freq="3d"  output_level="10" enabled=".TRUE."/> <!-- 3d files -->     
     105      <file_group id="5d" output_freq="5d"  output_level="10" enabled=".TRUE."/>  <!-- 5d files -->   
     106      <file_group id="1m" output_freq="1mo" output_level="10" enabled=".TRUE."/> <!-- real monthly files --> 
     107      <file_group id="2m" output_freq="2mo" output_level="10" enabled=".TRUE."/> <!-- real 2m files --> 
     108      <file_group id="3m" output_freq="3mo" output_level="10" enabled=".TRUE."/> <!-- real 3m files --> 
     109      <file_group id="4m" output_freq="4mo" output_level="10" enabled=".TRUE."/> <!-- real 4m files --> 
     110      <file_group id="6m" output_freq="6mo" output_level="10" enabled=".TRUE."/> <!-- real 6m files --> 
    98111 
    99       <file_group id="3d" output_freq="3d"  output_level="10" enabled=".FALSE."/> <!-- 3d files --> 
    100       <file_group id="5d" output_freq="5d"  output_level="10" enabled=".FALSE."/> <!-- 5d files --> 
     112      <file_group id="1y"  output_freq="1y" output_level="10" enabled=".TRUE."/> <!-- real yearly files --> 
     113      <file_group id="2y"  output_freq="2y" output_level="10" enabled=".TRUE."/> <!-- real 2y files --> 
     114      <file_group id="5y"  output_freq="5y" output_level="10" enabled=".TRUE."/> <!-- real 5y files --> 
     115      <file_group id="10y" output_freq="10y" output_level="10" enabled=".TRUE."/> <!-- real 10y files --> 
    101116 
    102       <file_group id="1m" output_freq="1mo" output_level="10" enabled=".FALSE."/> <!-- real monthly files --> 
    103       <file_group id="2m" output_freq="2mo" output_level="10" enabled=".FALSE."/> <!-- real 2m files --> 
    104       <file_group id="3m" output_freq="3mo" output_level="10" enabled=".FALSE."/> <!-- real 3m files --> 
    105       <file_group id="4m" output_freq="4mo" output_level="10" enabled=".FALSE."/> <!-- real 4m files --> 
    106       <file_group id="6m" output_freq="6mo" output_level="10" enabled=".FALSE."/> <!-- real 6m files --> 
    107  
    108       <file_group id="1y"  output_freq="1y" output_level="10" enabled=".FALSE."/> <!-- real yearly files --> 
    109       <file_group id="2y"  output_freq="2y" output_level="10" enabled=".FALSE."/> <!-- real 2y files --> 
    110       <file_group id="5y"  output_freq="5y" output_level="10" enabled=".FALSE."/> <!-- real 5y files --> 
    111       <file_group id="10y" output_freq="10y" output_level="10" enabled=".FALSE."/> <!-- real 10y files --> 
    112       <file_group id="1h" output_freq="1h"  output_level="10" enabled=".FALSE."/> <!-- 1h files --> 
    113       <file_group id="2h" output_freq="2h"  output_level="10" enabled=".FALSE."/> <!-- 2h files --> 
    114       <file_group id="3h" output_freq="3h"  output_level="10" enabled=".FALSE."/> <!-- 3h files -->      
    115       <file_group id="4h" output_freq="4h"  output_level="10" enabled=".FALSE."/> <!-- 4h files --> 
    116       <file_group id="6h" output_freq="6h"  output_level="10" enabled=".FALSE."/> <!-- 6h files --> 
    117       
    118117   </file_definition> 
    119118     
     
    130129      <axis id="depthw" long_name="Vertical W levels" unit="m" positive="down" /> 
    131130      <axis id="nfloat" long_name="Float number"      unit="-"  /> 
     131      <axis id="icbcla" long_name="Iceberg class"     unit="-"  /> 
    132132   </axis_definition>  
    133133     
     
    146146  </context> 
    147147 
    148  
    149148  <context id="xios"> 
    150149 
     
    154153        We must have buffer_size > jpi*jpj*jpk*8 (with jpi and jpj the subdomain size) 
    155154--> 
    156      <variable id="buffer_size"               type="integer">10000000</variable> 
     155     <variable id="buffer_size"               type="integer">10155778</variable> 
    157156     <variable id="buffer_server_factor_size" type="integer">2</variable> 
    158157     <variable id="info_level"                type="integer">0</variable> 
     
    164163                
    165164  </context> 
    166    
    167165</simulation> 
  • branches/2014/dev_CNRS_2014/NEMOGCM/SETTE/prepare_exe_dir.sh

    r4373 r4902  
    7171 
    7272cp -r ${CONFIG_DIR}/${NEW_CONF}/EXP00/* ${EXE_DIR}/. 
    73 #cp -r ${SETTE_DIR}/iodef_sette.xml ${EXE_DIR}/iodef.xml 
     73cp -r ${SETTE_DIR}/iodef_sette.xml ${EXE_DIR}/iodef.xml 
    7474cd ${EXE_DIR} 
  • branches/2014/dev_CNRS_2014/NEMOGCM/SETTE/prepare_job.sh

    r4900 r4902  
    200200                  fi 
    201201            ;; 
     202                        XC_ARCHER_INTEL) 
     203                                # ocean cores are packed 24 to a node 
     204                                NB_REM=$( echo $NB_PROC | awk '{print ( $1 % 24 ) }') 
     205                                if [ ${NB_REM} == 0 ] ; then 
     206                                        # number of processes required is an integer multiple of 24 
     207                                        # 
     208                                        NB_NODES=$( echo $NB_PROC $NXIO_PROC | awk '{print ($1) / 24}') 
     209                                else 
     210                                        # 
     211                                        # number of processes required is not an integer multiple of 24 
     212                                        # round up the number of nodes required. 
     213                                        # 
     214                                        NB_NODES=$( echo $NB_PROC | awk '{printf("%d",($1) / 24 + 1 )}') 
     215                                fi 
     216                                # xios cores are sparsely packed at 4 to a node 
     217                                # but can not share nodes with the ocean cores 
     218                                NB_REM=$( echo $NXIO_PROC | awk '{print ( $2 % 4 ) }') 
     219                                if [ ${NB_REM} == 0 ] ; then 
     220                                        # number of processes required is an integer multiple of 4                            
     221                                        # 
     222                                        NB_NODES=$( echo $NB_NODES $NXIO_PROC | awk '{print ($1 + ( $2 / 4 ))}')                     
     223                                else 
     224                                        # 
     225                                        # number of processes required is not an integer multiple of 4                              
     226                                        # round up the number of nodes required. 
     227                                        # 
     228                                        NB_NODES=$( echo $NB_NODES $NXIO_PROC | awk '{print ($1 + ( $2 / 4 ) + 1)}')                     
     229                                fi 
     230                                ;; 
    202231                        ifort_MERCATOR_CLUSTER) 
    203232                                echo NB_PROCS ${NB_PROC} 
  • branches/2014/dev_CNRS_2014/NEMOGCM/SETTE/sette.sh

    r4379 r4902  
    136136# ORCA2_LIM_PISCES: 3 &  4 
    137137# ORCA2_OFF_PISCES: 5 &  6 
    138 # AMM12           : 7 &  8 
    139 # SAS             : 9 & 10 
    140 # ORCA2_AGRIF_LIM: 11 
    141 for config in 1 2 3 4 5 6 7 8 9 10 11 
     138# ORCA2_LIM3      : 7 &  8 
     139# AMM12           : 9 & 10  
     140# SAS             :11 & 12 
     141# ORCA2_AGRIF_LIM :13 
     142for config in 1 2 3 4 5 6 7 8 9 10 11 12 13 
    142143 
    143144do 
     
    629630fi 
    630631 
     632 
     633# TESTS FOR ORCA2_LIM3 CONFIGURATION 
     634if [ ${config} -eq 7 ] ;  then 
     635    ## Restartability tests for ORCA2_LIM3 
     636    export TEST_NAME="LONG" 
     637    cd ${CONFIG_DIR} 
     638    . ./makenemo -m ${CMP_NAM} -n ORCA2LIM3_LONG -r ORCA2_LIM3 -j 8 del_key ${DEL_KEYS} 
     639    cd ${SETTE_DIR} 
     640    . ./param.cfg 
     641    . ./all_functions.sh 
     642    . ./prepare_exe_dir.sh 
     643    JOB_FILE=${EXE_DIR}/run_job.sh 
     644    NPROC=4 
     645    if [ -f ${JOB_FILE} ] ; then \rm ${JOB_FILE} ; fi 
     646    cd ${EXE_DIR} 
     647    set_namelist namelist_cfg cn_exp \"O2L3_LONG\" 
     648    set_namelist namelist_cfg nn_it000 1 
     649    set_namelist namelist_cfg nn_itend 150 
     650    set_namelist namelist_cfg nn_stock 75 
     651    set_namelist namelist_cfg ln_clobber .true. 
     652    set_namelist namelist_cfg nn_fwb 0 
     653    set_namelist namelist_cfg jpni 2 
     654    set_namelist namelist_cfg jpnj 2 
     655    set_namelist namelist_cfg jpnij 4 
     656    set_namelist namelist_cfg nn_solv 2 
     657    if [ ${USING_MPMD} == "yes" ] ; then 
     658       set_xio_using_server iodef.xml true 
     659    else 
     660       set_xio_using_server iodef.xml false 
     661    fi 
     662    cd ${SETTE_DIR} 
     663    . ./prepare_job.sh input_ORCA2_LIM3.cfg $NPROC ${TEST_NAME} ${MPIRUN_FLAG} ${JOB_FILE} ${NUM_XIOSERVERS} 
     664     
     665    cd ${SETTE_DIR} 
     666    export TEST_NAME="SHORT" 
     667    . ./prepare_exe_dir.sh 
     668    cd ${EXE_DIR} 
     669    set_namelist namelist_cfg cn_exp \"O2L3_SHORT\" 
     670    set_namelist namelist_cfg nn_it000 76 
     671    set_namelist namelist_cfg nn_itend 150 
     672    set_namelist namelist_cfg nn_stock 75 
     673    set_namelist namelist_cfg ln_rstart .true. 
     674    set_namelist namelist_cfg nn_rstctl 2 
     675    set_namelist namelist_cfg ln_clobber .true. 
     676    set_namelist namelist_cfg nn_fwb 0 
     677    set_namelist namelist_cfg jpni 2 
     678    set_namelist namelist_cfg jpnj 2 
     679    set_namelist namelist_cfg jpnij 4 
     680    set_namelist namelist_cfg nn_solv 2 
     681    set_namelist namelist_cfg cn_ocerst_in \"O2L3_LONG_00000075_restart\" 
     682    set_namelist namelist_ice_cfg cn_icerst_in \"O2L3_LONG_00000075_restart_ice\" 
     683    for (( i=1; i<=$NPROC; i++)) ; do 
     684        L_NPROC=$(( $i - 1 )) 
     685        L_NPROC=`printf "%04d\n" ${L_NPROC}` 
     686        ln -sf ../LONG/O2L3_LONG_00000075_restart_${L_NPROC}.nc . 
     687        ln -sf ../LONG/O2L3_LONG_00000075_restart_ice_${L_NPROC}.nc . 
     688    done 
     689    if [ ${USING_MPMD} == "yes" ] ; then 
     690       set_xio_using_server iodef.xml true 
     691    else 
     692       set_xio_using_server iodef.xml false 
     693    fi 
     694    cd ${SETTE_DIR} 
     695    . ./prepare_job.sh input_ORCA2_LIM3.cfg $NPROC ${TEST_NAME} ${MPIRUN_FLAG} ${JOB_FILE} ${NUM_XIOSERVERS} 
     696    cd ${SETTE_DIR} 
     697    . ./fcm_job.sh $NPROC ${JOB_FILE} ${INTERACT_FLAG} ${MPIRUN_FLAG} 
     698fi 
     699 
     700if [ ${config} -eq 8 ] ;  then 
     701    ## Reproducibility tests for ORCA2_LIM3 
     702    export TEST_NAME="REPRO_4_4" 
     703    cd ${CONFIG_DIR} 
     704    . ./makenemo -m ${CMP_NAM} -n ORCA2LIM3_16 -r ORCA2_LIM3 -j 8 add_key "key_mpp_rep" del_key ${DEL_KEYS} 
     705    cd ${SETTE_DIR} 
     706    . ./param.cfg 
     707    . ./all_functions.sh 
     708    . ./prepare_exe_dir.sh 
     709    JOB_FILE=${EXE_DIR}/run_job.sh 
     710    NPROC=16 
     711    if [ -f ${JOB_FILE} ] ; then \rm ${JOB_FILE} ; fi 
     712    cd ${EXE_DIR} 
     713    set_namelist namelist_cfg nn_it000 1 
     714    set_namelist namelist_cfg nn_itend 75 
     715    set_namelist namelist_cfg nn_fwb 0 
     716    set_namelist namelist_cfg ln_ctl .false. 
     717    set_namelist namelist_cfg ln_clobber .true. 
     718    set_namelist namelist_cfg jpni 4 
     719    set_namelist namelist_cfg jpnj 4 
     720    set_namelist namelist_cfg jpnij 16 
     721    set_namelist namelist_cfg nn_solv 2 
     722    if [ ${USING_MPMD} == "yes" ] ; then 
     723       set_xio_using_server iodef.xml true 
     724    else 
     725       set_xio_using_server iodef.xml false 
     726    fi 
     727    cd ${SETTE_DIR} 
     728    . ./prepare_job.sh input_ORCA2_LIM3.cfg $NPROC ${TEST_NAME} ${MPIRUN_FLAG} ${JOB_FILE} ${NUM_XIOSERVERS} 
     729    cd ${SETTE_DIR} 
     730    . ./fcm_job.sh $NPROC ${JOB_FILE} ${INTERACT_FLAG} ${MPIRUN_FLAG} 
     731 
     732    cd ${SETTE_DIR} 
     733    export TEST_NAME="REPRO_2_8" 
     734    . ./prepare_exe_dir.sh 
     735    JOB_FILE=${EXE_DIR}/run_job.sh 
     736    NPROC=16 
     737    if [ -f ${JOB_FILE} ] ; then \rm ${JOB_FILE} ; fi 
     738    cd ${EXE_DIR} 
     739    set_namelist namelist_cfg nn_it000 1 
     740    set_namelist namelist_cfg nn_itend 75 
     741    set_namelist namelist_cfg ln_clobber .true. 
     742    set_namelist namelist_cfg nn_fwb 0 
     743    set_namelist namelist_cfg jpni 2 
     744    set_namelist namelist_cfg jpnj 8 
     745    set_namelist namelist_cfg jpnij 16 
     746    set_namelist namelist_cfg nn_solv 2 
     747    if [ ${USING_MPMD} == "yes" ] ; then 
     748       set_xio_using_server iodef.xml true 
     749    else 
     750       set_xio_using_server iodef.xml false 
     751    fi 
     752 
     753    cd ${SETTE_DIR} 
     754    . ./prepare_job.sh input_ORCA2_LIM3.cfg $NPROC ${TEST_NAME} ${MPIRUN_FLAG} ${JOB_FILE} ${NUM_XIOSERVERS} 
     755    cd ${SETTE_DIR} 
     756    . ./fcm_job.sh $NPROC ${JOB_FILE} ${INTERACT_FLAG} ${MPIRUN_FLAG} 
     757fi 
     758 
     759 
    631760# TESTS FOR AMM12 CONFIGURATION 
    632 if [ ${config} -eq 7 ] ;  then 
     761if [ ${config} -eq 9 ] ;  then 
    633762    ## Restartability tests for AMM12 
    634763    export TEST_NAME="LONG" 
     
    692821fi 
    693822 
    694 if [ ${config} -eq 8 ] ;  then 
     823if [ ${config} -eq 10 ] ;  then 
    695824## Reproducibility tests for AMM12 
    696825    export TEST_NAME="REPRO_8_4" 
     
    748877 
    749878# TESTS FOR ORCA2_SAS_LIM CONFIGURATION 
    750 if [ ${config} -eq 9 ] ;  then 
     879if [ ${config} -eq 11 ] ;  then 
    751880    ## Restartability tests for SAS 
    752881    export TEST_NAME="LONG" 
     
    810939fi 
    811940 
    812 if [ ${config} -eq 10 ] ;  then 
     941if [ ${config} -eq 12 ] ;  then 
    813942## Reproducibility tests for ORCA2_SAS_LIM 
    814943    export TEST_NAME="REPRO_8_4" 
     
    866995 
    867996# TEST FOR ORCA2_LIM_AGRIF : simple test of running AGRIF (no restartability neither reproducibility tests) 
    868 if [ ${config} -eq 11 ] ;  then 
     997if [ ${config} -eq 13 ] ;  then 
    869998    ## ORCA2_LIM with Agulhas AGRIF zoom in MPI 
    870999    export TEST_NAME="SHORT" 
  • branches/2014/dev_CNRS_2014/NEMOGCM/SETTE/sette_beginner.sh

    r4147 r4902  
    44# Contact : sflod@locean-ipsl.upmc.fr 
    55# 
    6 # sette.sh   : principal script of SET TEsts for NEMO (SETTE) 
     6# sette_beginner.sh   : example of script of SET TEsts for NEMO (SETTE) 
    77# ---------------------------------------------------------------------- 
    88# NEMO/SETTE , NEMO Consortium (2010) 
     
    2121# =================== 
    2222# 
    23 # ---------------------------------------------- 
    24 # Set of tests for NEMO for beginners 
    25 # ---------------------------------------------- 
     23# COMPILER          : name of compiler as defined in NEMOGCM/ARCH directory  
     24# BATCH_COMMAND_PAR :  name of the command for submitting parallel batch jobs 
     25# BATCH_COMMAND_SEQ :  name of the command for submitting sequential batch jobs   
     26# INTERACT_FLAG     : flag to run in interactive mode "yes" 
     27#                           to run in batch mode "no" 
     28# MPIRUN_FLAG       : flag to run in parallel (MPI) "yes" 
     29#                           to run in sequential mode (NB_PROC = 1) "no" 
     30# USING_XIOS        : flag to control the activation of key_iomput 
     31#                      "yes" to compile using key_iomput and link to the external XIOS library 
     32#                      "no"  to compile without key_iomput and link to the old IOIPSL library 
     33# USING_MPMD        : flag to control the use of stand-alone IO servers 
     34#                     requires USING_XIOS="yes" 
     35#                      "yes" to run in MPMD (detached) mode with stand-alone IO servers 
     36#                      "no"  to run in SPMD (attached) mode without separate IO servers  
     37# NUM_XIOSERVERS    : number of stand-alone IO servers to employ 
     38#                     set to zero if USING_MPMD="no" 
    2639# 
    27 # SYNOPSIS 
    28 # ======== 
     40# Principal script is sette.sh, that calls  
    2941# 
    30 # :: 
     42#  makenemo  : to create successive exectuables in ${CONFIG_NAME}/BLD/bin/nemo.exe  
     43#              and links to opa in ${CONFIG_NAME}/EXP00) 
    3144# 
    32 $ ./sette_beginner.sh 
     45param.cfg : sets and loads following directories: 
    3346# 
    34 # DESCRIPTION 
    35 # =========== 
    36 # First simple example of how to use SETTE: create GYRE_SHORT configuration, compile it with 1 proc, and test it for a SHORT test: 5days 
    37 #- 
     47#   FORCING_DIR         : is the directory for forcing files (tarfile) 
     48#   INPUT_DIR           : is the directory for input files storing  
     49#   TMPDIR              : is the temporary directory (if needed) 
     50#   NEMO_VALIDATION_DIR : is the validation directory 
     51# 
     52#   (NOTE: this file is the same for all configrations to be tested with sette) 
     53# 
     54#   all_functions.sh : loads functions used by sette (note: new functions can be added here) 
     55#   set_namelist     : function declared in all_functions that sets namelist parameters  
     56#   post_test_tidyup : creates validation storage directory and copies required output files  
     57#                      (solver.stat and ocean.output) in it after execution of test. 
     58# 
     59#  VALIDATION tree is: 
     60# 
     61#   NEMO_VALIDATION_DIR/WCONFIG_NAME/WCOMPILER_NAME/TEST_NAME/REVISION_NUMBER(or DATE) 
     62# 
     63#  prepare_exe_dir.sh : defines and creates directory where the test is executed 
     64#                       execution directory takes name of TEST_NAME defined for every test  
     65#                       in sette.sh. (each test in executed in its own directory) 
     66# 
     67#  prepare_job.sh     : to generate the script run_job.sh 
     68# 
     69#  fcm_job.sh         : run in batch (INTERACT_FLAG="no") or interactive (INTERACT_FLAG="yes") 
     70#                        see sette.sh and BATCH_TEMPLATE directory 
     71# 
     72#  NOTE: jobs requiring initial or forcing data need to have an input_CONFIG.cfg in which  
     73#        can be found paths to the input tar file) 
     74#  NOTE: if job is not launched for any reason you have the executable ready in ${EXE_DIR}  
     75#        directory 
     76#  NOTE: the changed namelists are left in ${EXE_DIR} directory whereas original namelists  
     77#        remain in ${NEW_CONF}/EXP00 
     78#  
     79#  NOTE: a log file, output.sette, is created in ${SETTE_DIR} with the echoes of  
     80#        executed commands 
     81# 
     82#  NOTE: if sette.sh is stopped in output.sette there is written the last command  
     83#        executed by sette.sh 
     84# 
     85# example use: ./sette_beginner.sh  
     86######################################################################################### 
    3887# 
    3988# Compiler among those in NEMOGCM/ARCH 
    40 COMPILER=macport_osx 
     89COMPILER=x3750_ADA 
    4190export BATCH_COMMAND_PAR="llsubmit" 
    4291export BATCH_COMMAND_SEQ=$BATCH_COMMAND_PAR 
    4392export INTERACT_FLAG="yes" 
    4493export MPIRUN_FLAG="yes" 
     94 
     95export DEL_KEYS="key_iomput" 
     96if [ ${USING_XIOS} == "yes" ] 
     97 then  
     98   export DEL_KEYS="" 
     99fi 
     100 
     101# 
     102# Settings which control the use of stand alone servers (only relevant if using xios) 
     103# 
     104export USING_MPMD="no" 
     105export NUM_XIOSERVERS=4 
     106export JOB_PREFIX=batch-mpmd 
     107# 
     108if [ ${USING_MPMD} == "no" ]  
     109 then 
     110   export NUM_XIOSERVERS=0 
     111   export JOB_PREFIX=batch 
     112fi 
     113# 
     114# 
     115if [ ${USING_MPMD} == "yes" ] && [ ${USING_XIOS} == "no"] 
     116 then 
     117   echo "Incompatible choices. MPMD mode requires the XIOS server" 
     118   exit 
     119fi 
     120# 
    45121 
    46122# Directory to run the tests 
     
    54130# Copy job_batch_COMPILER file for specific compiler into job_batch_template 
    55131cd ${SETTE_DIR} 
    56 ##if [ ${INTERACT_FLAG} == no ] ;  then 
    57     cp BATCH_TEMPLATE/batch-${COMPILER} job_batch_template || exit 
    58 ##fi  
     132cp BATCH_TEMPLATE/batch-${COMPILER} job_batch_template || exit 
    59133 
    60134# Run for GYRE CONFIG 
     
    63137export TEST_NAME="SHORT_TEST" 
    64138cd ${CONFIG_DIR} 
    65 . ./makenemo -m ${CMP_NAM} -n GYRE_SHORT -r GYRE -j 10 add_key "key_mpp_mpi key_nosignedzero" 
     139. ./makenemo -m ${CMP_NAM} -n GYRE_SHORT -r GYRE -j 10 add_key "key_nosignedzero" del_key ${DEL_KEYS} 
    66140cd ${SETTE_DIR} 
    67 . param.cfg  
    68 . all_functions.sh 
     141. ./param.cfg  
     142. ./all_functions.sh 
     143. ./prepare_exe_dir.sh 
    69144# creation of execution directory 
    70 . prepare_exe_dir.sh 
    71145JOB_FILE=${EXE_DIR}/run_job.sh 
     146# setting number of procs used 
    72147NPROC=4 
    73 \rm $JOB_FILE 
     148if [ -f ${JOB_FILE} ] ; then \rm ${JOB_FILE} ; fi 
    74149cd ${EXE_DIR} 
    75150# setting namelist parameters 
     
    82157# frequency of creation of a restart file 
    83158set_namelist namelist_cfg nn_stock 60 
    84  
     159if [ ${USING_MPMD} == "yes" ] ; then 
     160      set_xio_using_server iodef.xml true 
     161   else 
     162      set_xio_using_server iodef.xml false 
     163fi 
    85164cd ${SETTE_DIR} 
    86 . ./prepare_job.sh input_GYRE.cfg $NPROC ${TEST_NAME} ${MPIRUN_FLAG} ${JOB_FILE} 
     165. ./prepare_job.sh input_GYRE.cfg $NPROC ${TEST_NAME} ${MPIRUN_FLAG} ${JOB_FILE} ${NUM_XIOSERVERS} 
    87166# run job, with 4 processors, test named SHORT (= 60 time steps) 
    88167cd ${SETTE_DIR}    
  • branches/2014/dev_CNRS_2014/NEMOGCM/TOOLS/COMPILE/bld.cfg

    r4901 r4902  
    2424 
    2525 
     26bld::tool::cpp       %CPP 
     27bld::tool::fpp       %CPP 
    2628bld::tool::fc        %FC  
    2729bld::tool::fflags    %FCFLAGS %USER_INC 
  • branches/2014/dev_CNRS_2014/NEMOGCM/TOOLS/COMPILE/bld_preproagr.cfg

    r4901 r4902  
    3434bld::pp::nemo     1 
    3535bld::pp::nemo/agrif2model     0 
    36 bld::tool::fpp       cpp 
     36bld::tool::cpp       %CPP 
     37bld::tool::fpp       %CPP 
    3738bld::tool::fppflags::nemo  %FPPFLAGS 
    3839 
  • branches/2014/dev_CNRS_2014/NEMOGCM/TOOLS/COMPILE/bld_tools.cfg

    r2281 r4902  
    1616dir::root            $NEMO_TDIR/$NEW_CONF/BLD 
    1717 
     18bld::tool::cpp       %CPP 
     19bld::tool::fpp       %CPP 
    1820bld::tool::fc        %FC  
    1921bld::tool::fflags    %FCFLAGS %USER_INC 
  • branches/2014/dev_CNRS_2014/NEMOGCM/TOOLS/COMPILE/bldxag.cfg

    r4901 r4902  
    2323 
    2424 
     25bld::tool::cpp       %CPP 
     26bld::tool::fpp       %CPP 
    2527bld::tool::fc        %FC  
    2628bld::tool::fflags    %FCFLAGS %USER_INC 
Note: See TracChangeset for help on using the changeset viewer.