Index: branches/dev_r4028_CNRS_LIM3_MV2014/NEMOGCM/CONFIG/ORCA2_LIM3/EXP00/field_def.xml
===================================================================
--- branches/dev_r4028_CNRS_LIM3_MV2014/NEMOGCM/CONFIG/ORCA2_LIM3/EXP00/field_def.xml (revision 4506)
+++ branches/dev_r4028_CNRS_LIM3_MV2014/NEMOGCM/CONFIG/ORCA2_LIM3/EXP00/field_def.xml (revision 4525)
@@ -231,4 +231,12 @@
+
+
+
+
+
+
+
+
Index: branches/dev_r4028_CNRS_LIM3_MV2014/NEMOGCM/CONFIG/ORCA2_LIM3/EXP00/iodef.xml
===================================================================
--- branches/dev_r4028_CNRS_LIM3_MV2014/NEMOGCM/CONFIG/ORCA2_LIM3/EXP00/iodef.xml (revision 4506)
+++ branches/dev_r4028_CNRS_LIM3_MV2014/NEMOGCM/CONFIG/ORCA2_LIM3/EXP00/iodef.xml (revision 4525)
@@ -132,4 +132,11 @@
+
+
+
+
+
+
+
Index: branches/dev_r4028_CNRS_LIM3_MV2014/NEMOGCM/CONFIG/ORCA2_LIM3/EXP00/namelist_ice
===================================================================
--- branches/dev_r4028_CNRS_LIM3_MV2014/NEMOGCM/CONFIG/ORCA2_LIM3/EXP00/namelist_ice (revision 4506)
+++ branches/dev_r4028_CNRS_LIM3_MV2014/NEMOGCM/CONFIG/ORCA2_LIM3/EXP00/namelist_ice (revision 4525)
@@ -22,5 +22,5 @@
ln_nicep = .false. ! Ice points output for debug (yes or no)
ln_limdiahsb = .false. ! check the heat and salt budgets (T) or not (F)
- ln_limdiaout = .true. ! output the heat and salt budgets (T) or not (F)
+ ln_limdiaout = .false. ! output the heat and salt budgets (T) or not (F)
/
!-----------------------------------------------------------------------
@@ -58,5 +58,5 @@
telast =9600.0 ! timescale for elastic waves, SB, 720.0
alphaevp = 1.0 ! coefficient for the solution of internal ice stresses
- hminrhg = 0.001 ! ice thickness (m) below which ice velocity equal ocean velocity
+ hminrhg = 0.001 ! ice volume (a*h in m) below which ice velocity equal ocean velocity
/
!-----------------------------------------------------------------------
@@ -149,53 +149,10 @@
&namiceout ! parameters for outputs
!-----------------------------------------------------------------------
- noumef = 43 ! number of fields
- add_diag_swi= 1 ! 1 -> diagnose distribution in thickness space
- ! 0 -> only simple diagnostics
+! noumef = 43 ! number of fields
+!SF add_diag_swi= 1 ! 1 -> diagnose distribution in thickness space
+!SF ! 0 -> only simple diagnostics
!
! ! title of the field ! name ! units ! save ! multipl. ! additive !
! ! ! ! ! or not ! factor ! factor !
- field_1 = 'Ice concentration ', 'iiceconc', '% ', 1 , 1.0 , 0.0
- field_2 = 'Ice thickness ', 'iicethic', 'm ', 1 , 1.0 , 0.0
- field_3 = 'Snow thickness ', 'isnowthi', 'm ', 1 , 1.0 , 0.0
- field_4 = 'Daily bottom thermo ice production ', 'iicebopr', 'km3/day ', 1 , 1.0e-9 , 0.0
- field_5 = 'Daily dynamic ice production ', 'iicedypr', 'km3/day ', 1 , 1.0e-9 , 0.0
- field_6 = 'Oceanic flux at the ice base ', 'ioceflxb', 'w/m2 ', 1 , 1.0 , 0.0
- field_7 = 'Ice velocity u ', 'iicevelu', 'm/s ', 1 , 1.0 , 0.0
- field_8 = 'Ice velocity v ', 'iicevelv', 'm/s ', 1 , 1.0 , 0.0
- field_9 = 'Sea surface temperature ', 'isstempe', 'C ', 1 , 1.0 , -273.15
- field_10 = 'Sea surface salinity ', 'isssalin', 'PSU ', 1 , 1.0 , 0.0
- field_11 = 'Total flux at ocean surface ', 'iocetflx', 'w/m2 ', 1 , 1.0 , 0.0
- field_12 = 'Solar flux at ocean surface ', 'iocesflx', 'w/m2 ', 1 , 1.0 , 0.0
- field_13 = 'Non-solar flux at ocean surface ', 'iocwnsfl', 'w/m2 ', 1 , 1.0 , 0.0
- field_14 = 'Heat flux due to brine release ', 'iocehebr', 'w/m2 ', 1 , 1.0 , 0.0
- field_15 = 'Wind stress u ', 'iocestru', 'Pa ', 1 , 1.0 , 0.0
- field_16 = 'Wind stress v ', 'iocestrv', 'Pa ', 1 , 1.0 , 0.0
- field_17 = 'Solar flux at ice/ocean surface ', 'iicesflx', 'w/m2 ', 1 , 1.0 , 0.0
- field_18 = 'Non-solar flux at ice/ocean surface', 'iicenflx', 'w/m2 ', 1 , 1.0 , 0.0
- field_19 = 'Snow precipitation ', 'isnowpre', 'kg/m2/d ', 1 , 1.0 , 0.0
- field_20 = 'Mean ice salinity ', 'iicesali', 'psu ', 1 , 1.0 , 0.0
- field_21 = 'Mean ice age ', 'iiceages', 'years ', 1 , 0.002739, 0.0
- field_22 = 'Daily lateral thermo ice prod. ', 'iicelapr', 'km3/day ', 1 ,1.0e-9 , 0.0
- field_23 = 'Daily snowice ice production ', 'iicesipr', 'km3/day ', 1 ,1.0e-9 , 0.0
- field_24 = 'Mean ice temperature ', 'iicetemp', 'C ', 1 , 1.0 , -273.15
- field_25 = 'Ice total heat content ', 'iiceheco', '10^9 J ', 1 , 1.0 , 0.0
- field_26 = 'Ice surface temperature ', 'iicesurt', 'C ', 1 , 1.0 , -273.15
- field_27 = 'Snow temperature ', 'isnotem2', 'C ', 1 , 1.0 , -273.15
- field_28 = 'Fsbri - brine salt flux ', 'iicefsbr', 'kg/m2/d ', 1 , 1.0 , 0.0
- field_29 = 'Fseqv - equivalent FW salt flux ', 'iicefseq', 'kg/m2/d ', 1 , 1.0 , 0.0
- field_30 = 'Brine volume ', 'ibrinvol', '% ', 1 , 100.0 , 0.0
- field_31 = 'Frazil ice collection thickness ', 'iicecolf', 'm ', 1 , 1.0 , 0.0
- field_32 = 'Ice strength ', 'iicestre', 'N/m ', 1 , 0.001 , 0.0
- field_33 = 'Ice velocity ', 'iicevelo', 'm/s ', 1 , 1.0 , 0.0
- field_34 = 'Surface melt ', 'iicesume', 'km3/day ', 1 ,1.0e-9 , 0.0
- field_35 = 'Bottom melt ', 'iicebome', 'km3/day ', 1 ,1.0e-9 , 0.0
- field_36 = 'Divergence ', 'iicedive', '10-8s-1 ', 1 , 1.0e8 , 0.0
- field_37 = 'Shear ', 'iiceshea', '10-8s-1 ', 1 , 1.0e8 , 0.0
- field_38 = 'Daily resultant ice prod/melt ', 'iicerepr', 'km3/day ', 1 , 1.0e-9 , 0.0
- field_39 = 'Ice volume ', 'iicevolu', 'km3 ', 1 , 1.0e-9 , 0.0
- field_40 = 'Snow volume ', 'isnowvol', 'km3 ', 1 , 1.0e-9 , 0.0
- field_41 = 'Fsrpo - salt flux from ridg/raft ', 'iicefsrp', 'kg/m2/d ', 1 , 1.0 , 0.0
- field_42 = 'Fsres - salt flux from limupdate ', 'iicefsre', 'kg/m2/d ', 1 , 1.0 , 0.0
- field_43 = 'Ice volume transport ', 'iicevtrp', 'km3/day ', 1 ,1.0e-9 , 0.0
/
Index: branches/dev_r4028_CNRS_LIM3_MV2014/NEMOGCM/CONFIG/ORCA2_LIM3/EXP00/namelist_ice_lim3
===================================================================
--- branches/dev_r4028_CNRS_LIM3_MV2014/NEMOGCM/CONFIG/ORCA2_LIM3/EXP00/namelist_ice_lim3 (revision 4506)
+++ branches/dev_r4028_CNRS_LIM3_MV2014/NEMOGCM/CONFIG/ORCA2_LIM3/EXP00/namelist_ice_lim3 (revision 4525)
@@ -22,5 +22,5 @@
ln_nicep = .false. ! Ice points output for debug (yes or no)
ln_limdiahsb = .false. ! check the heat and salt budgets (T) or not (F)
- ln_limdiaout = .true. ! output the heat and salt budgets (T) or not (F)
+ ln_limdiaout = .false. ! output the heat and salt budgets (T) or not (F)
/
!-----------------------------------------------------------------------
@@ -149,53 +149,10 @@
&namiceout ! parameters for outputs
!-----------------------------------------------------------------------
- noumef = 43 ! number of fields
- add_diag_swi= 1 ! 1 -> diagnose distribution in thickness space
- ! 0 -> only simple diagnostics
+! noumef = 43 ! number of fields
+!SF add_diag_swi= 1 ! 1 -> diagnose distribution in thickness space
+!SF ! 0 -> only simple diagnostics
!
! ! title of the field ! name ! units ! save ! multipl. ! additive !
! ! ! ! ! or not ! factor ! factor !
- field_1 = 'Ice concentration ', 'iiceconc', '% ', 1 , 1.0 , 0.0
- field_2 = 'Ice thickness ', 'iicethic', 'm ', 1 , 1.0 , 0.0
- field_3 = 'Snow thickness ', 'isnowthi', 'm ', 1 , 1.0 , 0.0
- field_4 = 'Daily bottom thermo ice production ', 'iicebopr', 'km3/day ', 1 , 1.0e-9 , 0.0
- field_5 = 'Daily dynamic ice production ', 'iicedypr', 'km3/day ', 1 , 1.0e-9 , 0.0
- field_6 = 'Oceanic flux at the ice base ', 'ioceflxb', 'w/m2 ', 1 , 1.0 , 0.0
- field_7 = 'Ice velocity u ', 'iicevelu', 'm/s ', 1 , 1.0 , 0.0
- field_8 = 'Ice velocity v ', 'iicevelv', 'm/s ', 1 , 1.0 , 0.0
- field_9 = 'Sea surface temperature ', 'isstempe', 'C ', 1 , 1.0 , -273.15
- field_10 = 'Sea surface salinity ', 'isssalin', 'PSU ', 1 , 1.0 , 0.0
- field_11 = 'Total flux at ocean surface ', 'iocetflx', 'w/m2 ', 1 , 1.0 , 0.0
- field_12 = 'Solar flux at ocean surface ', 'iocesflx', 'w/m2 ', 1 , 1.0 , 0.0
- field_13 = 'Non-solar flux at ocean surface ', 'iocwnsfl', 'w/m2 ', 1 , 1.0 , 0.0
- field_14 = 'Heat flux due to brine release ', 'iocehebr', 'w/m2 ', 1 , 1.0 , 0.0
- field_15 = 'Wind stress u ', 'iocestru', 'Pa ', 1 , 1.0 , 0.0
- field_16 = 'Wind stress v ', 'iocestrv', 'Pa ', 1 , 1.0 , 0.0
- field_17 = 'Solar flux at ice/ocean surface ', 'iicesflx', 'w/m2 ', 1 , 1.0 , 0.0
- field_18 = 'Non-solar flux at ice/ocean surface', 'iicenflx', 'w/m2 ', 1 , 1.0 , 0.0
- field_19 = 'Snow precipitation ', 'isnowpre', 'kg/m2/d ', 1 , 1.0 , 0.0
- field_20 = 'Mean ice salinity ', 'iicesali', 'psu ', 1 , 1.0 , 0.0
- field_21 = 'Mean ice age ', 'iiceages', 'years ', 1 , 0.002739, 0.0
- field_22 = 'Daily lateral thermo ice prod. ', 'iicelapr', 'km3/day ', 1 ,1.0e-9 , 0.0
- field_23 = 'Daily snowice ice production ', 'iicesipr', 'km3/day ', 1 ,1.0e-9 , 0.0
- field_24 = 'Mean ice temperature ', 'iicetemp', 'C ', 1 , 1.0 , -273.15
- field_25 = 'Ice total heat content ', 'iiceheco', '10^9 J ', 1 , 1.0 , 0.0
- field_26 = 'Ice surface temperature ', 'iicesurt', 'C ', 1 , 1.0 , -273.15
- field_27 = 'Snow temperature ', 'isnotem2', 'C ', 1 , 1.0 , -273.15
- field_28 = 'Fsbri - brine salt flux ', 'iicefsbr', 'kg/m2/d ', 1 , 1.0 , 0.0
- field_29 = 'Fseqv - equivalent FW salt flux ', 'iicefseq', 'kg/m2/d ', 1 , 1.0 , 0.0
- field_30 = 'Brine volume ', 'ibrinvol', '% ', 1 , 100.0 , 0.0
- field_31 = 'Frazil ice collection thickness ', 'iicecolf', 'm ', 1 , 1.0 , 0.0
- field_32 = 'Ice strength ', 'iicestre', 'N/m ', 1 , 0.001 , 0.0
- field_33 = 'Ice velocity ', 'iicevelo', 'm/s ', 1 , 1.0 , 0.0
- field_34 = 'Surface melt ', 'iicesume', 'km3/day ', 1 ,1.0e-9 , 0.0
- field_35 = 'Bottom melt ', 'iicebome', 'km3/day ', 1 ,1.0e-9 , 0.0
- field_36 = 'Divergence ', 'iicedive', '10-8s-1 ', 1 , 1.0e8 , 0.0
- field_37 = 'Shear ', 'iiceshea', '10-8s-1 ', 1 , 1.0e8 , 0.0
- field_38 = 'Daily resultant ice prod/melt ', 'iicerepr', 'km3/day ', 1 , 1.0e-9 , 0.0
- field_39 = 'Ice volume ', 'iicevolu', 'km3 ', 1 , 1.0e-9 , 0.0
- field_40 = 'Snow volume ', 'isnowvol', 'km3 ', 1 , 1.0e-9 , 0.0
- field_41 = 'Fsrpo - salt flux from ridg/raft ', 'iicefsrp', 'kg/m2/d ', 1 , 1.0 , 0.0
- field_42 = 'Fsres - salt flux from limupdate ', 'iicefsre', 'kg/m2/d ', 1 , 1.0 , 0.0
- field_43 = 'Ice volume transport ', 'iicevtrp', 'km3/day ', 1 ,1.0e-9 , 0.0
/
Index: branches/dev_r4028_CNRS_LIM3_MV2014/NEMOGCM/CONFIG/ORCA2_LIM3/IGCM00/COMP/lim2.card
===================================================================
--- branches/dev_r4028_CNRS_LIM3_MV2014/NEMOGCM/CONFIG/ORCA2_LIM3/IGCM00/COMP/lim2.card (revision 4506)
+++ (revision )
@@ -1,28 +1,0 @@
-[Compatibility]
-libIGCM=1.0
-
-[UserChoices]
-
-[InitialStateFiles]
-List= ()
-
-[BoundaryFiles]
-List= ()
-ListNonDel= ()
-
-[ParametersFiles]
-List= (${SUBMIT_DIR}/PARAM/namelist_ice_lim2, namelist_ice)
-
-[RestartFiles]
-List= (${config_UserChoices_JobName}_${NEMO_END}_restart_ice.nc, restart_icemod.nc, restart_ice_in.nc)
-
-[OutputText]
-List= (ice_evolu)
-
-[OutputFiles]
-List= (${PREFIX_WFI1}_icemod.nc, ${R_OUT_ICE_WFI1}/${PREFIX}_${WFI1}_icemod.nc, Post_1M_icemod)
-
-[Post_1M_icemod]
-Patches = ()
-GatherWithInternal = (nav_lon, nav_lat, time_counter)
-TimeSeriesVars = (iicethic, ileadfra, isnowthi, iicevelu, iicevelv)
Index: branches/dev_r4028_CNRS_LIM3_MV2014/NEMOGCM/CONFIG/ORCA2_LIM3/IGCM00/COMP/lim2.driver
===================================================================
--- branches/dev_r4028_CNRS_LIM3_MV2014/NEMOGCM/CONFIG/ORCA2_LIM3/IGCM00/COMP/lim2.driver (revision 4506)
+++ (revision )
@@ -1,56 +1,0 @@
-#!/bin/ksh
-
-#-----------------------------------
-function ICE_Initialize
-{
- IGCM_debug_PushStack "ICE_Initialize"
-
- echo INITIALIZE ICE !!!
-
- IGCM_debug_PopStack "ICE_Initialize"
-}
-
-#-----------------------------------
-function ICE_Update
-{
- IGCM_debug_PushStack "ICE_Update"
-
- NbFreq=$( echo ${config_ICE_WriteFrequency} | wc -w )
-
- ##--Write Frequency Purpose ....
- typeset -Z1 i=1
- while [ $i -le ${NbFreq} ]; do
- frequency=$( echo ${config_ICE_WriteFrequency} | awk -v var="$i" "-F " '{print $var}' )
- factor=$( echo ${frequency} | sed -e "s/[yYmMdD]//" )
- case ${frequency} in
- *Y|*y)
- eval PREFIX_WFI${i}=${config_UserChoices_JobName}_${factor}y_${DatesPeriod} ;
- eval R_OUT_ICE_WFI${i}=${R_OUT_ICE_O_Y} ;
- eval WFI${i}=${factor}Y ;;
- *M|*m)
- eval PREFIX_WFI${i}=${config_UserChoices_JobName}_${factor}m_${DatesPeriod} ;
- eval R_OUT_ICE_WFI${i}=${R_OUT_ICE_O_M} ;
- eval WFI${i}=${factor}M ;;
- *D|*d)
- eval PREFIX_WFI${i}=${config_UserChoices_JobName}_${factor}d_${DatesPeriod} ;
- eval R_OUT_ICE_WFI${i}=${R_OUT_ICE_O_D} ;
- eval WFI${i}=${factor}D ;;
- *)
- esac
- let i=$i+1
-
- done
- echo UPDATE ICE !!!
-
- IGCM_debug_PopStack "ICE_Update"
-}
-
-#-----------------------------------
-function ICE_Finalize
-{
- IGCM_debug_PushStack "ICE_Finalize"
-
- echo FINALIZE ICE !!!
-
- IGCM_debug_PopStack "ICE_Finalize"
-}
Index: branches/dev_r4028_CNRS_LIM3_MV2014/NEMOGCM/CONFIG/ORCA2_LIM3/IGCM00/COMP/lim3.card
===================================================================
--- branches/dev_r4028_CNRS_LIM3_MV2014/NEMOGCM/CONFIG/ORCA2_LIM3/IGCM00/COMP/lim3.card (revision 4525)
+++ branches/dev_r4028_CNRS_LIM3_MV2014/NEMOGCM/CONFIG/ORCA2_LIM3/IGCM00/COMP/lim3.card (revision 4525)
@@ -0,0 +1,33 @@
+[Compatibility]
+libIGCM=1.0
+
+[UserChoices]
+
+[InitialStateFiles]
+List= ()
+
+[BoundaryFiles]
+List= ()
+ListNonDel= ()
+
+[ParametersFiles]
+List= (${SUBMIT_DIR}/PARAM/namelist_ice_lim3, namelist_ice)
+
+[RestartFiles]
+List= (${config_UserChoices_JobName}_${NEMO_END}_restart_ice.nc, restart_icemod.nc, restart_ice.nc)
+
+[OutputText]
+List= (ice_evolu)
+
+[OutputFiles]
+List= (${PREFIX_WFI1}_icemod.nc, ${R_OUT_ICE_WFI1}/${PREFIX}_${WFI1}_icemod.nc, NONE)
+
+[Post_1M_icemod]
+Patches = ()
+GatherWithInternal = (nav_lon, nav_lat, time_counter)
+TimeSeriesVars = (iicethic, ileadfra, isnowthi, iicevelu, iicevelv)
+
+[Post_1D_icemod]
+Patches = ()
+GatherWithInternal = (nav_lon, nav_lat, time_counter)
+TimeSeriesVars = (iicethic, ileadfra, isnowthi, iicevelu, iicevelv)
Index: branches/dev_r4028_CNRS_LIM3_MV2014/NEMOGCM/CONFIG/ORCA2_LIM3/IGCM00/COMP/lim3.driver
===================================================================
--- branches/dev_r4028_CNRS_LIM3_MV2014/NEMOGCM/CONFIG/ORCA2_LIM3/IGCM00/COMP/lim3.driver (revision 4525)
+++ branches/dev_r4028_CNRS_LIM3_MV2014/NEMOGCM/CONFIG/ORCA2_LIM3/IGCM00/COMP/lim3.driver (revision 4525)
@@ -0,0 +1,56 @@
+#!/bin/ksh
+
+#-----------------------------------
+function ICE_Initialize
+{
+ IGCM_debug_PushStack "ICE_Initialize"
+
+ echo INITIALIZE ICE !!!
+
+ IGCM_debug_PopStack "ICE_Initialize"
+}
+
+#-----------------------------------
+function ICE_Update
+{
+ IGCM_debug_PushStack "ICE_Update"
+
+ NbFreq=$( echo ${config_ICE_WriteFrequency} | wc -w )
+
+ ##--Write Frequency Purpose ....
+ typeset -Z1 i=1
+ while [ $i -le ${NbFreq} ]; do
+ frequency=$( echo ${config_ICE_WriteFrequency} | awk -v var="$i" "-F " '{print $var}' )
+ factor=$( echo ${frequency} | sed -e "s/[yYmMdD]//" )
+ case ${frequency} in
+ *Y|*y)
+ eval PREFIX_WFI${i}=${config_UserChoices_JobName}_${factor}y_${DatesPeriod} ;
+ eval R_OUT_ICE_WFI${i}=${R_OUT_ICE_O_Y} ;
+ eval WFI${i}=${factor}Y ;;
+ *M|*m)
+ eval PREFIX_WFI${i}=${config_UserChoices_JobName}_${factor}m_${DatesPeriod} ;
+ eval R_OUT_ICE_WFI${i}=${R_OUT_ICE_O_M} ;
+ eval WFI${i}=${factor}M ;;
+ *D|*d)
+ eval PREFIX_WFI${i}=${config_UserChoices_JobName}_${factor}d_${DatesPeriod} ;
+ eval R_OUT_ICE_WFI${i}=${R_OUT_ICE_O_D} ;
+ eval WFI${i}=${factor}D ;;
+ *)
+ esac
+ let i=$i+1
+
+ done
+ echo UPDATE ICE !!!
+
+ IGCM_debug_PopStack "ICE_Update"
+}
+
+#-----------------------------------
+function ICE_Finalize
+{
+ IGCM_debug_PushStack "ICE_Finalize"
+
+ echo FINALIZE ICE !!!
+
+ IGCM_debug_PopStack "ICE_Finalize"
+}
Index: branches/dev_r4028_CNRS_LIM3_MV2014/NEMOGCM/CONFIG/ORCA2_LIM3/IGCM00/config.card
===================================================================
--- branches/dev_r4028_CNRS_LIM3_MV2014/NEMOGCM/CONFIG/ORCA2_LIM3/IGCM00/config.card (revision 4506)
+++ branches/dev_r4028_CNRS_LIM3_MV2014/NEMOGCM/CONFIG/ORCA2_LIM3/IGCM00/config.card (revision 4525)
@@ -1,4 +1,4 @@
#
-# This is config.card file for NEMO ORCA2_LIM2 configuration
+# This is config.card file for NEMO ORCA2_LIM3 configuration
#
#========================================================================
@@ -47,5 +47,5 @@
#D- For each component, Name of component, Tag of component
OCE= (opa9, NEMO_v3)
-ICE= (lim2, LIM_2)
+ICE= (lim3, LIM_3)
#========================================================================
Index: branches/dev_r4028_CNRS_LIM3_MV2014/NEMOGCM/CONFIG/SHARED/field_def.xml
===================================================================
--- branches/dev_r4028_CNRS_LIM3_MV2014/NEMOGCM/CONFIG/SHARED/field_def.xml (revision 4506)
+++ branches/dev_r4028_CNRS_LIM3_MV2014/NEMOGCM/CONFIG/SHARED/field_def.xml (revision 4525)
@@ -231,4 +231,12 @@
+
+
+
+
+
+
+
+
Index: branches/dev_r4028_CNRS_LIM3_MV2014/NEMOGCM/NEMO/LIM_SRC_3/limwri.F90
===================================================================
--- branches/dev_r4028_CNRS_LIM3_MV2014/NEMOGCM/NEMO/LIM_SRC_3/limwri.F90 (revision 4506)
+++ branches/dev_r4028_CNRS_LIM3_MV2014/NEMOGCM/NEMO/LIM_SRC_3/limwri.F90 (revision 4525)
@@ -9,5 +9,4 @@
!!----------------------------------------------------------------------
!! lim_wri : write of the diagnostics variables in ouput file
- !! lim_wri_init : initialization and namelist read
!! lim_wri_state : write for initial state or/and abandon
!!----------------------------------------------------------------------
@@ -36,20 +35,4 @@
PUBLIC lim_wri_state ! called by dia_wri_state
- INTEGER, PARAMETER :: jpnoumax = 43 !: maximum number of variable for ice output
-
- INTEGER :: noumef ! number of fields
- INTEGER :: noumefa ! number of additional fields
- INTEGER :: add_diag_swi ! additional diagnostics
- INTEGER :: nz ! dimension for the itd field
-
- REAL(wp) , DIMENSION(jpnoumax) :: cmulti ! multiplicative constant
- REAL(wp) , DIMENSION(jpnoumax) :: cadd ! additive constant
- REAL(wp) , DIMENSION(jpnoumax) :: cmultia ! multiplicative constant
- REAL(wp) , DIMENSION(jpnoumax) :: cadda ! additive constant
- CHARACTER(len = 35), DIMENSION(jpnoumax) :: titn, titna ! title of the field
- CHARACTER(len = 8 ), DIMENSION(jpnoumax) :: nam , nama ! name of the field
- CHARACTER(len = 8 ), DIMENSION(jpnoumax) :: uni , unia ! unit of the field
- INTEGER , DIMENSION(jpnoumax) :: nc , nca ! switch for saving field ( = 1 ) or not ( = 0 )
-
REAL(wp) :: epsi06 = 1.e-6_wp
REAL(wp) :: zzero = 0._wp
@@ -78,280 +61,150 @@
INTEGER, INTENT(in) :: kindic ! if kindic < 0 there has been an error somewhere
!
- INTEGER :: ji, jj, jk, jl, jf, ipl ! dummy loop indices
- INTEGER :: ierr
- REAL(wp),DIMENSION(1) :: zdept
- REAL(wp) :: zsto, zjulian, zout, zindh, zinda, zindb, zindc
- REAL(wp), POINTER, DIMENSION(:,:,:) :: zcmo, zcmoa
- REAL(wp), POINTER, DIMENSION(:,: ) :: zfield
- REAL(wp), POINTER, DIMENSION(:,:,:) :: zmaskitd, zoi, zei
-
- CHARACTER(len = 60) :: clhstnam, clop, clhstnama
-
- INTEGER , SAVE :: nice, nhorid, ndim, niter, ndepid
- INTEGER , SAVE :: nicea, nhorida, ndimitd
- INTEGER , ALLOCATABLE, DIMENSION(:), SAVE :: ndex51
- INTEGER , ALLOCATABLE, DIMENSION(:), SAVE :: ndexitd
+ INTEGER :: ji, jj, jk, jl ! dummy loop indices
+ REAL(wp) :: zinda, zindb, z1_365
+ REAL(wp), POINTER, DIMENSION(:,:,:) :: zoi, zei
+ REAL(wp), POINTER, DIMENSION(:,:) :: z2d, z2da, z2db, zind ! 2D workspace
!!-------------------------------------------------------------------
IF( nn_timing == 1 ) CALL timing_start('limwri')
- CALL wrk_alloc( jpi, jpj, zfield )
- CALL wrk_alloc( jpi, jpj, jpnoumax, zcmo, zcmoa )
- CALL wrk_alloc( jpi, jpj, jpl, zmaskitd, zoi, zei )
-
- ipl = jpl
-
- IF( numit == nstart ) THEN
-
- ALLOCATE( ndex51(jpij), ndexitd(jpij*jpl), STAT=ierr )
- IF( lk_mpp ) CALL mpp_sum ( ierr )
- IF( ierr /= 0 ) THEN
- CALL ctl_stop( 'lim_wri : unable to allocate standard arrays' ) ; RETURN
- ENDIF
-
- CALL lim_wri_init
-
- IF(lwp) WRITE(numout,*) ' lim_wri, first time step '
- IF(lwp) WRITE(numout,*) ' add_diag_swi ', add_diag_swi
-
- !--------------------
- ! 1) Initialization
- !--------------------
-
- !-------------
- ! Normal file
- !-------------
- niter = ( nit000 - 1 ) / nn_fsbc
- CALL ymds2ju ( nyear, nmonth, nday, rdt, zjulian )
- zjulian = zjulian - adatrj ! set calendar origin to the beginning of the experiment
-!clem
-! zsto = rdt_ice
-! IF( ln_mskland ) THEN ; clop = "ave(only(x))" ! put 1.e+20 on land (very expensive!!)
-! ELSE ; clop = "ave(x)" ! no use of the mask value (require less cpu time)
-! ENDIF
-! zout = nwrite * rdt_ice / nn_fsbc
-! zdept(1) = 0.
-!
-! CALL dia_nam ( clhstnam, nwrite, 'icemod_old' )
-! CALL histbeg ( clhstnam, jpi, glamt, jpj, gphit, 1, jpi, 1, jpj, niter, zjulian, rdt_ice, &
-! & nhorid, nice, domain_id=nidom, snc4chunks=snc4set )
-! CALL histvert( nice, "deptht", "Vertical T levels", "m", 1, zdept, ndepid, "down")
-! CALL wheneq ( jpij , tmask(:,:,1), 1, 1., ndex51, ndim)
-!
-! DO jf = 1 , noumef
-! IF(lwp) WRITE(numout,*) 'jf', jf
-! IF ( nc(jf) == 1 ) THEN
-! CALL histdef( nice, nam(jf), titn(jf), uni(jf), jpi, jpj &
-! , nhorid, 1, 1, 1, -99, 32, clop, zsto, zout )
-! IF(lwp) WRITE(numout,*) 'nice, nam(jf), titn(jf), uni(jf), nhorid, clop, zsto, zout'
-! IF(lwp) WRITE(numout,*) nice, nam(jf), titn(jf), uni(jf), nhorid, clop, zsto, zout
-! ENDIF
-! END DO
-!
-! CALL histend(nice, snc4set)
-!clem
- !
- !-----------------
- ! ITD file output
- !-----------------
- zsto = rdt_ice
- clop = "ave(x)"
- zout = nwrite * rdt_ice / nn_fsbc
- zdept(1) = 0.
-
- CALL dia_nam ( clhstnama, nwrite, 'icemoa' )
- CALL histbeg ( clhstnama, jpi, glamt, jpj, gphit, &
- 1, jpi, 1, jpj, & ! zoom
- niter, zjulian, rdt_ice, & ! time
- nhorida, & ! ? linked with horizontal ...
- nicea , domain_id=nidom, snc4chunks=snc4set) ! file
- CALL histvert( nicea, "icethi", "L levels","m", ipl , hi_mean , nz )
- DO jl = 1, jpl
- zmaskitd(:,:,jl) = tmask(:,:,1)
- END DO
- CALL wheneq ( jpij , tmask(:,:,1), 1, 1., ndex51, ndim)
- CALL wheneq( jpi*jpj*jpl, zmaskitd, 1, 1., ndexitd, ndimitd )
- CALL histdef( nicea, "iice_itd", "Ice area in categories" , "-" , &
- jpi, jpj, nhorida, jpl, 1, jpl, nz, 15, clop, zsto, zout )
- CALL histdef( nicea, "iice_hid", "Ice thickness in categories" , "m" , &
- jpi, jpj, nhorida, jpl, 1, jpl, nz, 15, clop, zsto, zout )
- CALL histdef( nicea, "iice_hsd", "Snow depth in in categories" , "m" , &
- jpi, jpj, nhorida, jpl, 1, jpl, nz, 15, clop, zsto, zout )
- CALL histdef( nicea, "iice_std", "Ice salinity distribution" , "ppt" , &
- jpi, jpj, nhorida, jpl, 1, jpl, nz, 15, clop, zsto, zout )
- CALL histdef( nicea, "iice_otd", "Ice age distribution" , "days", &
- jpi, jpj, nhorida, jpl, 1, jpl, nz, 15, clop, zsto, zout )
- CALL histdef( nicea, "iice_etd", "Brine volume distr. " , "%" , &
- jpi, jpj, nhorida, jpl, 1, jpl, nz, 15, clop, zsto, zout )
- CALL histend(nicea, snc4set)
- ENDIF
-
- ! !-----------------------------------------------------------------------!
- ! !--2. Computation of instantaneous values !
- ! !-----------------------------------------------------------------------!
-
- !++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- !IF( ln_nicep ) THEN
- ! WRITE(numout,*)
- ! WRITE(numout,*) 'lim_wri : write ice outputs in NetCDF files at time : ', nyear, nmonth, nday, numit
- ! WRITE(numout,*) '~~~~~~~ '
- ! WRITE(numout,*) ' kindic = ', kindic
- !ENDIF
- !++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
-
- !-- calculs des valeurs instantanees
- zcmo ( 1:jpi, 1:jpj, 1:jpnoumax ) = 0._wp
- zcmoa( 1:jpi, 1:jpj, 1:jpnoumax ) = 0._wp
-
- ! Ice surface temperature and some fluxes
+ CALL wrk_alloc( jpi, jpj, jpl, zoi, zei )
+ CALL wrk_alloc( jpi, jpj , z2d, z2da, z2db, zind )
+
+
+ !-----------------------------
+ ! Mean category values
+ !-----------------------------
+
+ CALL lim_var_icetm ! mean sea ice temperature
+
+ CALL lim_var_bv ! brine volume
+
+ DO jj = 1, jpj ! presence indicator of ice
+ DO ji = 1, jpi
+ zind(ji,jj) = MAX( zzero , SIGN( zone , at_i(ji,jj) - epsi06 ) )
+ END DO
+ END DO
+ !
+ !
+ CALL iom_put( "iceconc" , at_i ) ! ice concentration
+ !
+ DO jj = 1, jpj ! mean ice thickness
+ DO ji = 1, jpi
+ z2d(ji,jj) = vt_i(ji,jj) / MAX( at_i(ji,jj), epsi06 ) * zind(ji,jj)
+ END DO
+ END DO
+ CALL iom_put( "icethic_cea" , z2d ) ! ice thickness (i.e. icethi(:,:))
+ CALL iom_put( "icevolu" , vt_i ) ! ice volume = mean ice thickness over the cell
+ DO jj = 1, jpj
+ DO ji = 1, jpi
+ z2d(ji,jj) = vt_s(ji,jj) / MAX( at_i(ji,jj), epsi06 ) * zind(ji,jj)
+ END DO
+ END DO
+ CALL iom_put( "snowthic_cea" , z2d ) ! snow thickness = mean snow thickness over the cell
+ CALL iom_put( "ioceflxb" , fbif * at_i ) ! oceanic flux at the ice base
+ CALL iom_put( "isst" , sst_m ) ! sea surface temperature
+ CALL iom_put( "isss" , sss_m ) ! sea surface salinity
+ CALL iom_put( "qt_oce" , qns + qsr ) ! total flux at ocean surface
+ !
+ DO jj = 2 , jpjm1
+ DO ji = 2 , jpim1
+ z2da(ji,jj) = ( u_ice(ji,jj) * tmu(ji,jj) + u_ice(ji-1,jj) * tmu(ji-1,jj) ) * 0.5_wp
+ z2db(ji,jj) = ( v_ice(ji,jj) * tmv(ji,jj) + v_ice(ji,jj-1) * tmv(ji,jj-1) ) * 0.5_wp
+ END DO
+ END DO
+ CALL lbc_lnk( z2da, 'T', -1. )
+ CALL lbc_lnk( z2db, 'T', -1. )
+ DO jj = 1, jpj
+ DO ji = 1, jpi
+ z2d(ji,jj) = SQRT( z2da(ji,jj) * z2da(ji,jj) + z2db(ji,jj) * z2db(ji,jj) )
+ END DO
+ END DO
+ CALL iom_put( "uice_ipa" , z2da ) ! ice velocity u component
+ CALL iom_put( "vice_ipa" , z2db ) ! ice velocity v component
+ CALL iom_put( "icevel" , z2d ) ! ice velocity module
+ CALL iom_put( "icebopr" , diag_bot_gr * rday ) ! daily bottom thermodynamic ice production
+ CALL iom_put( "icedypr" , diag_dyn_gr * rday ) ! daily dynamic ice production (rid/raft)
+!!SF BE CAREFUL : qsr_oce qnd qns_oce are after penetration over ice
+ CALL iom_put( "qsr_oce" , qsr ) ! solar flux at ocean surface
+ CALL iom_put( "qns_oce" , qns ) ! non-solar flux at ocean surface
+!!SF end be careful
+ CALL iom_put( "hfbri" , fhbri ) ! heat flux due to brine release
+ CALL iom_put( "utau_ice" , utau_ice ) ! wind stress over ice along i-axis at I-point
+ CALL iom_put( "vtau_ice" , vtau_ice ) ! wind stress over ice along j-axis at I-point
+!!SF commented because this computation is not ok
+ !SF because qsr is not qsr_ocean but it contains already qsr_ice
+ !SF
+ !SF DO jj = 1 , jpj
+ !SF DO ji = 1 , jpi
+ !SF z2d(ji,jj) = ( 1._wp - at_i(ji,jj) ) * qsr(ji,jj)
+ !SF END DO
+ !SF END DO
+ !SF CALL iom_put( "qsr_io" , z2d ) ! solar flux at ice/ocean surface
+ !SF DO jj = 1 , jpj
+ !SF DO ji = 1 , jpi
+ !SF z2d(ji,jj) = ( 1._wp - at_i(ji,jj) ) * qns(ji,jj)
+ !SF END DO
+ !SF END DO
+ !SF CALL iom_put( "qns_io" , z2d ) ! non-solar flux at ice/ocean surface
+ CALL iom_put( "snowpre" , sprecip ) ! snow precipitation
+ CALL iom_put( "micesalt" , smt_i ) ! mean ice salinity
+ !
+ z2d(:,:) = 0.e0
DO jl = 1, jpl
DO jj = 1, jpj
DO ji = 1, jpi
- zinda = MAX( zzero , SIGN( zone , at_i(ji,jj) - epsi06 ) )
- zcmo(ji,jj,17) = zcmo(ji,jj,17) + a_i(ji,jj,jl)*qsr_ice (ji,jj,jl)
- zcmo(ji,jj,18) = zcmo(ji,jj,18) + a_i(ji,jj,jl)*qns_ice(ji,jj,jl)
- zcmo(ji,jj,27) = zcmo(ji,jj,27) + zinda*(t_su(ji,jj,jl)-rtt)*a_i(ji,jj,jl)/MAX(at_i(ji,jj),epsi06)
- zcmo(ji,jj,21) = zcmo(ji,jj,21) + zinda*oa_i(ji,jj,jl)/MAX(at_i(ji,jj),epsi06)
+ z2d(ji,jj) = z2d(ji,jj) + zind(ji,jj) * oa_i(ji,jj,jl)
END DO
END DO
END DO
-
- ! Mean sea ice temperature
- CALL lim_var_icetm
-
- ! Brine volume
- CALL lim_var_bv
-
- DO jj = 2 , jpjm1
- DO ji = 2 , jpim1
- zinda = MAX( zzero , SIGN( zone , at_i(ji,jj) - epsi06 ) )
+ z1_365 = 1._wp / 365._wp
+ CALL iom_put( "miceage" , z2d * z1_365 ) ! mean ice age
+ CALL iom_put( "icelapr" , diag_lat_gr * rday ) ! daily lateral thermodynamic ice production
+ CALL iom_put( "icesipr" , diag_sni_gr * rday ) ! daily snowice ice production
+ DO jj = 1, jpj
+ DO ji = 1, jpi
+ z2d(ji,jj) = ( tm_i(ji,jj) - rtt ) * zind(ji,jj)
+ END DO
+ END DO
+
+ CALL iom_put( "micet" , z2d ) ! mean ice temperature
+ CALL iom_put( "icehc" , et_i ) ! ice total heat content
+ CALL iom_put( "isnowhc" , et_s ) ! snow total heat content
+ !
+ z2d(:,:) = 0.e0
+ DO jl = 1, jpl
+ DO jj = 1, jpj
+ DO ji = 1, jpi
+ z2d(ji,jj) = z2d(ji,jj) + zind(ji,jj) * ( t_su(ji,jj,jl) - rtt ) * a_i(ji,jj,jl) / MAX( at_i(ji,jj) , epsi06 )
+ END DO
+ END DO
+ END DO
+ CALL iom_put( "icest" , z2d ) ! ice surface temperature
+ CALL iom_put( "sfxthd" , sfx_thd * rday ) ! equivalent FW salt flux
+ CALL iom_put( "ibrinv" , bv_i * 100._wp ) ! brine volume
+ DO jj = 1, jpj
+ DO ji = 1, jpi
zindb = MAX( zzero , SIGN( zone , at_i(ji,jj) ) )
-
- zcmo(ji,jj,1) = at_i(ji,jj)
- zcmo(ji,jj,2) = vt_i(ji,jj) / MAX( at_i(ji,jj), epsi06 ) * zinda
- zcmo(ji,jj,3) = vt_s(ji,jj) / MAX( at_i(ji,jj), epsi06 ) * zinda
- zcmo(ji,jj,4) = diag_bot_gr(ji,jj) * rday ! Bottom thermodynamic ice production
- zcmo(ji,jj,5) = diag_dyn_gr(ji,jj) * rday ! Dynamic ice production (rid/raft)
- zcmo(ji,jj,22) = diag_lat_gr(ji,jj) * rday ! Lateral thermodynamic ice production
- zcmo(ji,jj,23) = diag_sni_gr(ji,jj) * rday ! Snow ice production ice production
- zcmo(ji,jj,24) = (tm_i(ji,jj) - rtt) * zinda
-
- zcmo(ji,jj,6) = fbif(ji,jj)*at_i(ji,jj)
- zcmo(ji,jj,7) = ( u_ice(ji,jj) * tmu(ji,jj) + u_ice(ji-1,jj) * tmu(ji-1,jj) ) * 0.5_wp
- zcmo(ji,jj,8) = ( v_ice(ji,jj) * tmv(ji,jj) + v_ice(ji,jj-1) * tmv(ji,jj-1) ) * 0.5_wp
- zcmo(ji,jj,9) = sst_m(ji,jj)
- zcmo(ji,jj,10) = sss_m(ji,jj)
-
- zcmo(ji,jj,11) = qns(ji,jj) + qsr(ji,jj)
- zcmo(ji,jj,12) = qsr(ji,jj)
- zcmo(ji,jj,13) = qns(ji,jj)
- zcmo(ji,jj,14) = fhbri(ji,jj)
- zcmo(ji,jj,15) = utau_ice(ji,jj)
- zcmo(ji,jj,16) = vtau_ice(ji,jj)
- zcmo(ji,jj,17) = zcmo(ji,jj,17) + ( 1._wp - at_i(ji,jj) ) * qsr(ji,jj)
- zcmo(ji,jj,18) = zcmo(ji,jj,18) + ( 1._wp - at_i(ji,jj) ) * qns(ji,jj)
- zcmo(ji,jj,19) = sprecip(ji,jj)
- zcmo(ji,jj,20) = smt_i(ji,jj)
- zcmo(ji,jj,25) = et_i(ji,jj)
- zcmo(ji,jj,26) = et_s(ji,jj)
- zcmo(ji,jj,28) = sfx_bri(ji,jj)
- zcmo(ji,jj,29) = sfx_thd(ji,jj)
-
- zcmo(ji,jj,30) = bv_i(ji,jj)
- zcmo(ji,jj,31) = hicol(ji,jj) * zindb
- zcmo(ji,jj,32) = strength(ji,jj)
- zcmo(ji,jj,33) = SQRT( zcmo(ji,jj,7)*zcmo(ji,jj,7) + zcmo(ji,jj,8)*zcmo(ji,jj,8) )
- zcmo(ji,jj,34) = diag_sur_me(ji,jj) * rday ! Surface melt
- zcmo(ji,jj,35) = diag_bot_me(ji,jj) * rday ! Bottom melt
- zcmo(ji,jj,36) = divu_i(ji,jj)
- zcmo(ji,jj,37) = shear_i(ji,jj)
- zcmo(ji,jj,38) = diag_res_pr(ji,jj) * rday ! Bottom melt
- zcmo(ji,jj,39) = vt_i(ji,jj) ! ice volume
- zcmo(ji,jj,40) = vt_s(ji,jj) ! snow volume
-
- zcmo(ji,jj,41) = sfx_mec(ji,jj)
- zcmo(ji,jj,42) = sfx_res(ji,jj)
-
- zcmo(ji,jj,43) = diag_trp_vi(ji,jj) * rday ! transport of ice volume
-
- END DO
- END DO
-
- !
- ! ecriture d'un fichier netcdf
- !
- niter = niter + 1
-!clem
-! DO jf = 1 , noumef
-! !
-! zfield(:,:) = zcmo(:,:,jf) * cmulti(jf) + cadd(jf)
-! !
-! IF( jf == 7 .OR. jf == 8 .OR. jf == 15 .OR. jf == 16 ) THEN ; CALL lbc_lnk( zfield, 'T', -1. )
-! ELSE ; CALL lbc_lnk( zfield, 'T', 1. )
-! ENDIF
-! !
-! IF( ln_nicep ) THEN
-! WRITE(numout,*)
-! WRITE(numout,*) 'nc(jf), nice, nam(jf), niter, ndim'
-! WRITE(numout,*) nc(jf), nice, nam(jf), niter, ndim
-! ENDIF
-! IF( nc(jf) == 1 ) CALL histwrite( nice, nam(jf), niter, zfield, ndim, ndex51 )
-! !
-! END DO
-!
-! IF( ( nn_fsbc * niter ) >= nitend .OR. kindic < 0 ) THEN
-! IF( lwp) WRITE(numout,*) ' Closing the icemod file '
-! CALL histclo( nice )
-! ENDIF
-!clem
- !
- CALL iom_put ('iceconc', zcmo(:,:,1) ) ! field1: ice concentration
- CALL iom_put ('icethic_cea', zcmo(:,:,2) ) ! field2: ice thickness (i.e. icethi(:,:))
- CALL iom_put ('snowthic_cea', zcmo(:,:,3)) ! field3: snow thickness
- CALL iom_put ('icebopr', zcmo(:,:,4) ) ! field4: daily bottom thermo ice production
- CALL iom_put ('icedypr', zcmo(:,:,5) ) ! field5: daily dynamic ice production
- CALL iom_put ('ioceflxb', zcmo(:,:,6) ) ! field6: Oceanic flux at the ice base
- CALL iom_put ('uice_ipa', zcmo(:,:,7) ) ! field7: ice velocity u component
- CALL iom_put ('vice_ipa', zcmo(:,:,8) ) ! field8: ice velocity v component
- CALL iom_put ('isst', zcmo(:,:,9) ) ! field 9: sea surface temperature
- CALL iom_put ('isss', zcmo(:,:,10) ) ! field 10: sea surface salinity
- CALL iom_put ('qt_oce', zcmo(:,:,11) ) ! field 11: total flux at ocean surface
- CALL iom_put ('qsr_oce', zcmo(:,:,12) ) ! field 12: solar flux at ocean surface
- CALL iom_put ('qns_oce', zcmo(:,:,13) ) ! field 13: non-solar flux at ocean surface
- !CALL iom_put ('hfbri', fhbri ) ! field 14: heat flux due to brine release
- CALL iom_put( 'utau_ice', zcmo(:,:,15) ) ! Wind stress over ice along i-axis at I-point
- CALL iom_put( 'vtau_ice', zcmo(:,:,16) ) ! Wind stress over ice along j-axis at I-point
- CALL iom_put ('qsr_io', zcmo(:,:,17) ) ! field 17: solar flux at ice/ocean surface
- CALL iom_put ('qns_io', zcmo(:,:,18) ) ! field 18: non-solar flux at ice/ocean surface
- !CALL iom_put ('snowpre', zcmo(:,:,19) * rday ! field 19 :snow precip
- CALL iom_put ('micesalt', zcmo(:,:,20) ) ! field 20 :mean ice salinity
- CALL iom_put ('miceage', zcmo(:,:,21) / 365) ! field 21: mean ice age
- CALL iom_put ('icelapr',zcmo(:,:,22) ) ! field 22: daily lateral thermo ice prod.
- CALL iom_put ('icesipr',zcmo(:,:,23) ) ! field 23: daily snowice ice prod.
- CALL iom_put ('micet', zcmo(:,:,24) ) ! field 24: mean ice temperature
- CALL iom_put ('icehc', zcmo(:,:,25) ) ! field 25: ice total heat content
- CALL iom_put ('isnowhc', zcmo(:,:,26) ) ! field 26: snow total heat content
- CALL iom_put ('icest', zcmo(:,:,27) ) ! field 27: ice surface temperature
- CALL iom_put ('sfxbri', zcmo(:,:,28) * rday ) ! field 28: brine salt flux
- CALL iom_put ('sfxthd', zcmo(:,:,29) * rday ) ! field 29: equivalent FW salt flux
- CALL iom_put ('ibrinv', zcmo(:,:,30) *100 ) ! field 30: brine volume
- CALL iom_put ('icecolf', zcmo(:,:,31) ) ! field 31: frazil ice collection thickness
- CALL iom_put ('icestr', zcmo(:,:,32) * 0.001 ) ! field 32: ice strength
- CALL iom_put ('icevel', zcmo(:,:,33) ) ! field 33: ice velocity
- CALL iom_put ('isume', zcmo(:,:,34) ) ! field 34: surface melt
- CALL iom_put ('ibome', zcmo(:,:,35) ) ! field 35: bottom melt
- CALL iom_put ('idive', zcmo(:,:,36) * 1.0e8) ! field 36: divergence
- CALL iom_put ('ishear', zcmo(:,:,37) * 1.0e8 ) ! field 37: shear
- CALL iom_put ('icerepr', zcmo(:,:,38) ) ! field 38: daily prod./melting due to limupdate
- CALL iom_put ('icevolu', zcmo(:,:,39) ) ! field 39: ice volume
- CALL iom_put ('snowvol', zcmo(:,:,40) ) ! field 40: snow volume
- CALL iom_put ('sfxmec', zcmo(:,:,41) * rday ) ! field 41: salt flux from ridging rafting
- CALL iom_put ('sfxres', zcmo(:,:,42) * rday ) ! field 42: salt flux from limupdate (resultant)
- CALL iom_put ('icetrp', zcmo(:,:,43) ) ! field 43: ice volume transport
-
- !-----------------------------
- ! Thickness distribution file
- !-----------------------------
- IF( add_diag_swi == 1 ) THEN
+ z2d(ji,jj) = hicol(ji,jj) * zindb
+ END DO
+ END DO
+ CALL iom_put( "icecolf" , z2d ) ! frazil ice collection thickness
+ CALL iom_put( "icestr" , strength * 0.001 ) ! ice strength
+ CALL iom_put( "isume" , diag_sur_me * rday ) ! surface melt
+ CALL iom_put( "ibome" , diag_bot_me * rday ) ! bottom melt
+ CALL iom_put( "idive" , divu_i * 1.0e8 ) ! divergence
+ CALL iom_put( "ishear" , shear_i * 1.0e8 ) ! shear
+ CALL iom_put( "isume" , diag_sur_me * rday ) ! surface melt
+ CALL iom_put( "icerepr" , diag_res_pr * rday ) ! daily prod./melting due to limupdate
+ CALL iom_put( "snowvol" , vt_s ) ! snow volume
+ CALL iom_put( "sfxmec" , sfx_mec * rday ) ! salt flux from ridging rafting
+ CALL iom_put( "sfxres" , sfx_res * rday ) ! salt flux from limupdate (resultant)
+ CALL iom_put( "icetrp" , diag_trp_vi * rday ) ! ice volume transport
+
+
+ !--------------------------------
+ ! Output values for each category
+ !--------------------------------
DO jl = 1, jpl
@@ -363,5 +216,4 @@
END DO
- ! Compute ice age
DO jl = 1, jpl
DO jj = 1, jpj
@@ -372,4 +224,6 @@
END DO
END DO
+
+ CALL iom_put( "iceage_cat" , zoi ) ! ice age for categories
! Compute brine volume
@@ -392,25 +246,17 @@
END DO
- CALL histwrite( nicea, "iice_itd", niter, a_i , ndimitd , ndexitd ) ! area
- CALL histwrite( nicea, "iice_hid", niter, ht_i , ndimitd , ndexitd ) ! thickness
- CALL histwrite( nicea, "iice_hsd", niter, ht_s , ndimitd , ndexitd ) ! snow depth
- CALL histwrite( nicea, "iice_std", niter, sm_i , ndimitd , ndexitd ) ! salinity
- CALL histwrite( nicea, "iice_otd", niter, zoi , ndimitd , ndexitd ) ! age
- CALL histwrite( nicea, "iice_etd", niter, zei , ndimitd , ndexitd ) ! brine volume
-
- ! ! Create an output files (output.lim.abort.nc) if S < 0 or u > 20 m/s
- ! IF( kindic < 0 ) CALL lim_wri_state( 'output.abort' )
- ! not yet implemented
-
- IF( ( nn_fsbc * niter ) >= nitend .OR. kindic < 0 ) THEN
- IF(lwp) WRITE(numout,*) ' Closing the icemod file '
- CALL histclo( nicea )
- ENDIF
- !
- ENDIF
-
- CALL wrk_dealloc( jpi, jpj, zfield )
- CALL wrk_dealloc( jpi, jpj, jpnoumax, zcmo, zcmoa )
- CALL wrk_dealloc( jpi, jpj, jpl, zmaskitd, zoi, zei )
+ CALL iom_put( "iceconc_cat" , a_i ) ! area for categories
+ CALL iom_put( "icethic_cat" , ht_i ) ! thickness for categories
+ CALL iom_put( "snowthic_cat" , ht_s ) ! snow depth for categories
+ CALL iom_put( "salinity_cat" , sm_i ) ! salinity for categories
+ CALL iom_put( "brinevol_cat" , zei ) ! brine volume for categories
+
+ ! ! Create an output files (output.lim.abort.nc) if S < 0 or u > 20
+ ! m/s
+ ! IF( kindic < 0 ) CALL lim_wri_state( 'output.abort' )
+ ! not yet implemented
+
+ CALL wrk_dealloc( jpi, jpj, jpl, zoi, zei )
+ CALL wrk_dealloc( jpi, jpj , z2d, zind, z2da, z2db )
IF( nn_timing == 1 ) CALL timing_stop('limwri')
@@ -419,118 +265,4 @@
#endif
- SUBROUTINE lim_wri_init
- !!-------------------------------------------------------------------
- !! *** ROUTINE lim_wri_init ***
- !!
- !! ** Purpose : ???
- !!
- !! ** Method : Read the namicewri namelist and check the parameter
- !! values called at the first timestep (nit000)
- !!
- !! ** input : Namelist namicewri
- !!-------------------------------------------------------------------
- INTEGER :: nf ! ???
-
- TYPE FIELD
- CHARACTER(len = 35) :: ztitle
- CHARACTER(len = 8 ) :: zname
- CHARACTER(len = 8 ) :: zunit
- INTEGER :: znc
- REAL :: zcmulti
- REAL :: zcadd
- END TYPE FIELD
-
- TYPE(FIELD) :: &
- field_1 , field_2 , field_3 , field_4 , field_5 , field_6 , &
- field_7 , field_8 , field_9 , field_10, field_11, field_12, &
- field_13, field_14, field_15, field_16, field_17, field_18, &
- field_19, field_20, field_21, field_22, field_23, field_24, &
- field_25, field_26, field_27, field_28, field_29, field_30, &
- field_31, field_32, field_33, field_34, field_35, field_36, &
- field_37, field_38, field_39, field_40, field_41, field_42, field_43
-
- TYPE(FIELD) , DIMENSION(jpnoumax) :: zfield
- !
- NAMELIST/namiceout/ noumef, &
- field_1 , field_2 , field_3 , field_4 , field_5 , field_6 , &
- field_7 , field_8 , field_9 , field_10, field_11, field_12, &
- field_13, field_14, field_15, field_16, field_17, field_18, &
- field_19, field_20, field_21, field_22, field_23, field_24, &
- field_25, field_26, field_27, field_28, field_29, field_30, &
- field_31, field_32, field_33, field_34, field_35, field_36, &
- field_37, field_38, field_39, field_40, field_41, field_42, field_43, add_diag_swi
- !!-------------------------------------------------------------------
-
- REWIND( numnam_ice ) ! Read Namelist namicewri
- READ ( numnam_ice , namiceout )
-
- zfield(1) = field_1
- zfield(2) = field_2
- zfield(3) = field_3
- zfield(4) = field_4
- zfield(5) = field_5
- zfield(6) = field_6
- zfield(7) = field_7
- zfield(8) = field_8
- zfield(9) = field_9
- zfield(10) = field_10
- zfield(11) = field_11
- zfield(12) = field_12
- zfield(13) = field_13
- zfield(14) = field_14
- zfield(15) = field_15
- zfield(16) = field_16
- zfield(17) = field_17
- zfield(18) = field_18
- zfield(19) = field_19
- zfield(20) = field_20
- zfield(21) = field_21
- zfield(22) = field_22
- zfield(23) = field_23
- zfield(24) = field_24
- zfield(25) = field_25
- zfield(26) = field_26
- zfield(27) = field_27
- zfield(28) = field_28
- zfield(29) = field_29
- zfield(30) = field_30
- zfield(31) = field_31
- zfield(32) = field_32
- zfield(33) = field_33
- zfield(34) = field_34
- zfield(35) = field_35
- zfield(36) = field_36
- zfield(37) = field_37
- zfield(38) = field_38
- zfield(39) = field_39
- zfield(40) = field_40
- zfield(41) = field_41
- zfield(42) = field_42
- zfield(43) = field_43
-
- DO nf = 1, noumef
- titn (nf) = zfield(nf)%ztitle
- nam (nf) = zfield(nf)%zname
- uni (nf) = zfield(nf)%zunit
- nc (nf) = zfield(nf)%znc
- cmulti(nf) = zfield(nf)%zcmulti
- cadd (nf) = zfield(nf)%zcadd
- END DO
-
- IF(lwp) THEN ! control print
- WRITE(numout,*)
- WRITE(numout,*) 'lim_wri_init : Ice parameters for outputs'
- WRITE(numout,*) '~~~~~~~~~~~~'
- WRITE(numout,*) ' number of fields to be stored noumef = ', noumef
- WRITE(numout,*) ' title name unit Saving (1/0) ', &
- & ' multiplicative constant additive constant '
- DO nf = 1 , noumef
- WRITE(numout,*) ' ', titn(nf), ' ' , nam (nf), ' ' , uni (nf), &
- & ' ' , nc (nf),' ', cmulti(nf), ' ', cadd(nf)
- END DO
- WRITE(numout,*) ' add_diag_swi ', add_diag_swi
- ENDIF
- !
- END SUBROUTINE lim_wri_init
SUBROUTINE lim_wri_state( kt, kid, kh_i )
@@ -549,6 +281,7 @@
INTEGER, INTENT( in ) :: kid , kh_i
!!----------------------------------------------------------------------
- !CALL histvert( kid, "icethi", "L levels","m", jpl , hi_mean , nz )
-
+
+
+
CALL histdef( kid, "iicethic", "Ice thickness" , "m" , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )
CALL histdef( kid, "iiceconc", "Ice concentration" , "%" , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )
@@ -575,10 +308,4 @@
CALL histdef( kid, "iisfxres", "Salt flux from limupdate", "" , jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt )
-
- !CALL histdef( kid, "iice_itd", "Ice concentration by cat", "%" , jpi, jpj, kh_i, jpl, 1, jpl, -99, 32, "inst(x)", rdt, rdt )
- !CALL histdef( kid, "iice_hid", "Ice thickness by cat" , "m" , jpi, jpj, kh_i, jpl, 1, jpl, -99, 32, "inst(x)", rdt, rdt )
- !CALL histdef( kid, "iice_hsd", "Snow thickness by cat" , "m" , jpi, jpj, kh_i, jpl, 1, jpl, -99, 32, "inst(x)", rdt, rdt )
- !CALL histdef( kid, "iice_std", "Ice salinity by cat" , "PSU" , jpi, jpj, kh_i, jpl, 1, jpl, -99, 32, "inst(x)", rdt, rdt )
-
CALL histend( kid, snc4set ) ! end of the file definition
@@ -608,8 +335,7 @@
CALL histwrite( kid, "iisfxres", kt, sfx_res , jpi*jpj, (/1/) )
- !CALL histwrite( kid, "iice_itd", kt, a_i , jpi*jpj*jpl, (/1/) ) ! area
- !CALL histwrite( kid, "iice_hid", kt, ht_i , jpi*jpj*jpl, (/1/) ) ! thickness
- !CALL histwrite( kid, "iice_hsd", kt, ht_s , jpi*jpj*jpl, (/1/) ) ! snow depth
- !CALL histwrite( kid, "iice_std", kt, sm_i , jpi*jpj*jpl, (/1/) ) ! salinity
+ ! Close the file
+ ! -----------------
+ CALL histclo( kid )
END SUBROUTINE lim_wri_state
Index: branches/dev_r4028_CNRS_LIM3_MV2014/NEMOGCM/NEMO/OPA_SRC/IOM/iom.F90
===================================================================
--- branches/dev_r4028_CNRS_LIM3_MV2014/NEMOGCM/NEMO/OPA_SRC/IOM/iom.F90 (revision 4506)
+++ branches/dev_r4028_CNRS_LIM3_MV2014/NEMOGCM/NEMO/OPA_SRC/IOM/iom.F90 (revision 4525)
@@ -32,4 +32,5 @@
USE trc_oce, ONLY : nn_dttrc ! !: frequency of step on passive tracers
USE icb_oce, ONLY : class_num ! !: iceberg classes
+ USE par_ice
USE domngb ! ocean space and time domain
USE phycst ! physical constants
@@ -131,4 +132,5 @@
CALL iom_set_axis_attr( "nfloat", (/ (REAL(ji,wp), ji=1,nfloat) /) )
# endif
+ CALL iom_set_axis_attr( "ncatice", (/ (REAL(ji,wp), ji=1,jpl) /) )
CALL iom_set_axis_attr( "icbcla", class_num )