Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • nemo/nemo
  • sparonuz/nemo
  • hatfield/nemo
  • extdevs/nemo
4 results
Show changes
Commits on Source (44)
Showing
with 398 additions and 360 deletions
...@@ -34,6 +34,8 @@ ...@@ -34,6 +34,8 @@
<field field_ref="qt_oce" name="qt_oce" /> <field field_ref="qt_oce" name="qt_oce" />
<field field_ref="saltflx" name="sfx" /> <field field_ref="saltflx" name="sfx" />
<field field_ref="taum" name="taum" /> <field field_ref="taum" name="taum" />
<field field_ref="utau" name="tauuo" />
<field field_ref="vtau" name="tauvo" />
<field field_ref="wspd" name="windsp" /> <field field_ref="wspd" name="windsp" />
<field field_ref="precip" name="precip" /> <field field_ref="precip" name="precip" />
<!-- ice and snow --> <!-- ice and snow -->
...@@ -44,7 +46,6 @@ ...@@ -44,7 +46,6 @@
<field field_ref="e3u" /> <field field_ref="e3u" />
<field field_ref="ssu" name="uos" /> <field field_ref="ssu" name="uos" />
<field field_ref="uoce" name="uo" operation="instant" freq_op="5d" > @uoce_e3u / @e3u </field> <field field_ref="uoce" name="uo" operation="instant" freq_op="5d" > @uoce_e3u / @e3u </field>
<field field_ref="utau" name="tauuo" />
<field field_ref="uocetr_eff" name="uocetr_eff" /> <field field_ref="uocetr_eff" name="uocetr_eff" />
<!-- available with diaar5 --> <!-- available with diaar5 -->
<field field_ref="u_masstr" name="vozomatr" /> <field field_ref="u_masstr" name="vozomatr" />
...@@ -56,7 +57,6 @@ ...@@ -56,7 +57,6 @@
<field field_ref="e3v" /> <field field_ref="e3v" />
<field field_ref="ssv" name="vos" /> <field field_ref="ssv" name="vos" />
<field field_ref="voce" name="vo" operation="instant" freq_op="5d" > @voce_e3v / @e3v </field> <field field_ref="voce" name="vo" operation="instant" freq_op="5d" > @voce_e3v / @e3v </field>
<field field_ref="vtau" name="tauvo" />
<field field_ref="vocetr_eff" name="vocetr_eff" /> <field field_ref="vocetr_eff" name="vocetr_eff" />
<!-- available with diaar5 --> <!-- available with diaar5 -->
<field field_ref="v_masstr" name="vomematr" /> <field field_ref="v_masstr" name="vomematr" />
......
...@@ -100,6 +100,8 @@ ...@@ -100,6 +100,8 @@
<field field_ref="qsr" name="rsntds" /> <field field_ref="qsr" name="rsntds" />
<field field_ref="qt" name="tohfls" /> <field field_ref="qt" name="tohfls" />
<field field_ref="taum" /> <field field_ref="taum" />
<field field_ref="utau" name="tauuo" />
<field field_ref="vtau" name="tauvo" />
<field field_ref="mldkz5" /> <field field_ref="mldkz5" />
<field field_ref="mldr10_1" /> <field field_ref="mldr10_1" />
</file> </file>
...@@ -107,13 +109,11 @@ ...@@ -107,13 +109,11 @@
<file id="file5" name_suffix="_grid_U" description="ocean U grid variables" > <file id="file5" name_suffix="_grid_U" description="ocean U grid variables" >
<field field_ref="uoce" name="uo" /> <field field_ref="uoce" name="uo" />
<field field_ref="ssu" name="uos" /> <field field_ref="ssu" name="uos" />
<field field_ref="utau" name="tauuo" />
</file> </file>
<file id="file6" name_suffix="_grid_V" description="ocean V grid variables" > <file id="file6" name_suffix="_grid_V" description="ocean V grid variables" >
<field field_ref="voce" name="vo" /> <field field_ref="voce" name="vo" />
<field field_ref="ssv" name="vos" /> <field field_ref="ssv" name="vos" />
<field field_ref="vtau" name="tauvo" />
</file> </file>
<file id="file7" name_suffix="_grid_W" description="ocean W grid variables" > <file id="file7" name_suffix="_grid_W" description="ocean W grid variables" >
......
...@@ -32,16 +32,16 @@ ...@@ -32,16 +32,16 @@
<field field_ref="qt" name="sohefldo" /> <field field_ref="qt" name="sohefldo" />
<field field_ref="mldr10_1" name="somxl010" /> <field field_ref="mldr10_1" name="somxl010" />
<field field_ref="mldkz5" name="somixhgt" /> <field field_ref="mldkz5" name="somixhgt" />
<field field_ref="utau" name="sozotaux" />
<field field_ref="vtau" name="sometauy" />
</file> </file>
<file id="file2" name_suffix="_grid_U" description="ocean U grid variables" > <file id="file2" name_suffix="_grid_U" description="ocean U grid variables" >
<field field_ref="uoce" name="vozocrtx" /> <field field_ref="uoce" name="vozocrtx" />
<field field_ref="utau" name="sozotaux" />
</file> </file>
<file id="file3" name_suffix="_grid_V" description="ocean V grid variables" > <file id="file3" name_suffix="_grid_V" description="ocean V grid variables" >
<field field_ref="voce" name="vomecrty" /> <field field_ref="voce" name="vomecrty" />
<field field_ref="vtau" name="sometauy" />
</file> </file>
<file id="file4" name_suffix="_grid_W" description="ocean W grid variables" > <file id="file4" name_suffix="_grid_W" description="ocean W grid variables" >
......
...@@ -30,6 +30,8 @@ ...@@ -30,6 +30,8 @@
<field field_ref="qt_oce" name="qt_oce" /> <field field_ref="qt_oce" name="qt_oce" />
<field field_ref="saltflx" name="sfx" /> <field field_ref="saltflx" name="sfx" />
<field field_ref="taum" name="taum" /> <field field_ref="taum" name="taum" />
<field field_ref="utau" name="tauuo" />
<field field_ref="vtau" name="tauvo" />
<field field_ref="wspd" name="windsp" /> <field field_ref="wspd" name="windsp" />
<field field_ref="precip" name="precip" /> <field field_ref="precip" name="precip" />
<!-- ice and snow --> <!-- ice and snow -->
...@@ -40,14 +42,12 @@ ...@@ -40,14 +42,12 @@
<field field_ref="e3u" /> <field field_ref="e3u" />
<field field_ref="ssu" name="uos" /> <field field_ref="ssu" name="uos" />
<field field_ref="uoce" name="uo" /> <field field_ref="uoce" name="uo" />
<field field_ref="utau" name="tauuo" />
</file> </file>
<file id="file13" name_suffix="_grid_V" description="ocean V grid variables" > <file id="file13" name_suffix="_grid_V" description="ocean V grid variables" >
<field field_ref="e3v" /> <field field_ref="e3v" />
<field field_ref="ssv" name="vos" /> <field field_ref="ssv" name="vos" />
<field field_ref="voce" name="vo" /> <field field_ref="voce" name="vo" />
<field field_ref="vtau" name="tauvo" />
</file> </file>
<file id="file14" name_suffix="_grid_ABL" description="ABL grid variables" > <file id="file14" name_suffix="_grid_ABL" description="ABL grid variables" >
......
...@@ -34,6 +34,8 @@ ...@@ -34,6 +34,8 @@
<field field_ref="qt_oce" name="qt_oce" /> <field field_ref="qt_oce" name="qt_oce" />
<field field_ref="saltflx" name="sfx" /> <field field_ref="saltflx" name="sfx" />
<field field_ref="taum" name="taum" /> <field field_ref="taum" name="taum" />
<field field_ref="utau" name="tauuo" />
<field field_ref="vtau" name="tauvo" />
<field field_ref="wspd" name="windsp" /> <field field_ref="wspd" name="windsp" />
<field field_ref="precip" name="precip" /> <field field_ref="precip" name="precip" />
<!-- ice and snow --> <!-- ice and snow -->
...@@ -44,7 +46,6 @@ ...@@ -44,7 +46,6 @@
<field field_ref="e3u" /> <field field_ref="e3u" />
<field field_ref="ssu" name="uos" /> <field field_ref="ssu" name="uos" />
<field field_ref="uoce" name="uo" operation="instant" freq_op="5d" > @uoce_e3u / @e3u </field> <field field_ref="uoce" name="uo" operation="instant" freq_op="5d" > @uoce_e3u / @e3u </field>
<field field_ref="utau" name="tauuo" />
<field field_ref="uocetr_eff" name="uocetr_eff" /> <field field_ref="uocetr_eff" name="uocetr_eff" />
<!-- available with diaar5 --> <!-- available with diaar5 -->
<field field_ref="u_masstr" name="vozomatr" /> <field field_ref="u_masstr" name="vozomatr" />
...@@ -56,7 +57,6 @@ ...@@ -56,7 +57,6 @@
<field field_ref="e3v" /> <field field_ref="e3v" />
<field field_ref="ssv" name="vos" /> <field field_ref="ssv" name="vos" />
<field field_ref="voce" name="vo" operation="instant" freq_op="5d" > @voce_e3v / @e3v </field> <field field_ref="voce" name="vo" operation="instant" freq_op="5d" > @voce_e3v / @e3v </field>
<field field_ref="vtau" name="tauvo" />
<field field_ref="vocetr_eff" name="vocetr_eff" /> <field field_ref="vocetr_eff" name="vocetr_eff" />
<!-- available with diaar5 --> <!-- available with diaar5 -->
<field field_ref="v_masstr" name="vomematr" /> <field field_ref="v_masstr" name="vomematr" />
......
...@@ -36,12 +36,23 @@ ...@@ -36,12 +36,23 @@
<field field_ref="ssh" name="zos" /> <field field_ref="ssh" name="zos" />
</file> </file>
<file id="file1" name_suffix="_trc" description="passive tracers variables" > <file id="file2" name_suffix="_trc" description="passive tracers variables" >
<field field_ref="Age" name="Age" operation="average" freq_op="1y" > @Age_e3t / @e3t </field> <field field_ref="Age" name="Age" operation="average" freq_op="1y" > @Age_e3t / @e3t </field>
<field field_ref="CFC11" name="CFC11" operation="average" freq_op="1y" > @CFC11_e3t / @e3t </field> <field field_ref="CFC11" name="CFC11" operation="average" freq_op="1y" > @CFC11_e3t / @e3t </field>
<field field_ref="CFC12" name="CFC12" operation="average" freq_op="1y" > @CFC12_e3t / @e3t </field> <field field_ref="CFC12" name="CFC12" operation="average" freq_op="1y" > @CFC12_e3t / @e3t </field>
<field field_ref="SF6" name="SF6" operation="average" freq_op="1y" > @SF6_e3t / @e3t </field> <field field_ref="SF6" name="SF6" operation="average" freq_op="1y" > @SF6_e3t / @e3t </field>
<field field_ref="RC14" name="RC14" operation="average" freq_op="1y" > @RC14_e3t / @e3t </field> <field field_ref="RC14" name="RC14" operation="average" freq_op="1y" > @RC14_e3t / @e3t </field>
<field field_ref="qtr_CFC11" />
<field field_ref="qint_CFC11" />
<field field_ref="qtr_CFC12" />
<field field_ref="qint_CFC12" />
<field field_ref="qtr_SF6" />
<field field_ref="qint_SF6" />
<field field_ref="qtr_c14" />
<field field_ref="qint_c14" />
<field field_ref="DeltaC14" />
<field field_ref="C14Age" />
<field field_ref="RAge" />
</file> </file>
</file_group> </file_group>
......
...@@ -34,6 +34,8 @@ ...@@ -34,6 +34,8 @@
<field field_ref="qt_oce" name="qt_oce" /> <field field_ref="qt_oce" name="qt_oce" />
<field field_ref="saltflx" name="sfx" /> <field field_ref="saltflx" name="sfx" />
<field field_ref="taum" name="taum" /> <field field_ref="taum" name="taum" />
<field field_ref="utau" name="tauuo" />
<field field_ref="vtau" name="tauvo" />
<field field_ref="wspd" name="windsp" /> <field field_ref="wspd" name="windsp" />
<field field_ref="precip" name="precip" /> <field field_ref="precip" name="precip" />
<!-- ice and snow --> <!-- ice and snow -->
...@@ -44,7 +46,6 @@ ...@@ -44,7 +46,6 @@
<field field_ref="e3u" /> <field field_ref="e3u" />
<field field_ref="ssu" name="uos" /> <field field_ref="ssu" name="uos" />
<field field_ref="uoce" name="uo" operation="instant" freq_op="5d" > @uoce_e3u / @e3u </field> <field field_ref="uoce" name="uo" operation="instant" freq_op="5d" > @uoce_e3u / @e3u </field>
<field field_ref="utau" name="tauuo" />
<field field_ref="uocetr_eff" name="uocetr_eff" /> <field field_ref="uocetr_eff" name="uocetr_eff" />
<!-- available with diaar5 --> <!-- available with diaar5 -->
<field field_ref="u_masstr" name="vozomatr" /> <field field_ref="u_masstr" name="vozomatr" />
...@@ -56,7 +57,6 @@ ...@@ -56,7 +57,6 @@
<field field_ref="e3v" /> <field field_ref="e3v" />
<field field_ref="ssv" name="vos" /> <field field_ref="ssv" name="vos" />
<field field_ref="voce" name="vo" operation="instant" freq_op="5d" > @voce_e3v / @e3v </field> <field field_ref="voce" name="vo" operation="instant" freq_op="5d" > @voce_e3v / @e3v </field>
<field field_ref="vtau" name="tauvo" />
<field field_ref="vocetr_eff" name="vocetr_eff" /> <field field_ref="vocetr_eff" name="vocetr_eff" />
<!-- available with diaar5 --> <!-- available with diaar5 -->
<field field_ref="v_masstr" name="vomematr" /> <field field_ref="v_masstr" name="vomematr" />
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
<field_group id="SBC" > <!-- time step automaticaly defined based on nn_fsbc --> <field_group id="SBC" > <!-- time step automaticaly defined based on nn_fsbc -->
<!-- 2D variables --> <!-- 2D variables -->
<field_group id="SBC_2D" grid_ref="grid_T_2D" > <field_group id="SBC_2D" grid_ref="grid_T_2D_inner" >
<!-- =================== --> <!-- =================== -->
<!-- standard ice fields --> <!-- standard ice fields -->
...@@ -311,7 +311,7 @@ ...@@ -311,7 +311,7 @@
</field_group> <!-- SBC_2D --> </field_group> <!-- SBC_2D -->
<!-- categories --> <!-- categories -->
<field_group id="SBC_3D" grid_ref="grid_T_ncatice" > <field_group id="SBC_3D" grid_ref="grid_T_ncatice_inner" >
<!-- standard ice fields --> <!-- standard ice fields -->
<field id="iceconc_cat" long_name="Sea-ice concentration per category" unit="" /> <field id="iceconc_cat" long_name="Sea-ice concentration per category" unit="" />
...@@ -386,7 +386,7 @@ ...@@ -386,7 +386,7 @@
--> -->
<!-- output variables for my configuration (example) --> <!-- output variables for my configuration (example) -->
<field_group id="myvarICE" grid_ref="grid_T_2D" > <field_group id="myvarICE" >
<!-- ice mask --> <!-- ice mask -->
<field field_ref="icemask" name="simsk" /> <field field_ref="icemask" name="simsk" />
<field field_ref="icemask05" name="simsk05" /> <field field_ref="icemask05" name="simsk05" />
...@@ -495,7 +495,7 @@ ...@@ -495,7 +495,7 @@
</field_group> </field_group>
<field_group id="myvarICE_cat" grid_ref="grid_T_ncatice" > <field_group id="myvarICE_cat" >
<!-- categories --> <!-- categories -->
<field field_ref="icemask_cat" name="simskcat"/> <field field_ref="icemask_cat" name="simskcat"/>
...@@ -524,7 +524,7 @@ ...@@ -524,7 +524,7 @@
<field field_ref="ilbgvol_tot" name="ilbgvol_tot" /> <field field_ref="ilbgvol_tot" name="ilbgvol_tot" />
</field_group> </field_group>
<field_group id="ICE_budget" grid_ref="grid_T_2D" > <field_group id="ICE_budget" >
<!-- general --> <!-- general -->
<field field_ref="icemask" name="simsk" /> <field field_ref="icemask" name="simsk" />
<field field_ref="iceconc" name="siconc" /> <field field_ref="iceconc" name="siconc" />
...@@ -579,7 +579,7 @@ ...@@ -579,7 +579,7 @@
</field_group> </field_group>
<!-- SIMIP daily fields --> <!-- SIMIP daily fields -->
<field_group id="SIday_fields" grid_ref="grid_T_2D" > <field_group id="SIday_fields" >
<field field_ref="icepres" name="sitimefrac" /> <field field_ref="icepres" name="sitimefrac" />
<field field_ref="iceconc_pct" name="siconc" /> <field field_ref="iceconc_pct" name="siconc" />
<field field_ref="icethic_cmip" name="sithick" /> <field field_ref="icethic_cmip" name="sithick" />
...@@ -591,7 +591,7 @@ ...@@ -591,7 +591,7 @@
</field_group> </field_group>
<!-- SIMIP monthly fields --> <!-- SIMIP monthly fields -->
<field_group id="SImon_fields" grid_ref="grid_T_2D" > <field_group id="SImon_fields" >
<!-- Sea-ice state variables --> <!-- Sea-ice state variables -->
<field field_ref="icepres" name="sitimefrac" /> <field field_ref="icepres" name="sitimefrac" />
<field field_ref="iceconc_pct" name="siconc" /> <field field_ref="iceconc_pct" name="siconc" />
......
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
--> -->
<field_group id="inerttrc" grid_ref="grid_T_2D"> <field_group id="inerttrc" grid_ref="grid_T_2D_inner">
<!-- CFC11 : variables available with ln_cfc11 --> <!-- CFC11 : variables available with ln_cfc11 -->
<field id="CFC11" long_name="Chlorofluoro carbon11 Concentration" unit="umol/m3" grid_ref="grid_T_3D" /> <field id="CFC11" long_name="Chlorofluoro carbon11 Concentration" unit="umol/m3" grid_ref="grid_T_3D" />
...@@ -39,8 +39,8 @@ ...@@ -39,8 +39,8 @@
<!-- C14 : variables available with ln_c14 --> <!-- C14 : variables available with ln_c14 -->
<field id="RC14" long_name="Radiocarbon ratio" unit="-" grid_ref="grid_T_3D" /> <field id="RC14" long_name="Radiocarbon ratio" unit="-" grid_ref="grid_T_3D" />
<field id="RC14_e3t" long_name="RC14 * e3t" unit="m" grid_ref="grid_T_3D" > RC14 * e3t </field > <field id="RC14_e3t" long_name="RC14 * e3t" unit="m" grid_ref="grid_T_3D" > RC14 * e3t </field >
<field id="DeltaC14" long_name="Delta C14" unit="permil" grid_ref="grid_T_3D" /> <field id="DeltaC14" long_name="Delta C14" unit="permil" grid_ref="grid_T_3D_inner" />
<field id="C14Age" long_name="Radiocarbon age" unit="yr" grid_ref="grid_T_3D" /> <field id="C14Age" long_name="Radiocarbon age" unit="yr" grid_ref="grid_T_3D_inner" />
<field id="RAge" long_name="Reservoir Age" unit="yr" /> <field id="RAge" long_name="Reservoir Age" unit="yr" />
<field id="qtr_c14" long_name="Air-sea flux of C14" unit="1/m2/s" /> <field id="qtr_c14" long_name="Air-sea flux of C14" unit="1/m2/s" />
<field id="qint_c14" long_name="Cumulative air-sea flux of C14" unit="1/m2" /> <field id="qint_c14" long_name="Cumulative air-sea flux of C14" unit="1/m2" />
...@@ -52,7 +52,7 @@ ...@@ -52,7 +52,7 @@
<!-- AGE : variables available with ln_age --> <!-- AGE : variables available with ln_age -->
<field id="Age" long_name="Sea water age since surface contact" unit="yr" grid_ref="grid_T_3D" /> <field id="Age" long_name="Sea water age since surface contact" unit="yr" grid_ref="grid_T_3D" />
<field id="Age_e3t" long_name="Age * e3t" unit="yr * m" grid_ref="grid_T_3D" > Age * e3t </field > <field id="Age_e3t" long_name="Age * e3t" unit="yr * m" grid_ref="grid_T_3D" > Age * e3t </field >
</field_group> </field_group>
......
This diff is collapsed.
This diff is collapsed.
...@@ -336,41 +336,44 @@ ...@@ -336,41 +336,44 @@
<scalar /> <scalar />
</grid> </grid>
<grid id="diamlr_grid_T_2D" > <grid id="diamlr_grid_T_2D" >
<domain domain_ref="grid_T" /> <domain domain_ref="grid_T_inner" />
<scalar /> <scalar />
</grid> </grid>
<grid id="diamlr_grid_T_2D_inner" >
<domain domain_ref="grid_T_inner" />
</grid>
<grid id="diamlr_grid_U_2D" > <grid id="diamlr_grid_U_2D" >
<domain domain_ref="grid_U" /> <domain domain_ref="grid_U_inner" />
<scalar /> <scalar />
</grid> </grid>
<grid id="diamlr_grid_V_2D" > <grid id="diamlr_grid_V_2D" >
<domain domain_ref="grid_V" /> <domain domain_ref="grid_V_inner" />
<scalar /> <scalar />
</grid> </grid>
<grid id="diamlr_grid_W_2D" > <grid id="diamlr_grid_W_2D" >
<domain domain_ref="grid_W" /> <domain domain_ref="grid_W_inner" />
<scalar /> <scalar />
</grid> </grid>
<grid id="diamlr_grid_2D_to_grid_T_3D" > <grid id="diamlr_grid_2D_to_grid_T_3D" >
<domain domain_ref="grid_T" /> <domain domain_ref="grid_T_inner" />
<axis axis_ref="deptht"> <axis axis_ref="deptht">
<duplicate_scalar /> <duplicate_scalar />
</axis> </axis>
</grid> </grid>
<grid id="diamlr_grid_2D_to_grid_U_3D" > <grid id="diamlr_grid_2D_to_grid_U_3D" >
<domain domain_ref="grid_U" /> <domain domain_ref="grid_U_inner" />
<axis axis_ref="depthu"> <axis axis_ref="depthu">
<duplicate_scalar /> <duplicate_scalar />
</axis> </axis>
</grid> </grid>
<grid id="diamlr_grid_2D_to_grid_V_3D" > <grid id="diamlr_grid_2D_to_grid_V_3D" >
<domain domain_ref="grid_V" /> <domain domain_ref="grid_V_inner" />
<axis axis_ref="depthv"> <axis axis_ref="depthv">
<duplicate_scalar /> <duplicate_scalar />
</axis> </axis>
</grid> </grid>
<grid id="diamlr_grid_2D_to_grid_W_3D" > <grid id="diamlr_grid_2D_to_grid_W_3D" >
<domain domain_ref="grid_W" /> <domain domain_ref="grid_W_inner" />
<axis axis_ref="depthw"> <axis axis_ref="depthw">
<duplicate_scalar /> <duplicate_scalar />
</axis> </axis>
...@@ -383,37 +386,37 @@ ...@@ -383,37 +386,37 @@
</grid> </grid>
<!-- grid definitions for the computation of daily detided model diagnostics (diadetide) --> <!-- grid definitions for the computation of daily detided model diagnostics (diadetide) -->
<grid id="diadetide_grid_T_2D" > <grid id="diadetide_grid_T_2D" >
<domain domain_ref="grid_T" /> <domain domain_ref="grid_T_inner" />
<scalar /> <scalar />
</grid> </grid>
<grid id="diadetide_grid_U_2D" > <grid id="diadetide_grid_U_2D" >
<domain domain_ref="grid_U" /> <domain domain_ref="grid_U_inner" />
<scalar /> <scalar />
</grid> </grid>
<grid id="diadetide_grid_V_2D" > <grid id="diadetide_grid_V_2D" >
<domain domain_ref="grid_V" /> <domain domain_ref="grid_V_inner" />
<scalar /> <scalar />
</grid> </grid>
<grid id="diadetide_grid_2D_to_grid_T_3D" > <grid id="diadetide_grid_2D_to_grid_T_3D" >
<domain domain_ref="grid_T" /> <domain domain_ref="grid_T_inner" />
<axis axis_ref="deptht"> <axis axis_ref="deptht">
<duplicate_scalar /> <duplicate_scalar />
</axis> </axis>
</grid> </grid>
<grid id="diadetide_grid_2D_to_grid_U_3D" > <grid id="diadetide_grid_2D_to_grid_U_3D" >
<domain domain_ref="grid_U" /> <domain domain_ref="grid_U_inner" />
<axis axis_ref="depthu"> <axis axis_ref="depthu">
<duplicate_scalar /> <duplicate_scalar />
</axis> </axis>
</grid> </grid>
<grid id="diadetide_grid_2D_to_grid_V_3D" > <grid id="diadetide_grid_2D_to_grid_V_3D" >
<domain domain_ref="grid_V" /> <domain domain_ref="grid_V_inner" />
<axis axis_ref="depthv"> <axis axis_ref="depthv">
<duplicate_scalar /> <duplicate_scalar />
</axis> </axis>
</grid> </grid>
<grid id="diadetide_grid_2D_to_grid_W_3D" > <grid id="diadetide_grid_2D_to_grid_W_3D" >
<domain domain_ref="grid_W" /> <domain domain_ref="grid_W_inner" />
<axis axis_ref="depthw"> <axis axis_ref="depthw">
<duplicate_scalar /> <duplicate_scalar />
</axis> </axis>
......
...@@ -369,7 +369,7 @@ ...@@ -369,7 +369,7 @@
!*** receive *** !*** receive ***
sn_rcv_w10m = 'none' , 'no' , '' , '' , '' sn_rcv_w10m = 'none' , 'no' , '' , '' , ''
sn_rcv_taumod = 'coupled' , 'no' , '' , '' , '' sn_rcv_taumod = 'coupled' , 'no' , '' , '' , ''
sn_rcv_tau = 'oce only' , 'no' , 'cartesian' , 'eastward-northward' , 'U,V' sn_rcv_tau = 'oce only' , 'no' , 'cartesian' , 'eastward-northward' , ''
sn_rcv_dqnsdt = 'coupled' , 'no' , '' , '' , '' sn_rcv_dqnsdt = 'coupled' , 'no' , '' , '' , ''
sn_rcv_qsr = 'oce and ice' , 'no' , '' , '' , '' sn_rcv_qsr = 'oce and ice' , 'no' , '' , '' , ''
sn_rcv_qns = 'oce and ice' , 'no' , '' , '' , '' sn_rcv_qns = 'oce and ice' , 'no' , '' , '' , ''
...@@ -380,21 +380,22 @@ ...@@ -380,21 +380,22 @@
sn_rcv_iceflx = 'none' , 'no' , '' , '' , '' sn_rcv_iceflx = 'none' , 'no' , '' , '' , ''
sn_rcv_mslp = 'none' , 'no' , '' , '' , '' sn_rcv_mslp = 'none' , 'no' , '' , '' , ''
sn_rcv_ts_ice = 'none' , 'no' , '' , '' , '' sn_rcv_ts_ice = 'none' , 'no' , '' , '' , ''
sn_rcv_qtrice = 'none' , 'no' , '' , '' , ''
sn_rcv_isf = 'none' , 'no' , '' , '' , '' sn_rcv_isf = 'none' , 'no' , '' , '' , ''
sn_rcv_icb = 'none' , 'no' , '' , '' , '' sn_rcv_icb = 'none' , 'no' , '' , '' , ''
sn_rcv_hsig = 'none' , 'no' , '' , '' , 'T' sn_rcv_hsig = 'none' , 'no' , '' , '' , ''
sn_rcv_phioc = 'none' , 'no' , '' , '' , 'T' sn_rcv_phioc = 'none' , 'no' , '' , '' , ''
sn_rcv_sdrfx = 'none' , 'no' , '' , '' , 'T' sn_rcv_sdrfx = 'none' , 'no' , '' , '' , ''
sn_rcv_sdrfy = 'none' , 'no' , '' , '' , 'T' sn_rcv_sdrfy = 'none' , 'no' , '' , '' , ''
sn_rcv_wper = 'none' , 'no' , '' , '' , 'T' sn_rcv_wper = 'none' , 'no' , '' , '' , ''
sn_rcv_wnum = 'none' , 'no' , '' , '' , 'T' sn_rcv_wnum = 'none' , 'no' , '' , '' , ''
sn_rcv_wstrf = 'none' , 'no' , '' , '' , 'T' sn_rcv_wstrf = 'none' , 'no' , '' , '' , ''
sn_rcv_wdrag = 'none' , 'no' , '' , '' , 'T' sn_rcv_wdrag = 'none' , 'no' , '' , '' , ''
sn_rcv_charn = 'none' , 'no' , '' , '' , 'T' sn_rcv_charn = 'none' , 'no' , '' , '' , ''
sn_rcv_taw = 'none' , 'no' , '' , '' , 'U,V' sn_rcv_taw = 'none' , 'no' , '' , '' , ''
sn_rcv_bhd = 'none' , 'no' , '' , '' , 'T' sn_rcv_bhd = 'none' , 'no' , '' , '' , ''
sn_rcv_tusd = 'none' , 'no' , '' , '' , 'T' sn_rcv_tusd = 'none' , 'no' , '' , '' , ''
sn_rcv_tvsd = 'none' , 'no' , '' , '' , 'T' sn_rcv_tvsd = 'none' , 'no' , '' , '' , ''
/ /
!----------------------------------------------------------------------- !-----------------------------------------------------------------------
&namsbc_sas ! Stand-Alone Surface module: ocean data (SAS_SRC only) &namsbc_sas ! Stand-Alone Surface module: ocean data (SAS_SRC only)
...@@ -882,6 +883,9 @@ ...@@ -882,6 +883,9 @@
! !
! ! S-EOS coefficients (ln_seos=T): ! ! S-EOS coefficients (ln_seos=T):
! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS
! ! dT = T-rn_T0 ; dS = S-rn_S0
rn_T0 = 10. ! reference temperature
rn_S0 = 35. ! reference salinity
rn_a0 = 1.6550e-1 ! thermal expension coefficient rn_a0 = 1.6550e-1 ! thermal expension coefficient
rn_b0 = 7.6554e-1 ! saline expension coefficient rn_b0 = 7.6554e-1 ! saline expension coefficient
rn_lambda1 = 5.9520e-2 ! cabbeling coeff in T^2 (=0 for linear eos) rn_lambda1 = 5.9520e-2 ! cabbeling coeff in T^2 (=0 for linear eos)
......
...@@ -34,6 +34,8 @@ ...@@ -34,6 +34,8 @@
<field field_ref="qt_oce" name="qt_oce" /> <field field_ref="qt_oce" name="qt_oce" />
<field field_ref="saltflx" name="sfx" /> <field field_ref="saltflx" name="sfx" />
<field field_ref="taum" name="taum" /> <field field_ref="taum" name="taum" />
<field field_ref="utau" name="tauuo" />
<field field_ref="vtau" name="tauvo" />
<field field_ref="wspd" name="windsp" /> <field field_ref="wspd" name="windsp" />
<field field_ref="precip" name="precip" /> <field field_ref="precip" name="precip" />
<!-- ice and snow --> <!-- ice and snow -->
...@@ -44,7 +46,6 @@ ...@@ -44,7 +46,6 @@
<field field_ref="e3u" /> <field field_ref="e3u" />
<field field_ref="ssu" name="uos" /> <field field_ref="ssu" name="uos" />
<field field_ref="uoce" name="uo" operation="instant" freq_op="5d" > @uoce_e3u / @e3u </field> <field field_ref="uoce" name="uo" operation="instant" freq_op="5d" > @uoce_e3u / @e3u </field>
<field field_ref="utau" name="tauuo" />
<field field_ref="uocetr_eff" name="uocetr_eff" /> <field field_ref="uocetr_eff" name="uocetr_eff" />
<!-- available with diaar5 --> <!-- available with diaar5 -->
<field field_ref="u_masstr" name="vozomatr" /> <field field_ref="u_masstr" name="vozomatr" />
...@@ -56,7 +57,6 @@ ...@@ -56,7 +57,6 @@
<field field_ref="e3v" /> <field field_ref="e3v" />
<field field_ref="ssv" name="vos" /> <field field_ref="ssv" name="vos" />
<field field_ref="voce" name="vo" operation="instant" freq_op="5d" > @voce_e3v / @e3v </field> <field field_ref="voce" name="vo" operation="instant" freq_op="5d" > @voce_e3v / @e3v </field>
<field field_ref="vtau" name="tauvo" />
<field field_ref="vocetr_eff" name="vocetr_eff" /> <field field_ref="vocetr_eff" name="vocetr_eff" />
<!-- available with diaar5 --> <!-- available with diaar5 -->
<field field_ref="v_masstr" name="vomematr" /> <field field_ref="v_masstr" name="vomematr" />
......
...@@ -31,6 +31,8 @@ ...@@ -31,6 +31,8 @@
<field field_ref="qt_oce" name="qt_oce" /> <field field_ref="qt_oce" name="qt_oce" />
<field field_ref="saltflx" name="sfx" /> <field field_ref="saltflx" name="sfx" />
<field field_ref="taum" name="taum" /> <field field_ref="taum" name="taum" />
<field field_ref="utau" name="tauuo" />
<field field_ref="vtau" name="tauvo" />
<field field_ref="wspd" name="windsp" /> <field field_ref="wspd" name="windsp" />
<field field_ref="precip" name="precip" /> <field field_ref="precip" name="precip" />
<field field_ref="snowpre" /> <field field_ref="snowpre" />
...@@ -67,14 +69,12 @@ ...@@ -67,14 +69,12 @@
<field field_ref="e3u" /> <field field_ref="e3u" />
<field field_ref="ssu" name="uos" /> <field field_ref="ssu" name="uos" />
<field field_ref="uoce" name="uo" operation="instant" freq_op="5d" > @uoce_e3u / @e3u </field> <field field_ref="uoce" name="uo" operation="instant" freq_op="5d" > @uoce_e3u / @e3u </field>
<field field_ref="utau" name="tauuo" />
</file> </file>
<file id="file13" name_suffix="_grid_V" description="ocean V grid variables" > <file id="file13" name_suffix="_grid_V" description="ocean V grid variables" >
<field field_ref="e3v" /> <field field_ref="e3v" />
<field field_ref="ssv" name="vos" /> <field field_ref="ssv" name="vos" />
<field field_ref="voce" name="vo" operation="instant" freq_op="5d" > @voce_e3v / @e3v </field> <field field_ref="voce" name="vo" operation="instant" freq_op="5d" > @voce_e3v / @e3v </field>
<field field_ref="vtau" name="tauvo" />
</file> </file>
<file id="file14" name_suffix="_grid_W" description="ocean W grid variables" > <file id="file14" name_suffix="_grid_W" description="ocean W grid variables" >
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
#SBATCH -A GROUP_IDRIS@cpu #SBATCH -A GROUP_IDRIS@cpu
#SBATCH --job-name=SETTE_JOB # nom du job #SBATCH --job-name=SETTE_JOB # nom du job
#SBATCH --partition=cpu_p1 # Nom de la partition d'exécution #SBATCH --partition=cpu_p1 # Nom de la partition d'exécution
#SBATCH --qos=qos_cpu-dev # quality of service
#SBATCH --ntasks=NPROCS # Nombre total de processus MPI #SBATCH --ntasks=NPROCS # Nombre total de processus MPI
#SBATCH --ntasks-per-node=40 # Nombre de processus MPI par noeud #SBATCH --ntasks-per-node=40 # Nombre de processus MPI par noeud
# /!\ Attention, la ligne suivante est trompeuse mais dans le vocabulaire # /!\ Attention, la ligne suivante est trompeuse mais dans le vocabulaire
......
...@@ -98,8 +98,8 @@ CONTAINS ...@@ -98,8 +98,8 @@ CONTAINS
REAL(wp) , INTENT(in ), DIMENSION(:,: ) :: pevp_ice ! Ce x Du over ice (T-point) REAL(wp) , INTENT(in ), DIMENSION(:,: ) :: pevp_ice ! Ce x Du over ice (T-point)
REAL(wp) , INTENT(in ), DIMENSION(:,: ) :: pwndm_ice ! ||uwnd - uice|| REAL(wp) , INTENT(in ), DIMENSION(:,: ) :: pwndm_ice ! ||uwnd - uice||
REAL(wp) , INTENT(in ), DIMENSION(:,: ) :: pfrac_oce ! ocean fraction REAL(wp) , INTENT(in ), DIMENSION(:,: ) :: pfrac_oce ! ocean fraction
REAL(wp) , INTENT( out), DIMENSION(:,: ) :: ptaui_ice ! ice-surface taux stress (U-point) REAL(wp) , INTENT( out), DIMENSION(:,: ) :: ptaui_ice ! ice-surface taux stress (T-point)
REAL(wp) , INTENT( out), DIMENSION(:,: ) :: ptauj_ice ! ice-surface tauy stress (V-point) REAL(wp) , INTENT( out), DIMENSION(:,: ) :: ptauj_ice ! ice-surface tauy stress (T-point)
#endif #endif
! !
REAL(wp), DIMENSION(1:jpi,1:jpj ) :: zwnd_i, zwnd_j REAL(wp), DIMENSION(1:jpi,1:jpj ) :: zwnd_i, zwnd_j
...@@ -617,25 +617,17 @@ CONTAINS ...@@ -617,25 +617,17 @@ CONTAINS
zwnd_i(ji,jj) = zztmp * zwnd_i(ji,jj) zwnd_i(ji,jj) = zztmp * zwnd_i(ji,jj)
zwnd_j(ji,jj) = zztmp * zwnd_j(ji,jj) zwnd_j(ji,jj) = zztmp * zwnd_j(ji,jj)
END_2D END_2D
! ... utau, vtau at U- and V_points, resp. ! ... utau, vtau at T-points
! Note the use of 0.5*(2-umask) in order to unmask the stress along coastlines DO_2D( nn_hls, nn_hls, nn_hls, nn_hls )
! Note the use of MAX(tmask(i,j),tmask(i+1,j) is to mask tau over ice shelves ptaui(ji,jj) = zwnd_i(ji,jj) * msk_abl(ji,jj) !!clem tau: check
DO_2D( 0, 0, 0, 0 ) ptauj(ji,jj) = zwnd_j(ji,jj) * msk_abl(ji,jj) !!clem tau: check
zcff = 0.5_wp * ( 2._wp - msk_abl(ji,jj)*msk_abl(ji+1,jj) )
zztmp = MAX(msk_abl(ji,jj),msk_abl(ji+1,jj))
ptaui(ji,jj) = zcff * zztmp * ( zwnd_i(ji,jj) + zwnd_i(ji+1,jj ) )
zcff = 0.5_wp * ( 2._wp - msk_abl(ji,jj)*msk_abl(ji,jj+1) )
zztmp = MAX(msk_abl(ji,jj),msk_abl(ji,jj+1))
ptauj(ji,jj) = zcff * zztmp * ( zwnd_j(ji,jj) + zwnd_j(ji ,jj+1) )
END_2D END_2D
!
CALL lbc_lnk( 'ablmod', ptaui(:,:), 'U', -1.0_wp, ptauj(:,:), 'V', -1.0_wp )
CALL iom_put( "taum_oce", ptaum ) CALL iom_put( "taum_oce", ptaum )
IF(sn_cfctl%l_prtctl) THEN IF(sn_cfctl%l_prtctl) THEN
CALL prt_ctl( tab2d_1=ptaui , clinfo1=' abl_stp: utau : ', mask1=umask, & CALL prt_ctl( tab2d_1=ptaui , clinfo1=' abl_stp: utau : ', mask1=tmask, &
& tab2d_2=ptauj , clinfo2=' vtau : ', mask2=vmask ) & tab2d_2=ptauj , clinfo2=' vtau : ', mask2=tmask )
CALL prt_ctl( tab2d_1=pwndm , clinfo1=' abl_stp: wndm : ' ) CALL prt_ctl( tab2d_1=pwndm , clinfo1=' abl_stp: wndm : ' )
ENDIF ENDIF
...@@ -657,23 +649,14 @@ CONTAINS ...@@ -657,23 +649,14 @@ CONTAINS
! ------------------------------------------------------------ ! ! ------------------------------------------------------------ !
! Wind stress relative to the moving ice ( U10m - U_ice ) ! ! Wind stress relative to the moving ice ( U10m - U_ice ) !
! ------------------------------------------------------------ ! ! ------------------------------------------------------------ !
DO_2D( 0, 0, 0, 0 ) DO_2D( nn_hls, nn_hls, nn_hls, nn_hls )
ptaui_ice(ji,jj) = rhoa(ji,jj) * pCd_du_ice(ji,jj) * ( u_abl(ji,jj,2,nt_a) - pssu_ice(ji,jj) * rn_vfac )
zztmp1 = 0.5_wp * ( u_abl(ji+1,jj ,2,nt_a) + u_abl(ji,jj,2,nt_a) ) ptauj_ice(ji,jj) = rhoa(ji,jj) * pCd_du_ice(ji,jj) * ( v_abl(ji,jj,2,nt_a) - pssv_ice(ji,jj) * rn_vfac )
zztmp2 = 0.5_wp * ( v_abl(ji ,jj+1,2,nt_a) + v_abl(ji,jj,2,nt_a) )
ptaui_ice(ji,jj) = 0.5_wp * ( rhoa(ji+1,jj) * pCd_du_ice(ji+1,jj) &
& + rhoa(ji ,jj) * pCd_du_ice(ji ,jj) ) &
& * ( zztmp1 - pssu_ice(ji,jj) * rn_vfac )
ptauj_ice(ji,jj) = 0.5_wp * ( rhoa(ji,jj+1) * pCd_du_ice(ji,jj+1) &
& + rhoa(ji,jj ) * pCd_du_ice(ji,jj ) ) &
& * ( zztmp2 - pssv_ice(ji,jj) * rn_vfac )
END_2D END_2D
CALL lbc_lnk( 'ablmod', ptaui_ice, 'U', -1.0_wp, ptauj_ice,'V', -1.0_wp )
! !
IF(sn_cfctl%l_prtctl) THEN IF(sn_cfctl%l_prtctl) THEN
CALL prt_ctl( tab2d_1=ptaui_ice , clinfo1=' abl_stp: utau_ice : ', mask1=umask, & CALL prt_ctl( tab2d_1=ptaui_ice , clinfo1=' abl_stp: utau_ice : ', mask1=tmask, &
& tab2d_2=ptauj_ice , clinfo2=' vtau_ice : ', mask2=vmask ) & tab2d_2=ptauj_ice , clinfo2=' vtau_ice : ', mask2=tmask )
END IF END IF
#endif #endif
! !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ! !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
......
...@@ -44,6 +44,8 @@ MODULE sbcabl ...@@ -44,6 +44,8 @@ MODULE sbcabl
PUBLIC sbc_abl_init ! routine called in sbcmod module PUBLIC sbc_abl_init ! routine called in sbcmod module
PUBLIC sbc_abl ! routine called in sbcmod module PUBLIC sbc_abl ! routine called in sbcmod module
!! * Substitutions
# include "do_loop_substitute.h90"
!!---------------------------------------------------------------------- !!----------------------------------------------------------------------
!! NEMO/OPA 3.7 , NEMO-consortium (2014) !! NEMO/OPA 3.7 , NEMO-consortium (2014)
!! $Id: sbcabl.F90 6416 2016-04-01 12:22:17Z clem $ !! $Id: sbcabl.F90 6416 2016-04-01 12:22:17Z clem $
...@@ -308,8 +310,8 @@ CONTAINS ...@@ -308,8 +310,8 @@ CONTAINS
!! - Perform 1 time-step of the ABL model !! - Perform 1 time-step of the ABL model
!! - Finalize flux computation in blk_oce_2 !! - Finalize flux computation in blk_oce_2
!! !!
!! ** Outputs : - utau : i-component of the stress at U-point (N/m2) !! ** Outputs : - utau : i-component of the stress at T-point (N/m2)
!! - vtau : j-component of the stress at V-point (N/m2) !! - vtau : j-component of the stress at T-point (N/m2)
!! - taum : Wind stress module at T-point (N/m2) !! - taum : Wind stress module at T-point (N/m2)
!! - wndm : Wind speed module at T-point (m/s) !! - wndm : Wind speed module at T-point (m/s)
!! - qsr : Solar heat flux over the ocean (W/m2) !! - qsr : Solar heat flux over the ocean (W/m2)
...@@ -340,7 +342,7 @@ CONTAINS ...@@ -340,7 +342,7 @@ CONTAINS
CALL blk_oce_1( kt, u_abl(:,:,2,nt_n ), v_abl(:,:,2,nt_n ), & ! <<= in CALL blk_oce_1( kt, u_abl(:,:,2,nt_n ), v_abl(:,:,2,nt_n ), & ! <<= in
& tq_abl(:,:,2,nt_n,jp_ta), tq_abl(:,:,2,nt_n,jp_qa), & ! <<= in & tq_abl(:,:,2,nt_n,jp_ta), tq_abl(:,:,2,nt_n,jp_qa), & ! <<= in
& sf(jp_slp )%fnow(:,:,1) , sst_m, ssu_m, ssv_m , & ! <<= in & sf(jp_slp )%fnow(:,:,1) , sst_m(A2D(0)), ssu_m(A2D(0)), ssv_m(A2D(0)), & ! <<= in
& sf(jp_uoatm)%fnow(:,:,1), sf(jp_voatm)%fnow(:,:,1), & ! <<= in & sf(jp_uoatm)%fnow(:,:,1), sf(jp_voatm)%fnow(:,:,1), & ! <<= in
& sf(jp_qsr )%fnow(:,:,1) , sf(jp_qlw )%fnow(:,:,1) , & ! <<= in & sf(jp_qsr )%fnow(:,:,1) , sf(jp_qlw )%fnow(:,:,1) , & ! <<= in
& tsk_m, zssq, zcd_du, zsen, zlat, zevp ) ! =>> out & tsk_m, zssq, zcd_du, zsen, zlat, zevp ) ! =>> out
...@@ -348,7 +350,7 @@ CONTAINS ...@@ -348,7 +350,7 @@ CONTAINS
#if defined key_si3 #if defined key_si3
CALL blk_ice_1( u_abl(:,:,2,nt_n ), v_abl(:,:,2,nt_n ), & ! <<= in CALL blk_ice_1( u_abl(:,:,2,nt_n ), v_abl(:,:,2,nt_n ), & ! <<= in
& tq_abl(:,:,2,nt_n,jp_ta), tq_abl(:,:,2,nt_n,jp_qa), & ! <<= in & tq_abl(:,:,2,nt_n,jp_ta), tq_abl(:,:,2,nt_n,jp_qa), & ! <<= in
& sf(jp_slp)%fnow(:,:,1) , u_ice, v_ice, tm_su , & ! <<= in & sf(jp_slp)%fnow(:,:,1) , u_ice(A2D(0)), v_ice(A2D(0)), tm_su , & ! <<= in
& pseni=zseni, pevpi=zevpi, pssqi=zssqi, pcd_dui=zcd_dui ) ! <<= out & pseni=zseni, pevpi=zevpi, pssqi=zssqi, pcd_dui=zcd_dui ) ! <<= out
#endif #endif
......
...@@ -451,6 +451,8 @@ MODULE ice ...@@ -451,6 +451,8 @@ MODULE ice
REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: qcn_ice_bot !: Bottom conduction flux (W/m2) REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: qcn_ice_bot !: Bottom conduction flux (W/m2)
REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: qcn_ice_top !: Surface conduction flux (W/m2) REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: qcn_ice_top !: Surface conduction flux (W/m2)
! !
!! * Substitutions
# include "do_loop_substitute.h90"
!!---------------------------------------------------------------------- !!----------------------------------------------------------------------
!! NEMO/ICE 4.0 , NEMO Consortium (2018) !! NEMO/ICE 4.0 , NEMO Consortium (2018)
!! $Id: ice.F90 15388 2021-10-17 11:33:47Z clem $ !! $Id: ice.F90 15388 2021-10-17 11:33:47Z clem $
...@@ -464,71 +466,103 @@ CONTAINS ...@@ -464,71 +466,103 @@ CONTAINS
!!----------------------------------------------------------------- !!-----------------------------------------------------------------
INTEGER :: ice_alloc INTEGER :: ice_alloc
! !
INTEGER :: ierr(16), ii INTEGER :: ierr(21), ii
!!----------------------------------------------------------------- !!-----------------------------------------------------------------
ierr(:) = 0 ierr(:) = 0
ii = 0
! ----------------- !
! == FULL ARRAYS == !
! ----------------- !
! * Ice global state variables
ii = ii + 1
ALLOCATE( u_ice(jpi,jpj) , v_ice(jpi,jpj) , STAT=ierr(ii) )
ii = 1 ii = ii + 1
ALLOCATE( u_oce (jpi,jpj) , v_oce (jpi,jpj) , ht_i_new (jpi,jpj) , fraz_frac (jpi,jpj) , & ALLOCATE( h_i (jpi,jpj,jpl) , a_i (jpi,jpj,jpl) , v_i (jpi,jpj,jpl) , &
& strength (jpi,jpj) , stress1_i(jpi,jpj) , stress2_i(jpi,jpj) , stress12_i(jpi,jpj) , & & v_s (jpi,jpj,jpl) , h_s (jpi,jpj,jpl) , &
& delta_i (jpi,jpj) , divu_i (jpi,jpj) , shear_i (jpi,jpj) , & & s_i (jpi,jpj,jpl) , sv_i(jpi,jpj,jpl) , o_i (jpi,jpj,jpl) , oa_i (jpi,jpj,jpl) , &
& aniso_11 (jpi,jpj) , aniso_12 (jpi,jpj) , rdg_conv (jpi,jpj) , STAT=ierr(ii) ) & a_ip (jpi,jpj,jpl) , v_ip(jpi,jpj,jpl) , h_ip(jpi,jpj,jpl), &
& v_il (jpi,jpj,jpl) , h_il(jpi,jpj,jpl) , &
& t_su (jpi,jpj,jpl) , t_s (jpi,jpj,nlay_s,jpl) , t_i(jpi,jpj,nlay_i,jpl) , sz_i(jpi,jpj,nlay_i,jpl) , &
& ato_i(jpi,jpj) , STAT = ierr(ii) )
ii = ii + 1 ii = ii + 1
ALLOCATE( t_bo (jpi,jpj) , wfx_snw_sni(jpi,jpj) , & ALLOCATE( e_s(jpi,jpj,nlay_s,jpl) , e_i(jpi,jpj,nlay_i,jpl) , STAT=ierr(ii) )
& wfx_snw (jpi,jpj) , wfx_snw_dyn(jpi,jpj) , wfx_snw_sum(jpi,jpj) , wfx_snw_sub(jpi,jpj) , &
& wfx_ice (jpi,jpj) , wfx_sub (jpi,jpj) , wfx_ice_sub(jpi,jpj) , wfx_lam (jpi,jpj) , &
& wfx_pnd (jpi,jpj) , &
& wfx_bog (jpi,jpj) , wfx_dyn (jpi,jpj) , wfx_bom(jpi,jpj) , wfx_sum(jpi,jpj) , &
& wfx_res (jpi,jpj) , wfx_sni (jpi,jpj) , wfx_opw(jpi,jpj) , wfx_spr(jpi,jpj) , &
& rn_amax_2d (jpi,jpj) , &
& qsb_ice_bot(jpi,jpj) , qlead (jpi,jpj) , &
& sfx_res (jpi,jpj) , sfx_bri (jpi,jpj) , sfx_dyn(jpi,jpj) , sfx_sub(jpi,jpj) , sfx_lam(jpi,jpj) , &
& sfx_bog (jpi,jpj) , sfx_bom (jpi,jpj) , sfx_sum(jpi,jpj) , sfx_sni(jpi,jpj) , sfx_opw(jpi,jpj) , &
& hfx_res (jpi,jpj) , hfx_snw (jpi,jpj) , hfx_sub(jpi,jpj) , &
& qt_atm_oi (jpi,jpj) , qt_oce_ai (jpi,jpj) , fhld (jpi,jpj) , &
& hfx_sum (jpi,jpj) , hfx_bom (jpi,jpj) , hfx_bog(jpi,jpj) , hfx_dif(jpi,jpj) , &
& hfx_opw (jpi,jpj) , hfx_thd (jpi,jpj) , hfx_dyn(jpi,jpj) , hfx_spr(jpi,jpj) , &
& hfx_err_dif(jpi,jpj) , wfx_err_sub(jpi,jpj) , STAT=ierr(ii) )
! * Ice global state variables ! * Before values of global variables
ii = ii + 1 ii = ii + 1
ALLOCATE( qtr_ice_bot(jpi,jpj,jpl) , cnd_ice(jpi,jpj,jpl) , t1_ice(jpi,jpj,jpl) , & ALLOCATE( u_ice_b(jpi,jpj) , v_ice_b(jpi,jpj) , STAT=ierr(ii) )
& h_i (jpi,jpj,jpl) , a_i (jpi,jpj,jpl) , v_i (jpi,jpj,jpl) , &
& v_s (jpi,jpj,jpl) , h_s (jpi,jpj,jpl) , t_su (jpi,jpj,jpl) , &
& s_i (jpi,jpj,jpl) , sv_i (jpi,jpj,jpl) , o_i (jpi,jpj,jpl) , &
& oa_i (jpi,jpj,jpl) , bv_i (jpi,jpj,jpl) , STAT=ierr(ii) )
! * fluxes
ii = ii + 1 ii = ii + 1
ALLOCATE( u_ice(jpi,jpj) , v_ice(jpi,jpj) , & ALLOCATE( wfx_res(jpi,jpj) , sfx_res(jpi,jpj) , hfx_res(jpi,jpj) , STAT=ierr(ii) ) ! full arrays since it is used in conjonction with global variables
& vt_i (jpi,jpj) , vt_s (jpi,jpj) , st_i(jpi,jpj) , at_i(jpi,jpj) , ato_i(jpi,jpj) , &
& et_i (jpi,jpj) , et_s (jpi,jpj) , tm_i(jpi,jpj) , tm_s(jpi,jpj) , & ! * ice rheology
& sm_i (jpi,jpj) , tm_su(jpi,jpj) , hm_i(jpi,jpj) , hm_s(jpi,jpj) , & ii = ii+1
& om_i (jpi,jpj) , bvm_i(jpi,jpj) , tau_icebfr(jpi,jpj), icb_mask(jpi,jpj), STAT=ierr(ii) ) ALLOCATE( u_oce (jpi,jpj) , v_oce (jpi,jpj) , &
& strength (jpi,jpj) , stress1_i(jpi,jpj) , stress2_i(jpi,jpj) , stress12_i(jpi,jpj) , &
& aniso_11 (jpi,jpj) , aniso_12 (jpi,jpj) , rdg_conv (jpi,jpj) , &
& icb_mask (jpi,jpj) , STAT=ierr(ii) )
! * mean and total
ii = ii + 1
ALLOCATE( vt_i (jpi,jpj) , vt_s (jpi,jpj) , at_i (jpi,jpj) , & ! full arrays since they are used in rheology
& vt_ip(jpi,jpj) , vt_il(jpi,jpj) , at_ip(jpi,jpj) , STAT=ierr(ii) )
! * others
ii = ii + 1 ii = ii + 1
ALLOCATE( t_s(jpi,jpj,nlay_s,jpl) , e_s(jpi,jpj,nlay_s,jpl) , STAT=ierr(ii) ) ALLOCATE( t_bo(jpi,jpj) , rn_amax_2d(jpi,jpj) , STAT=ierr(ii) )
! -------------------- !
! == REDUCED ARRAYS == !
! -------------------- !
! * Ice global state variables
ii = ii + 1 ii = ii + 1
ALLOCATE( t_i(jpi,jpj,nlay_i,jpl) , e_i(jpi,jpj,nlay_i,jpl) , sz_i(jpi,jpj,nlay_i,jpl) , STAT=ierr(ii) ) ALLOCATE( bv_i(A2D(0),jpl) , a_ip_frac(A2D(0),jpl) , a_ip_eff(A2D(0),jpl) , STAT=ierr(ii) )
! * Before values of global variables
ii = ii + 1 ii = ii + 1
ALLOCATE( a_ip(jpi,jpj,jpl) , v_ip(jpi,jpj,jpl) , a_ip_frac(jpi,jpj,jpl) , h_ip(jpi,jpj,jpl), & ALLOCATE( at_i_b(A2D(0)) , h_i_b (A2D(0),jpl) , a_i_b(A2D(0),jpl) , v_i_b(A2D(0),jpl) , &
& v_il(jpi,jpj,jpl) , h_il(jpi,jpj,jpl) , a_ip_eff (jpi,jpj,jpl) , & & v_s_b (A2D(0),jpl) , h_s_b (A2D(0),jpl) , &
& dh_i_sum_2d(jpi,jpj,jpl) , dh_s_mlt_2d(jpi,jpj,jpl) , STAT = ierr(ii) ) & v_ip_b(A2D(0),jpl) , v_il_b(A2D(0),jpl) , &
& sv_i_b(A2D(0),jpl) , e_i_b (A2D(0),nlay_i,jpl) , e_s_b(A2D(0),nlay_s,jpl) , STAT=ierr(ii) )
! * fluxes
ii = ii + 1 ii = ii + 1
ALLOCATE( at_ip(jpi,jpj) , hm_ip(jpi,jpj) , vt_ip(jpi,jpj) , hm_il(jpi,jpj) , vt_il(jpi,jpj) , STAT = ierr(ii) ) ALLOCATE( qsb_ice_bot(A2D(0)) , qlead (A2D(0)) , qt_atm_oi (A2D(0)) , qt_oce_ai (A2D(0)) , fhld (A2D(0)) , &
& wfx_snw_sni(A2D(0)) , wfx_snw (A2D(0)) , wfx_snw_dyn(A2D(0)) , wfx_snw_sum(A2D(0)) , wfx_snw_sub(A2D(0)) , &
& wfx_ice (A2D(0)) , wfx_sub (A2D(0)) , wfx_ice_sub(A2D(0)) , wfx_lam (A2D(0)) , &
& wfx_pnd (A2D(0)) , &
& wfx_bog (A2D(0)) , wfx_dyn (A2D(0)) , wfx_bom(A2D(0)) , wfx_sum(A2D(0)) , &
& wfx_sni (A2D(0)) , wfx_opw (A2D(0)) , wfx_spr(A2D(0)) , &
& &
& sfx_bri (A2D(0)) , sfx_dyn (A2D(0)) , sfx_sub(A2D(0)) , sfx_lam(A2D(0)) , &
& sfx_bog (A2D(0)) , sfx_bom (A2D(0)) , sfx_sum(A2D(0)) , sfx_sni(A2D(0)) , sfx_opw(A2D(0)) , &
& hfx_snw (A2D(0)) , hfx_sub (A2D(0)) , &
& hfx_sum (A2D(0)) , hfx_bom (A2D(0)) , hfx_bog(A2D(0)) , hfx_dif(A2D(0)) , &
& hfx_opw (A2D(0)) , hfx_thd (A2D(0)) , hfx_dyn(A2D(0)) , hfx_spr(A2D(0)) , &
& hfx_err_dif(A2D(0)) , wfx_err_sub(A2D(0)) , STAT=ierr(ii) )
ii = ii + 1
ALLOCATE( qtr_ice_bot(A2D(0),jpl) , cnd_ice(A2D(0),jpl) , t1_ice(A2D(0),jpl) , STAT=ierr(ii) )
! * ice rheology
ii = ii+1
ALLOCATE( delta_i(A2D(0)) , divu_i(A2D(0)) , shear_i(A2D(0)) , STAT=ierr(ii) )
! * Old values of global variables ! * mean and total
ii = ii + 1 ii = ii + 1
ALLOCATE( v_s_b (jpi,jpj,jpl) , v_i_b (jpi,jpj,jpl) , h_s_b(jpi,jpj,jpl) , h_i_b(jpi,jpj,jpl), & ALLOCATE( st_i (A2D(0)) , et_i (A2D(0)) , et_s(A2D(0)) , hm_i (A2D(0)) , &
& v_ip_b(jpi,jpj,jpl) , v_il_b(jpi,jpj,jpl) , & & hm_ip(A2D(0)) , hm_il(A2D(0)) , tm_i(A2D(0)) , tm_s (A2D(0)) , &
& a_i_b (jpi,jpj,jpl) , sv_i_b(jpi,jpj,jpl) , e_i_b(jpi,jpj,nlay_i,jpl) , e_s_b(jpi,jpj,nlay_s,jpl) , & & sm_i (A2D(0)) , hm_s (A2D(0)) , om_i(A2D(0)) , bvm_i(A2D(0)) , &
& STAT=ierr(ii) ) & tm_su(A2D(0)) , STAT=ierr(ii) )
! * others
ii = ii + 1 ii = ii + 1
ALLOCATE( u_ice_b(jpi,jpj) , v_ice_b(jpi,jpj) , at_i_b(jpi,jpj) , STAT=ierr(ii) ) ALLOCATE( tau_icebfr(A2D(0)) , dh_i_sum_2d(A2D(0),jpl) , dh_s_mlt_2d(A2D(0),jpl) , STAT=ierr(ii) )
ii = 1
ALLOCATE( ht_i_new (A2D(0)) , fraz_frac (A2D(0)) , STAT=ierr(ii) )
! * Ice thickness distribution variables ! * Ice thickness distribution variables
ii = ii + 1 ii = ii + 1
...@@ -536,19 +570,19 @@ CONTAINS ...@@ -536,19 +570,19 @@ CONTAINS
! * Ice diagnostics ! * Ice diagnostics
ii = ii + 1 ii = ii + 1
ALLOCATE( diag_trp_vi(jpi,jpj) , diag_trp_vs (jpi,jpj) , diag_trp_ei(jpi,jpj), & ALLOCATE( diag_trp_vi (A2D(0)) , diag_trp_vs (A2D(0)) , diag_trp_ei (A2D(0)) , &
& diag_trp_es(jpi,jpj) , diag_trp_sv (jpi,jpj) , diag_heat (jpi,jpj), & & diag_trp_es (A2D(0)) , diag_trp_sv (A2D(0)) , diag_heat (A2D(0)) , &
& diag_sice (jpi,jpj) , diag_vice (jpi,jpj) , diag_vsnw (jpi,jpj), diag_aice(jpi,jpj), diag_vpnd(jpi,jpj), & & diag_sice (A2D(0)) , diag_vice (A2D(0)) , diag_vsnw (A2D(0)) , diag_aice(A2D(0)) , diag_vpnd(A2D(0)), &
& diag_adv_mass(jpi,jpj), diag_adv_salt(jpi,jpj), diag_adv_heat(jpi,jpj), STAT=ierr(ii) ) & diag_adv_mass(A2D(0)) , diag_adv_salt(A2D(0)) , diag_adv_heat(A2D(0)) , STAT=ierr(ii) )
! * Ice conservation ! * Ice conservation
ii = ii + 1 ii = ii + 1
ALLOCATE( diag_v (jpi,jpj) , diag_s (jpi,jpj) , diag_t (jpi,jpj), & ALLOCATE( diag_v (A2D(0)) , diag_s (A2D(0)) , diag_t (A2D(0)), &
& diag_fv(jpi,jpj) , diag_fs(jpi,jpj) , diag_ft(jpi,jpj), STAT=ierr(ii) ) & diag_fv(A2D(0)) , diag_fs(A2D(0)) , diag_ft(A2D(0)), STAT=ierr(ii) )
! * SIMIP diagnostics ! * SIMIP diagnostics
ii = ii + 1 ii = ii + 1
ALLOCATE( t_si(jpi,jpj,jpl) , tm_si(jpi,jpj) , qcn_ice_bot(jpi,jpj,jpl) , qcn_ice_top(jpi,jpj,jpl) , STAT = ierr(ii) ) ALLOCATE( t_si(A2D(0),jpl) , tm_si(A2D(0)) , qcn_ice_bot(A2D(0),jpl) , qcn_ice_top(A2D(0),jpl) , STAT = ierr(ii) )
ice_alloc = MAXVAL( ierr(:) ) ice_alloc = MAXVAL( ierr(:) )
IF( ice_alloc /= 0 ) CALL ctl_stop( 'STOP', 'ice_alloc: failed to allocate arrays.' ) IF( ice_alloc /= 0 ) CALL ctl_stop( 'STOP', 'ice_alloc: failed to allocate arrays.' )
......
...@@ -48,7 +48,7 @@ MODULE icealb ...@@ -48,7 +48,7 @@ MODULE icealb
!!---------------------------------------------------------------------- !!----------------------------------------------------------------------
CONTAINS CONTAINS
SUBROUTINE ice_alb( pt_su, ph_ice, ph_snw, ld_pnd_alb, pafrac_pnd, ph_pnd, pcloud_fra, palb_ice ) SUBROUTINE ice_alb( ld_pnd_alb, pt_su, ph_ice, ph_snw, pafrac_pnd, ph_pnd, pcloud_fra, palb_ice )
!!---------------------------------------------------------------------- !!----------------------------------------------------------------------
!! *** ROUTINE ice_alb *** !! *** ROUTINE ice_alb ***
!! !!
...@@ -94,16 +94,16 @@ CONTAINS ...@@ -94,16 +94,16 @@ CONTAINS
!! Brandt et al. 2005, J. Climate, vol 18 !! Brandt et al. 2005, J. Climate, vol 18
!! Grenfell & Perovich 2004, JGR, vol 109 !! Grenfell & Perovich 2004, JGR, vol 109
!!---------------------------------------------------------------------- !!----------------------------------------------------------------------
REAL(wp), INTENT(in ), DIMENSION(:,:,:) :: pt_su ! ice surface temperature (Kelvin) LOGICAL , INTENT(in ) :: ld_pnd_alb ! effect of melt ponds on albedo
REAL(wp), INTENT(in ), DIMENSION(:,:,:) :: ph_ice ! sea-ice thickness REAL(wp), INTENT(in ), DIMENSION(A2D(0),jpl) :: pt_su ! ice surface temperature (Kelvin)
REAL(wp), INTENT(in ), DIMENSION(:,:,:) :: ph_snw ! snow depth REAL(wp), INTENT(in ), DIMENSION(A2D(0),jpl) :: ph_ice ! sea-ice thickness
LOGICAL , INTENT(in ) :: ld_pnd_alb ! effect of melt ponds on albedo REAL(wp), INTENT(in ), DIMENSION(A2D(0),jpl) :: ph_snw ! snow depth
REAL(wp), INTENT(in ), DIMENSION(:,:,:) :: pafrac_pnd ! melt pond relative fraction (per unit ice area) REAL(wp), INTENT(in ), DIMENSION(A2D(0),jpl) :: pafrac_pnd ! melt pond relative fraction (per unit ice area)
REAL(wp), INTENT(in ), DIMENSION(:,:,:) :: ph_pnd ! melt pond depth REAL(wp), INTENT(in ), DIMENSION(A2D(0),jpl) :: ph_pnd ! melt pond depth
REAL(wp), INTENT(in ), DIMENSION(:,:) :: pcloud_fra ! cloud fraction REAL(wp), INTENT(in ), DIMENSION(A2D(0)) :: pcloud_fra ! cloud fraction
REAL(wp), INTENT( out), DIMENSION(:,:,:) :: palb_ice ! albedo of ice REAL(wp), INTENT( out), DIMENSION(A2D(0),jpl) :: palb_ice ! albedo of ice
! !
REAL(wp), DIMENSION(jpi,jpj,jpl) :: za_s_fra ! ice fraction covered by snow REAL(wp), DIMENSION(A2D(0),jpl) :: za_s_fra ! ice fraction covered by snow
INTEGER :: ji, jj, jl ! dummy loop indices INTEGER :: ji, jj, jl ! dummy loop indices
REAL(wp) :: z1_c1, z1_c2,z1_c3, z1_c4 ! local scalar REAL(wp) :: z1_c1, z1_c2,z1_c3, z1_c4 ! local scalar
REAL(wp) :: z1_href_pnd ! inverse of the characteristic length scale (Lecomte et al. 2015) REAL(wp) :: z1_href_pnd ! inverse of the characteristic length scale (Lecomte et al. 2015)
...@@ -121,10 +121,10 @@ CONTAINS ...@@ -121,10 +121,10 @@ CONTAINS
z1_c3 = 1._wp / 0.02_wp z1_c3 = 1._wp / 0.02_wp
z1_c4 = 1._wp / 0.03_wp z1_c4 = 1._wp / 0.03_wp
! !
CALL ice_var_snwfra( ph_snw, za_s_fra ) ! calculate ice fraction covered by snow CALL ice_var_snwfra( ph_snw(:,:,:), za_s_fra(:,:,:) ) ! calculate ice fraction covered by snow
! !
DO jl = 1, jpl DO jl = 1, jpl
DO_2D( nn_hls, nn_hls, nn_hls, nn_hls ) ! palb_ice used over the full domain in icesbc DO_2D( 0, 0, 0, 0 ) ! palb_ice used over the full domain in icesbc
! !
!---------------------------------------------! !---------------------------------------------!
!--- Specific snow, ice and pond fractions ---! !--- Specific snow, ice and pond fractions ---!
...@@ -164,10 +164,10 @@ CONTAINS ...@@ -164,10 +164,10 @@ CONTAINS
zalb_pnd = rn_alb_dpnd - ( rn_alb_dpnd - zalb_ice ) * EXP( - ph_pnd(ji,jj,jl) * z1_href_pnd ) zalb_pnd = rn_alb_dpnd - ( rn_alb_dpnd - zalb_ice ) * EXP( - ph_pnd(ji,jj,jl) * z1_href_pnd )
! !
! !--- Surface albedo is weighted mean of snow, ponds and bare ice contributions ! !--- Surface albedo is weighted mean of snow, ponds and bare ice contributions
zalb_os = ( zafrac_snw * zalb_snw + zafrac_pnd * zalb_pnd + zafrac_ice * zalb_ice ) * tmask(ji,jj,1) zalb_os = ( zafrac_snw * zalb_snw + zafrac_pnd * zalb_pnd + zafrac_ice * zalb_ice ) * smask0(ji,jj)
! !
zalb_cs = zalb_os - ( - 0.1010_wp * zalb_os * zalb_os & zalb_cs = zalb_os - ( - 0.1010_wp * zalb_os * zalb_os &
& + 0.1933_wp * zalb_os - 0.0148_wp ) * tmask(ji,jj,1) & + 0.1933_wp * zalb_os - 0.0148_wp ) * smask0(ji,jj)
! !
! albedo depends on cloud fraction because of non-linear spectral effects ! albedo depends on cloud fraction because of non-linear spectral effects
palb_ice(ji,jj,jl) = ( 1._wp - pcloud_fra(ji,jj) ) * zalb_cs + pcloud_fra(ji,jj) * zalb_os palb_ice(ji,jj,jl) = ( 1._wp - pcloud_fra(ji,jj) ) * zalb_cs + pcloud_fra(ji,jj) * zalb_os
......