Index: /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/CONFIG/SHARED/field_def.xml
===================================================================
--- /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/CONFIG/SHARED/field_def.xml (revision 9162)
+++ /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/CONFIG/SHARED/field_def.xml (revision 9163)
@@ -787,5 +787,5 @@
-
+
@@ -901,4 +901,5 @@
ttrd_qsr_e3t * 1026.0 * 3991.86795711963
ttrd_bbl_e3t * 1026.0 * 3991.86795711963
+ ttrd_bbc_e3t * 1026.0 * 3991.86795711963
strd_bbl_e3t * 1026.0 * 0.001
ttrd_evd_e3t * 1026.0 * 3991.86795711963
Index: /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/CONFIG/SHARED/field_def_bgc.xml
===================================================================
--- /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/CONFIG/SHARED/field_def_bgc.xml (revision 9162)
+++ /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/CONFIG/SHARED/field_def_bgc.xml (revision 9163)
@@ -77,35 +77,54 @@
CHN * e3t
+
+
CHD * e3t
+
+
PHN * e3t
+
PHD * e3t
+
ZMI * e3t
+
ZME * e3t
+
DIN * e3t
+
SIL * e3t
+
FER * e3t
+
DET * e3t
+
PDS * e3t
+
DTC * e3t
+
DiC * e3t
+
ALK * e3t
+
OXY * e3t
+
-
+
+ IDTRA * e3t
+
@@ -122,16 +141,21 @@
CFC11 * e3t
+
CFC12 * e3t
+
SF6 * e3t
+
C14B * e3t
+
- Age * e3t
+ Age * e3t
+
@@ -524,4 +548,1079 @@
+
+
+
+
+
+ ATF_CHN * e3t
+
+
+ ATF_CHD * e3t
+
+
+ ATF_PHN * e3t
+
+
+ ATF_PHD * e3t
+
+
+ ATF_ZMI * e3t
+
+
+ ATF_ZME * e3t
+
+
+ ATF_DIN * e3t
+
+
+ ATF_SIL * e3t
+
+
+ ATF_FER * e3t
+
+
+ ATF_DET * e3t
+
+
+ ATF_PDS * e3t
+
+
+ ATF_DTC * e3t
+
+
+ ATF_DiC * e3t
+
+
+ ATF_ALK * e3t
+
+
+ ATF_OXY * e3t
+
+
+
+
+ ATF_IDTRA * e3t
+
+
+
+
+ ATF_CFC11 * e3t
+
+
+
+
+ ATF_CFC12 * e3t
+
+
+
+
+ ATF_SF6 * e3t
+
+
+
+
+ ATF_C14B * e3t
+
+
+
+
+ ATF_Age * e3t
+
+
+
+
+
+
+
+
+ XAD_CHN * e3t
+
+
+ XAD_CHD * e3t
+
+
+ XAD_PHN * e3t
+
+
+ XAD_PHD * e3t
+
+
+ XAD_ZMI * e3t
+
+
+ XAD_ZME * e3t
+
+
+ XAD_DIN * e3t
+
+
+ XAD_SIL * e3t
+
+
+ XAD_FER * e3t
+
+
+ XAD_DET * e3t
+
+
+ XAD_PDS * e3t
+
+
+ XAD_DTC * e3t
+
+
+ XAD_DiC * e3t
+
+
+ XAD_ALK * e3t
+
+
+ XAD_OXY * e3t
+
+
+
+ YAD_CHN * e3t
+
+
+ YAD_CHD * e3t
+
+
+ YAD_PHN * e3t
+
+
+ YAD_PHD * e3t
+
+
+ YAD_ZMI * e3t
+
+
+ YAD_ZME * e3t
+
+
+ YAD_DIN * e3t
+
+
+ YAD_SIL * e3t
+
+
+ YAD_FER * e3t
+
+
+ YAD_DET * e3t
+
+
+ YAD_PDS * e3t
+
+
+ YAD_DTC * e3t
+
+
+ YAD_DiC * e3t
+
+
+ YAD_ALK * e3t
+
+
+ YAD_OXY * e3t
+
+
+
+ ZAD_CHN * e3t
+
+
+ ZAD_CHD * e3t
+
+
+ ZAD_PHN * e3t
+
+
+ ZAD_PHD * e3t
+
+
+ ZAD_ZMI * e3t
+
+
+ ZAD_ZME * e3t
+
+
+ ZAD_DIN * e3t
+
+
+ ZAD_SIL * e3t
+
+
+ ZAD_FER * e3t
+
+
+ ZAD_DET * e3t
+
+
+ ZAD_PDS * e3t
+
+
+ ZAD_DTC * e3t
+
+
+ ZAD_DiC * e3t
+
+
+ ZAD_ALK * e3t
+
+
+ ZAD_OXY * e3t
+
+
+
+ TAD_CHN * e3t
+
+
+ TAD_CHD * e3t
+
+
+ TAD_PHN * e3t
+
+
+ TAD_PHD * e3t
+
+
+ TAD_ZMI * e3t
+
+
+ TAD_ZME * e3t
+
+
+ TAD_DIN * e3t
+
+
+ TAD_SIL * e3t
+
+
+ TAD_FER * e3t
+
+
+ TAD_DET * e3t
+
+
+ TAD_PDS * e3t
+
+
+ TAD_DTC * e3t
+
+
+ TAD_DiC * e3t
+
+
+ TAD_ALK * e3t
+
+
+ TAD_OXY * e3t
+
+
+
+ LDF_CHN * e3t
+
+
+ LDF_CHD * e3t
+
+
+ LDF_PHN * e3t
+
+
+ LDF_PHD * e3t
+
+
+ LDF_ZMI * e3t
+
+
+ LDF_ZME * e3t
+
+
+ LDF_DIN * e3t
+
+
+ LDF_SIL * e3t
+
+
+ LDF_FER * e3t
+
+
+ LDF_DET * e3t
+
+
+ LDF_PDS * e3t
+
+
+ LDF_DTC * e3t
+
+
+ LDF_DiC * e3t
+
+
+ LDF_ALK * e3t
+
+
+ LDF_OXY * e3t
+
+
+
+ BBL_CHN * e3t
+
+
+ BBL_CHD * e3t
+
+
+ BBL_PHN * e3t
+
+
+ BBL_PHD * e3t
+
+
+ BBL_ZMI * e3t
+
+
+ BBL_ZME * e3t
+
+
+ BBL_DIN * e3t
+
+
+ BBL_SIL * e3t
+
+
+ BBL_FER * e3t
+
+
+ BBL_DET * e3t
+
+
+ BBL_PDS * e3t
+
+
+ BBL_DTC * e3t
+
+
+ BBL_DiC * e3t
+
+
+ BBL_ALK * e3t
+
+
+ BBL_OXY * e3t
+
+
+
+ FOR_CHN * e3t
+
+
+ FOR_CHD * e3t
+
+
+ FOR_PHN * e3t
+
+
+ FOR_PHD * e3t
+
+
+ FOR_ZMI * e3t
+
+
+ FOR_ZME * e3t
+
+
+ FOR_DIN * e3t
+
+
+ FOR_SIL * e3t
+
+
+ FOR_FER * e3t
+
+
+ FOR_DET * e3t
+
+
+ FOR_PDS * e3t
+
+
+ FOR_DTC * e3t
+
+
+ FOR_DiC * e3t
+
+
+ FOR_ALK * e3t
+
+
+ FOR_OXY * e3t
+
+
+
+ ZDF_CHN * e3t
+
+
+ ZDF_CHD * e3t
+
+
+ ZDF_PHN * e3t
+
+
+ ZDF_PHD * e3t
+
+
+ ZDF_ZMI * e3t
+
+
+ ZDF_ZME * e3t
+
+
+ ZDF_DIN * e3t
+
+
+ ZDF_SIL * e3t
+
+
+ ZDF_FER * e3t
+
+
+ ZDF_DET * e3t
+
+
+ ZDF_PDS * e3t
+
+
+ ZDF_DTC * e3t
+
+
+ ZDF_DiC * e3t
+
+
+ ZDF_ALK * e3t
+
+
+ ZDF_OXY * e3t
+
+
+
+ ZDP_CHN * e3t
+
+
+ ZDP_CHD * e3t
+
+
+ ZDP_PHN * e3t
+
+
+ ZDP_PHD * e3t
+
+
+ ZDP_ZMI * e3t
+
+
+ ZDP_ZME * e3t
+
+
+ ZDP_DIN * e3t
+
+
+ ZDP_SIL * e3t
+
+
+ ZDP_FER * e3t
+
+
+ ZDP_DET * e3t
+
+
+ ZDP_PDS * e3t
+
+
+ ZDP_DTC * e3t
+
+
+ ZDP_DiC * e3t
+
+
+ ZDP_ALK * e3t
+
+
+ ZDP_OXY * e3t
+
+
+
+ DMP_CHN * e3t
+
+
+ DMP_CHD * e3t
+
+
+ DMP_PHN * e3t
+
+
+ DMP_PHD * e3t
+
+
+ DMP_ZMI * e3t
+
+
+ DMP_ZME * e3t
+
+
+ DMP_DIN * e3t
+
+
+ DMP_SIL * e3t
+
+
+ DMP_FER * e3t
+
+
+ DMP_DET * e3t
+
+
+ DMP_PDS * e3t
+
+
+ DMP_DTC * e3t
+
+
+ DMP_DiC * e3t
+
+
+ DMP_ALK * e3t
+
+
+ DMP_OXY * e3t
+
+
+
+ SMS_CHN * e3t
+
+
+ SMS_CHD * e3t
+
+
+ SMS_PHN * e3t
+
+
+ SMS_PHD * e3t
+
+
+ SMS_ZMI * e3t
+
+
+ SMS_ZME * e3t
+
+
+ SMS_DIN * e3t
+
+
+ SMS_SIL * e3t
+
+
+ SMS_FER * e3t
+
+
+ SMS_DET * e3t
+
+
+ SMS_PDS * e3t
+
+
+ SMS_DTC * e3t
+
+
+ SMS_DiC * e3t
+
+
+ SMS_ALK * e3t
+
+
+ SMS_OXY * e3t
+
+
+
+ RDB_CHN * e3t
+
+
+ RDB_CHD * e3t
+
+
+ RDB_PHN * e3t
+
+
+ RDB_PHD * e3t
+
+
+ RDB_ZMI * e3t
+
+
+ RDB_ZME * e3t
+
+
+ RDB_DIN * e3t
+
+
+ RDB_SIL * e3t
+
+
+ RDB_FER * e3t
+
+
+ RDB_DET * e3t
+
+
+ RDB_PDS * e3t
+
+
+ RDB_DTC * e3t
+
+
+ RDB_DiC * e3t
+
+
+ RDB_ALK * e3t
+
+
+ RDB_OXY * e3t
+
+
+
+ RDN_CHN * e3t
+
+
+ RDN_CHD * e3t
+
+
+ RDN_PHN * e3t
+
+
+ RDN_PHD * e3t
+
+
+ RDN_ZMI * e3t
+
+
+ RDN_ZME * e3t
+
+
+ RDN_DIN * e3t
+
+
+ RDN_SIL * e3t
+
+
+ RDN_FER * e3t
+
+
+ RDN_DET * e3t
+
+
+ RDN_PDS * e3t
+
+
+ RDN_DTC * e3t
+
+
+ RDN_DiC * e3t
+
+
+ RDN_ALK * e3t
+
+
+ RDN_OXY * e3t
+
+
+ LDF_CHN + ZDF_CHN - ZDP_CHN
+ ISO_CHN * e3t
+
+ LDF_CHD + ZDF_CHD - ZDP_CHD
+ ISO_CHD * e3t
+
+ LDF_PHN + ZDF_PHN - ZDP_PHN
+ ISO_PHN * e3t
+
+ LDF_PHD + ZDF_PHD - ZDP_PHD
+ ISO_PHD * e3t
+
+ LDF_ZMI + ZDF_ZMI - ZDP_ZMI
+ ISO_ZMI * e3t
+
+ LDF_ZME + ZDF_ZME - ZDP_ZME
+ ISO_ZME * e3t
+
+ LDF_DIN + ZDF_DIN - ZDP_DIN
+ ISO_DIN * e3t
+
+ LDF_SIL + ZDF_SIL - ZDP_SIL
+ ISO_SIL * e3t
+
+ LDF_FER + ZDF_FER - ZDP_FER
+ ISO_FER * e3t
+
+ LDF_DET + ZDF_DET - ZDP_DET
+ ISO_DET * e3t
+
+ LDF_PDS + ZDF_PDS - ZDP_PDS
+ ISO_PDS * e3t
+
+ LDF_DTC + ZDF_DTC - ZDP_DTC
+ ISO_DTC * e3t
+
+ LDF_DiC + ZDF_DiC - ZDP_DiC
+ ISO_DiC * e3t
+
+ LDF_ALK + ZDF_ALK - ZDP_ALK
+ ISO_ALK * e3t
+
+ LDF_OXY + ZDF_OXY - ZDP_OXY
+ ISO_OXY * e3t
+
+
+
+
+ XAD_IDTRA * e3t
+
+
+ YAD_IDTRA * e3t
+
+
+ ZAD_IDTRA * e3t
+
+
+ TAD_IDTRA * e3t
+
+
+ LDF_IDTRA * e3t
+
+
+ BBL_IDTRA * e3t
+
+
+ FOR_IDTRA * e3t
+
+
+ ZDF_IDTRA * e3t
+
+
+ ZDP_IDTRA * e3t
+
+
+ DMP_IDTRA * e3t
+
+
+ SMS_IDTRA * e3t
+
+
+ RDB_IDTRA * e3t
+
+
+ RDN_IDTRA * e3t
+
+ LDF_IDTRA + ZDF_IDTRA - ZDP_IDTRA
+ ISO_IDTRA * e3t
+
+
+
+
+ XAD_CFC11 * e3t
+
+
+ YAD_CFC11 * e3t
+
+
+ ZAD_CFC11 * e3t
+
+
+ TAD_CFC11 * e3t
+
+
+ LDF_CFC11 * e3t
+
+
+ BBL_CFC11 * e3t
+
+
+ FOR_CFC11 * e3t
+
+
+ ZDF_CFC11 * e3t
+
+
+ ZDP_CFC11 * e3t
+
+
+ DMP_CFC11 * e3t
+
+
+ SMS_CFC11 * e3t
+
+
+ RDB_CFC11 * e3t
+
+
+ RDN_CFC11 * e3t
+
+ LDF_CFC11 + ZDF_CFC11 - ZDP_CFC11
+ ISO_CFC11 * e3t
+
+
+
+
+ XAD_CFC12 * e3t
+
+
+ YAD_CFC12 * e3t
+
+
+ ZAD_CFC12 * e3t
+
+
+ TAD_CFC12 * e3t
+
+
+ LDF_CFC12 * e3t
+
+
+ BBL_CFC12 * e3t
+
+
+ FOR_CFC12 * e3t
+
+
+ ZDF_CFC12 * e3t
+
+
+ ZDP_CFC12 * e3t
+
+
+ DMP_CFC12 * e3t
+
+
+ SMS_CFC12 * e3t
+
+
+ RDB_CFC12 * e3t
+
+
+ RDN_CFC12 * e3t
+
+ LDF_CFC12 + ZDF_CFC12 - ZDP_CFC12
+ ISO_CFC12 * e3t
+
+
+
+
+ XAD_SF6 * e3t
+
+
+ YAD_SF6 * e3t
+
+
+ ZAD_SF6 * e3t
+
+
+ TAD_SF6 * e3t
+
+
+ LDF_SF6 * e3t
+
+
+ BBL_SF6 * e3t
+
+
+ FOR_SF6 * e3t
+
+
+ ZDF_SF6 * e3t
+
+
+ ZDP_SF6 * e3t
+
+
+ DMP_SF6 * e3t
+
+
+ SMS_SF6 * e3t
+
+
+ RDB_SF6 * e3t
+
+
+ RDN_SF6 * e3t
+
+ LDF_SF6 + ZDF_SF6 - ZDP_SF6
+ ISO_SF6 * e3t
+
+
+
+
+ XAD_C14B * e3t
+
+
+ YAD_C14B * e3t
+
+
+ ZAD_C14B * e3t
+
+
+ TAD_C14B * e3t
+
+
+ LDF_C14B * e3t
+
+
+ BBL_C14B * e3t
+
+
+ FOR_C14B * e3t
+
+
+ ZDF_C14B * e3t
+
+
+ ZDP_C14B * e3t
+
+
+ DMP_C14B * e3t
+
+
+ SMS_C14B * e3t
+
+
+ RDB_C14B * e3t
+
+
+ RDN_C14B * e3t
+
+ LDF_C14B + ZDF_C14B - ZDP_C14B
+ ISO_C14B * e3t
+
+
+
+
+ XAD_Age * e3t
+
+
+ YAD_Age * e3t
+
+
+ ZAD_Age * e3t
+
+
+ TAD_Age * e3t
+
+
+ LDF_Age * e3t
+
+
+ BBL_Age * e3t
+
+
+ FOR_Age * e3t
+
+
+ ZDF_Age * e3t
+
+
+ ZDP_Age * e3t
+
+
+ DMP_Age * e3t
+
+
+ SMS_Age * e3t
+
+
+ RDB_Age * e3t
+
+
+ RDN_Age * e3t
+
+ LDF_Age + ZDF_Age - ZDP_Age
+ ISO_Age * e3t
+
+
+
+
+
+
+
+ TOT_CHN * e3t
+
+
+ TOT_CHD * e3t
+
+
+ TOT_PHN * e3t
+
+
+ TOT_PHD * e3t
+
+
+ TOT_ZMI * e3t
+
+
+ TOT_ZME * e3t
+
+
+ TOT_DIN * e3t
+
+
+ TOT_SIL * e3t
+
+
+ TOT_FER * e3t
+
+
+ TOT_DET * e3t
+
+
+ TOT_PDS * e3t
+
+
+ TOT_DTC * e3t
+
+
+ TOT_DiC * e3t
+
+
+ TOT_ALK * e3t
+
+
+ TOT_OXY * e3t
+
+
+
+
+
+
+ TOT_IDTRA * e3t
+
+
+
+
+ TOT_CFC11 * e3t
+
+
+
+ TOT_CFC12 * e3t
+
+
+
+ TOT_SF6 * e3t
+
+
+
+
+ TOT_C14B * e3t
+
+
+
+
+ TOT_Age * e3t
+
+
+
+
@@ -545,34 +1644,36 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -584,14 +1685,11 @@
-
+
-
-
-
@@ -599,8 +1697,11 @@
+
+
+
@@ -608,4 +1709,484 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Index: /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/CONFIG/SHARED/iodef_medusa_et_al.xml
===================================================================
--- /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/CONFIG/SHARED/iodef_medusa_et_al.xml (revision 9162)
+++ /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/CONFIG/SHARED/iodef_medusa_et_al.xml (revision 9163)
@@ -24,6 +24,12 @@
============================================================================================================
-->
-
-
+
+
+
+
@@ -38,144 +44,8 @@
-
-
-
-
- @toce_e3t / @e3t
- @toce2_e3t / @e3t
- @soce_e3t / @e3t
- @soce2_e3t / @e3t
- @ttrd_totad_e3t * 1026.0 * 3991.86795711963
- @ttrd_iso_e3t * 1026.0 * 3991.86795711963
- @ttrd_zdfp_e3t * 1026.0 * 3991.86795711963
- @ttrd_evd_e3t / @e3t
- @ttrd_qns_e3t / @e3t_surf
- @ttrd_qsr_e3t * 1026.0 * 3991.86795711963
- @ttrd_bbl_e3t / @e3t
- @ttrd_tot_e3t * 1026.0 * 3991.86795711963
- @strd_totad_e3t * 1026.0 * 0.001
- @strd_iso_e3t * 1026.0 * 0.001
- @strd_zdfp_e3t * 1026.0 * 0.001
- @strd_evd_e3t / @e3t
- @strd_tot_e3t * 1026.0 * 0.001
- @strd_bbl_e3t / @e3t
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- @uoce_e3u / @e3u
- @uoce2_e3u / @e3u
- @ut_e3u / @e3u
- @us_e3u / @e3u
-
-
-
-
-
- @voce_e3v / @e3v
- @voce2_e3v / @e3v
- @vt_e3v / @e3v
- @vs_e3v / @e3v
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
+
+
@@ -185,18 +55,22 @@
@soce_e3t / @e3t
@soce2_e3t / @e3t
- @ttrd_totad_e3t * 1026.0 * 3991.86795711963
- @ttrd_iso_e3t * 1026.0 * 3991.86795711963
- @ttrd_zdfp_e3t * 1026.0 * 3991.86795711963
- @ttrd_evd_e3t / @e3t
- @ttrd_qns_e3t / @e3t_surf
- @ttrd_qsr_e3t * 1026.0 * 3991.86795711963
- @ttrd_bbl_e3t / @e3t
- @ttrd_tot_e3t * 1026.0 * 3991.86795711963
- @strd_totad_e3t * 1026.0 * 0.001
- @strd_iso_e3t * 1026.0 * 0.001
- @strd_zdfp_e3t * 1026.0 * 0.001
- @strd_evd_e3t / @e3t
- @strd_tot_e3t * 1026.0 * 0.001
- @strd_bbl_e3t / @e3t
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -298,7 +172,4 @@
-
-
-
@@ -307,8 +178,32 @@
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -334,4 +229,7 @@
+
+
+
@@ -339,12 +237,8 @@
-
-
-
-
+
-
-
+
@@ -356,12 +250,7 @@
-
-
-
-
-
-
+
@@ -372,5 +261,5 @@
-
+
@@ -381,5 +270,5 @@
-
+
@@ -390,9 +279,9 @@
-
+
-
+
@@ -400,8 +289,8 @@
-
+
-
+
@@ -416,5 +305,5 @@
-
+
@@ -425,12 +314,26 @@
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
@@ -443,5 +346,5 @@
0
false
- true
+ false
toyoce
Index: /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/CONFIG/SHARED/namelist_top_MEDUSA_et_al_ref
===================================================================
--- /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/CONFIG/SHARED/namelist_top_MEDUSA_et_al_ref (revision 9162)
+++ /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/CONFIG/SHARED/namelist_top_MEDUSA_et_al_ref (revision 9163)
@@ -98,6 +98,6 @@
nn_ctls_trc = 0 ! control surface type in mixed-layer trends (0,1 or n /seconds ; =86400. -> /day)
- ln_trdmld_trc_restart = .false. ! restart for ML diagnostics
- ln_trdmld_trc_instant = .true. ! flag to diagnose trends of instantantaneous or mean ML T/S
+ ln_trdmxl_trc_restart = .false. ! restart for ML diagnostics
+ ln_trdmxl_trc_instant = .true. ! flag to diagnose trends of instantantaneous or mean ML T/S
ln_trdtrc(1) = .true.
ln_trdtrc(2) = .true.
Index: /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/CONFIG/SHARED/namelist_top_ref
===================================================================
--- /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/CONFIG/SHARED/namelist_top_ref (revision 9162)
+++ /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/CONFIG/SHARED/namelist_top_ref (revision 9163)
@@ -98,6 +98,6 @@
nn_ctls_trc = 0 ! control surface type in mixed-layer trends (0,1 or n /seconds ; =86400. -> /day)
- ln_trdmld_trc_restart = .false. ! restart for ML diagnostics
- ln_trdmld_trc_instant = .true. ! flag to diagnose trends of instantantaneous or mean ML T/S
+ ln_trdmxl_trc_restart = .false. ! restart for ML diagnostics
+ ln_trdmxl_trc_instant = .true. ! flag to diagnose trends of instantantaneous or mean ML T/S
ln_trdtrc(1) = .true.
ln_trdtrc(2) = .true.
Index: /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/OPA_SRC/IOM/iom.F90
===================================================================
--- /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/OPA_SRC/IOM/iom.F90 (revision 9162)
+++ /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/OPA_SRC/IOM/iom.F90 (revision 9163)
@@ -1634,4 +1634,6 @@
WRITE(cl1,'(i1)') 2 ; CALL iom_set_field_attr('trendT_even' , freq_op=cl1//'ts', freq_offset='0ts')
WRITE(cl1,'(i1)') 2 ; CALL iom_set_field_attr('trendT_odd' , freq_op=cl1//'ts', freq_offset='-1ts')
+ WRITE(cl1,'(i1)') 2 ; CALL iom_set_field_attr('ptrd_T_even' , freq_op=cl1//'ts', freq_offset='0ts')
+ WRITE(cl1,'(i1)') 2 ; CALL iom_set_field_attr('ptrd_T_odd' , freq_op=cl1//'ts', freq_offset='-1ts')
WRITE(cl1,'(i1)') nn_fsbc ; CALL iom_set_field_attr('SBC' , freq_op=cl1//'ts', freq_offset='0ts')
WRITE(cl1,'(i1)') nn_fsbc ; CALL iom_set_field_attr('SBC_scalar' , freq_op=cl1//'ts', freq_offset='0ts')
@@ -1642,4 +1644,6 @@
f_op%timestep = 2 ; f_of%timestep = 0 ; CALL iom_set_field_attr('trendT_even' , freq_op=f_op, freq_offset=f_of)
f_op%timestep = 2 ; f_of%timestep = -1 ; CALL iom_set_field_attr('trendT_odd' , freq_op=f_op, freq_offset=f_of)
+ f_op%timestep = 2 ; f_of%timestep = 0 ; CALL iom_set_field_attr('ptrd_T_even' , freq_op=f_op, freq_offset=f_of)
+ f_op%timestep = 2 ; f_of%timestep = -1 ; CALL iom_set_field_attr('ptrd_T_odd' , freq_op=f_op, freq_offset=f_of)
f_op%timestep = nn_fsbc ; f_of%timestep = 0 ; CALL iom_set_field_attr('SBC' , freq_op=f_op, freq_offset=f_of)
f_op%timestep = nn_fsbc ; f_of%timestep = 0 ; CALL iom_set_field_attr('SBC_scalar' , freq_op=f_op, freq_offset=f_of)
Index: /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/OPA_SRC/TRA/tranxt.F90
===================================================================
--- /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/OPA_SRC/TRA/tranxt.F90 (revision 9162)
+++ /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/OPA_SRC/TRA/tranxt.F90 (revision 9163)
@@ -49,4 +49,5 @@
USE agrif_opa_interp
#endif
+
IMPLICIT NONE
@@ -340,5 +341,5 @@
DO jn = 1, kjpt
DO jk = 1, jpkm1
- zfact = 1._wp / r2dtra(jk)
+ zfact = 0.5_wp / p2dt(jk)
zfact1 = atfp * p2dt(jk)
zfact2 = zfact1 / rau0
Index: /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/OPA_SRC/TRD/trd_oce.F90
===================================================================
--- /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/OPA_SRC/TRD/trd_oce.F90 (revision 9162)
+++ /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/OPA_SRC/TRD/trd_oce.F90 (revision 9163)
@@ -57,7 +57,7 @@
!
! !!!* Passive tracers trends indices (use if "key_top" defined)
- INTEGER, PUBLIC, PARAMETER :: jptra_sms = 19 !: sources m. sinks
- INTEGER, PUBLIC, PARAMETER :: jptra_radn = 20 !: corr. trn<0 in trcrad
- INTEGER, PUBLIC, PARAMETER :: jptra_radb = 21 !: corr. trb<0 in trcrad (like atf)
+ INTEGER, PUBLIC, PARAMETER :: jptra_sms = 21 !: sources m. sinks
+ INTEGER, PUBLIC, PARAMETER :: jptra_radn = 22 !: corr. trn<0 in trcrad
+ INTEGER, PUBLIC, PARAMETER :: jptra_radb = 23 !: corr. trb<0 in trcrad (like atf)
!
! !!!* Momentum trends indices
Index: /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/OPA_SRC/TRD/trdtra.F90
===================================================================
--- /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/OPA_SRC/TRD/trdtra.F90 (revision 9162)
+++ /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/OPA_SRC/TRD/trdtra.F90 (revision 9163)
@@ -20,4 +20,7 @@
USE trd_oce ! trends: ocean variables
USE trdtrc ! ocean passive mixed layer tracers trends
+# if defined key_top
+ USE trc, ONLY: tra ! tracer definitions (trn, trb, tra, etc.)
+# endif
USE trdglo ! trends: global domain averaged
USE trdpen ! trends: Potential ENergy
@@ -163,4 +166,5 @@
ENDIF
+# if defined key_top
IF( ctype == 'TRC' ) THEN !== passive tracer trend ==!
!
@@ -170,4 +174,21 @@
CASE( jptra_yad ) ; CALL trd_tra_adv( ptrd , pun , ptra, 'Y', ztrds )
CASE( jptra_zad ) ; CALL trd_tra_adv( ptrd , pun , ptra, 'Z', ztrds )
+ CASE( jptra_zdfp ) ! diagnose the "PURE" Kz trend (here: just before the swap)
+ ! ! iso-neutral diffusion case otherwise
+ ! jptra_zdf is "PURE"
+ CALL wrk_alloc( jpi, jpj, jpk, zws )
+ !
+ zws(:,:, 1 ) = 0._wp ! vertical diffusive fluxes
+ zws(:,:,jpk) = 0._wp
+ DO jk = 2, jpk
+ zws(:,:,jk) = avt(:,:,jk) * (tra(:,:,jk-1,ktra) - tra(:,:,jk,ktra) ) / fse3w(:,:,jk) * tmask(:,:,jk)
+ END DO
+ !
+ ztrds(:,:,jpk) = 0._wp
+ DO jk = 1, jpkm1
+ ztrds(:,:,jk) = ( zws(:,:,jk) - zws(:,:,jk+1) ) / fse3t(:,:,jk)
+ END DO
+ CALL wrk_dealloc( jpi, jpj, jpk, zws )
+ !
CASE DEFAULT ! other trends: just masked
ztrds(:,:,:) = ptrd(:,:,:) * tmask(:,:,:)
@@ -177,4 +198,5 @@
!
ENDIF
+# endif
!
CALL wrk_dealloc( jpi, jpj, jpk, ztrds )
Index: /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/CFC/trcsms_cfc.F90
===================================================================
--- /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/CFC/trcsms_cfc.F90 (revision 9162)
+++ /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/CFC/trcsms_cfc.F90 (revision 9163)
@@ -24,4 +24,5 @@
USE trdtrc
USE iom ! I/O library
+ USE wrk_nemo
IMPLICIT NONE
@@ -54,4 +55,7 @@
REAL(wp) :: xconv3 = 1.0e+3 ! conversion from mol/l/atm to mol/m3/atm
REAL(wp) :: xconv4 = 1.0e-12 ! conversion from mol/m3/atm to mol/m3/pptv
+
+ !! trend temporary array:
+ REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrcfc
!! * Substitutions
@@ -265,7 +269,10 @@
!
IF( l_trdtrc ) THEN
+ CALL wrk_alloc( jpi, jpj, jpk, ztrcfc )
DO jn = jp_cfc0, jp_cfc1
- CALL trd_trc( tra(:,:,:,jn), jn, jptra_sms, kt ) ! save trends
+ ztrcfc(:,:,:) = tra(:,:,:,jn)
+ CALL trd_trc( ztrcfc, jn, jptra_sms, kt ) ! save trends
END DO
+ CALL wrk_dealloc( jpi, jpj, jpk, ztrcfc )
END IF
!
Index: /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/MEDUSA/bio_medusa_update.F90
===================================================================
--- /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/MEDUSA/bio_medusa_update.F90 (revision 9162)
+++ /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/MEDUSA/bio_medusa_update.F90 (revision 9163)
@@ -75,5 +75,5 @@
USE lib_mpp, ONLY: ctl_stop
USE par_kind, ONLY: wp
- USE par_medusa, ONLY: jp_medusa, &
+ USE par_medusa, ONLY: jp_medusa, jp_msa0, jp_msa1, &
jpalk, jpchd, jpchn, jpdet, jpdic, &
jpdin, jpdtc, jpfer, jpoxy, jppds, &
@@ -83,5 +83,5 @@
jpoxy_lc, jppds_lc, jpphd_lc, jpphn_lc, &
jpsil_lc, jpzme_lc, jpzmi_lc
- USE par_oce, ONLY: jpi, jpim1, jpj, jpjm1
+ USE par_oce, ONLY: jpi, jpim1, jpj, jpjm1, jpk
USE par_trc, ONLY: jptra
USE sms_medusa, ONLY: friver_dep, &
Index: /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcsms_medusa.F90
===================================================================
--- /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcsms_medusa.F90 (revision 9162)
+++ /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/MEDUSA/trcsms_medusa.F90 (revision 9163)
@@ -23,4 +23,9 @@
USE trcsed_medusa
USE trcavg_medusa
+ !! for SMS trends
+ USE par_medusa, ONLY: jp_msa0, jp_msa1, jp_medusa
+ USE par_oce, ONLY: jpi, jpj, jpk
+ USE trd_oce, ONLY: jptra_sms, l_trdtrc
+ USE trdtrc
@@ -47,4 +52,9 @@
!!----------------------------------------------------------------------
INTEGER, INTENT(in) :: kt ! ocean time-step index
+ !! Loop variables
+ INTEGER :: jn
+ !! trend temporary array:
+ REAL(wp), POINTER, DIMENSION(:,:,:,:) :: ztrmed
+
# if defined key_debug_medusa
@@ -58,4 +68,13 @@
IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~~~'
ENDIF
+
+ !! MEDUSA SMS trends:
+ IF( l_trdtrc ) THEN
+ CALL wrk_alloc( jpi, jpj, jpk, jp_medusa, ztrmed )
+ ztrmed(:,:,:,:)=0.0
+ DO jn = 1, jp_medusa
+ ztrmed(:,:,:,jn) = tra(:,:,:,jp_msa0 + jn - 1)
+ END DO
+ END IF
CALL trc_avg_medusa( kt ) ! rolling average module
@@ -97,4 +116,14 @@
# endif
+ !! MEDUSA SMS trends:
+ IF( l_trdtrc ) THEN
+ DO jn = 1, jp_medusa
+ ztrmed(:,:,:,jn) = tra(:,:,:,jp_msa0 + jn - 1)-ztrmed(:,:,:,jn)
+ CALL trd_trc( ztrmed(:,:,:,jn), jn, jptra_sms, kt ) ! save trends
+ END DO
+ CALL wrk_dealloc( jpi, jpj, jpk, jp_medusa, ztrmed )
+ END IF
+
+
END SUBROUTINE trc_sms_medusa
Index: /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/TRP/trcnxt.F90
===================================================================
--- /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/TRP/trcnxt.F90 (revision 9162)
+++ /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/TRP/trcnxt.F90 (revision 9163)
@@ -27,7 +27,9 @@
!!----------------------------------------------------------------------
USE oce_trc ! ocean dynamics and tracers variables
+ USE domvvl ! variable volume
USE trc ! ocean passive tracers variables
USE lbclnk ! ocean lateral boundary conditions (or mpp link)
USE prtctl_trc ! Print control for debbuging
+ USE trcnam_trp ! passive tracers transport namelist variables
USE trd_oce
USE trdtra
@@ -45,4 +47,6 @@
REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:) :: r2dt
+ !! * Substitutions
+# include "domzgr_substitute.h90"
!!----------------------------------------------------------------------
!! NEMO/TOP 3.3 , NEMO Consortium (2010)
@@ -124,5 +128,37 @@
IF( l_trdtrc ) THEN
CALL wrk_alloc( jpi, jpj, jpk, jptra, ztrdt ) !* store now fields before applying the Asselin filter
- ztrdt(:,:,:,:) = trn(:,:,:,:)
+ ztrdt(:,:,jpk,:) = 0._wp
+ IF( ln_trcldf_iso ) THEN ! diagnose the "pure" Kz diffusive trend
+ DO jn = 1, jptra
+ CALL trd_tra( kt, 'TRC', jn, jptra_zdfp, ztrdt(:,:,:,jn) )
+ ENDDO
+ ENDIF
+ ! total trend for the non-time-filtered variables.
+ ! G Nurser 23 Mar 2017. Recalculate trend as Delta(e3t*T)/e3tn; e3tn
+ ! cancel from tsn terms
+ IF( lk_vvl ) THEN
+ DO jn = 1, jptra
+ DO jk = 1, jpkm1
+ zfact = 1.0 / rdttrc(jk)
+ ztrdt(:,:,jk,jn) = ( tra(:,:,jk,jn)*fse3t_a(:,:,jk) / fse3t_n(:,:,jk) - &
+ trn(:,:,jk,jn) ) * zfact
+ END DO
+ END DO
+ ELSE
+ DO jn = 1, jptra
+ DO jk = 1, jpkm1
+ zfact = 1.0 / rdttrc(jk)
+ ztrdt(:,:,jk,jn) = ( tra(:,:,jk,jn) - trn(:,:,jk,jn) ) * zfact
+ END DO
+ END DO
+ END IF
+ DO jn = 1, jptra
+ CALL trd_tra( kt, 'TRC', jn, jptra_tot, ztrdt(:,:,:,jn) )
+ ENDDO
+ IF( .NOT.lk_vvl ) THEN
+ ! Store now fields before applying the Asselin filter
+ ! in order to calculate Asselin filter trend later.
+ ztrdt(:,:,:,:) = trn(:,:,:,:)
+ ENDIF
ENDIF
! Leap-Frog + Asselin filter time stepping
@@ -134,4 +170,15 @@
END DO
END DO
+ IF (l_trdtrc.AND.lk_vvl) THEN ! Zero Asselin filter contribution
+ ! must be explicitly written out since for vvl
+ ! Asselin filter is output by
+ ! tra_nxt_vvl that is not called on
+ ! this time step
+ ztrdt(:,:,:,:) = 0._wp
+ DO jn = 1, jptra
+ CALL trd_tra( kt, 'TRC', jn, jptra_atf, ztrdt(:,:,:,jn) )
+ ENDDO
+ END IF
+
!
ELSE
@@ -144,14 +191,15 @@
! trends computation
- IF( l_trdtrc ) THEN ! trends
+ IF( l_trdtrc.AND..NOT.lk_vvl) THEN ! trends
DO jn = 1, jptra
DO jk = 1, jpkm1
zfact = 1.e0 / r2dt(jk)
ztrdt(:,:,jk,jn) = ( trb(:,:,jk,jn) - ztrdt(:,:,jk,jn) ) * zfact
- CALL trd_tra( kt, 'TRC', jn, jptra_atf, ztrdt )
- END DO
+ END DO
+ CALL trd_tra( kt, 'TRC', jn, jptra_atf, ztrdt(:,:,:,jn) )
END DO
- CALL wrk_dealloc( jpi, jpj, jpk, jptra, ztrdt )
END IF
+ !
+ IF( l_trdtrc) CALL wrk_dealloc( jpi, jpj, jpk, jptra, ztrdt )
!
IF(ln_ctl) THEN ! print mean trends (used for debugging)
Index: /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/TRP/trcsbc.F90
===================================================================
--- /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/TRP/trcsbc.F90 (revision 9162)
+++ /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/TRP/trcsbc.F90 (revision 9163)
@@ -140,6 +140,9 @@
DO jn = 1, jptra
!
- IF( l_trdtrc ) ztrtrd(:,:,:) = tra(:,:,:,jn) ! save trends
- ! ! add the trend to the general tracer trend
+ IF( l_trdtrc ) THEN
+ ztrtrd(:,:,:) = 0.0
+ ztrtrd(:,:,1) = tra(:,:,1,jn) ! save surface trends
+ ! ! add the trend to the general tracer trend
+ ENDIF
IF ( nn_ice_tr == -1 ) THEN ! No tracers in sea ice (null concentration in sea ice)
@@ -184,5 +187,5 @@
!
IF( l_trdtrc ) THEN
- ztrtrd(:,:,:) = tra(:,:,:,jn) - ztrtrd(:,:,:)
+ ztrtrd(:,:,1) = tra(:,:,1,jn) - ztrtrd(:,:,1)
CALL trd_tra( kt, 'TRC', jn, jptra_nsr, ztrtrd )
END IF
Index: /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/TRP/trctrp.F90
===================================================================
--- /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/TRP/trctrp.F90 (revision 9162)
+++ /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/TRP/trctrp.F90 (revision 9163)
@@ -28,5 +28,5 @@
USE zpshde ! partial step: hor. derivative (zps_hde routine)
# if defined key_debug_medusa
- USE trcrst
+ USE trcstat
# endif
Index: /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/TRP/trczdf.F90
===================================================================
--- /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/TRP/trczdf.F90 (revision 9162)
+++ /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/TRP/trczdf.F90 (revision 9163)
@@ -15,4 +15,5 @@
!!----------------------------------------------------------------------
USE oce_trc ! ocean dynamics and active tracers
+ USE domvvl ! variable volume
USE trc ! ocean passive tracers variables
USE trcnam_trp ! passive tracers transport namelist variables
@@ -98,8 +99,21 @@
IF( l_trdtrc ) THEN ! save the vertical diffusive trends for further diagnostics
+ !! JPALM -- 18-08-2017 -- vvl case, do as done by G Nurser in trazdf
+ IF( lk_vvl ) THEN
+ DO jn = 1, jptra
+ DO jk = 1, jpkm1
+ ztrtrd(:,:,jk,jn) = ( ( tra(:,:,jk,jn)*fse3t_a(:,:,jk) - &
+ trb(:,:,jk,jn)*fse3t_b(:,:,jk) ) &
+ / (fse3t_n(:,:,jk)*r2dt(jk)) ) - ztrtrd(:,:,jk,jn)
+ END DO
+ END DO
+ ELSE
+ DO jn = 1, jptra
+ DO jk = 1, jpkm1
+ ztrtrd(:,:,jk,jn) = ( ( tra(:,:,jk,jn) - trb(:,:,jk,jn) ) / r2dt(jk) ) - ztrtrd(:,:,jk,jn)
+ END DO
+ END DO
+ ENDIF
DO jn = 1, jptra
- DO jk = 1, jpkm1
- ztrtrd(:,:,jk,jn) = ( ( tra(:,:,jk,jn) - trb(:,:,jk,jn) ) / r2dt(jk) ) - ztrtrd(:,:,jk,jn)
- END DO
CALL trd_tra( kt, 'TRC', jn, jptra_zdf, ztrtrd(:,:,:,jn) )
END DO
Index: /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/TRP/trdtrc.F90
===================================================================
--- /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/TRP/trdtrc.F90 (revision 9162)
+++ /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/TRP/trdtrc.F90 (revision 9163)
@@ -19,4 +19,7 @@
USE trdmxl_trc ! Mixed layer trends diag.
USE iom ! I/O library
+# if defined key_debug_medusa
+ USE trcstat, ONLY: trc_rst_dia_stat
+# endif
IMPLICIT NONE
@@ -86,21 +89,70 @@
IF( lk_trdtrc .AND. ln_trdtrc( kjn ) ) THEN
- !
+ !! JPALM -- 17-08-2017 -- modif following trd_tra_iom as suggested by Georges
+ !! -- add jptra_tot; jptra_totad; jptra_zdfp
+ !! -- shange to output trends every 2 time-step, except tot.
+ !! -- move cltra and iomput inside the select case
+ !! So if an non-wanted case arrives here it will not go
+ !! through cltra (without value) and break iomput.
+ !! -- Add iom_use in prevision of not using All trends
+ !! for All passive tracers (will create a HUGE 3D file otherwise --
+ !! might be interested in very few of them : SMS and TOT probably)
+ !
+ SELECT CASE( ktrd )
+ !! tot - output every time-step:
+ CASE( jptra_tot ) ; WRITE (cltra,'("TOT_",4a)')
+ cltra = TRIM(cltra)//TRIM(ctrcnm(kjn))
+ CALL trd_trc_iomput( cltra, ptrtrd, kjn, kt )
+ END SELECT
+ !
+ IF( MOD( kt, 2 ) == 0 ) THEN
SELECT CASE( ktrd )
CASE( jptra_xad ) ; WRITE (cltra,'("XAD_",4a)')
+ cltra = TRIM(cltra)//TRIM(ctrcnm(kjn))
+ CALL trd_trc_iomput( cltra, ptrtrd, kjn, kt )
CASE( jptra_yad ) ; WRITE (cltra,'("YAD_",4a)')
- CASE( jptra_zad ) ; WRITE (cltra,'("ZAD_",4a)')
+ cltra = TRIM(cltra)//TRIM(ctrcnm(kjn))
+ CALL trd_trc_iomput( cltra, ptrtrd, kjn, kt )
+ CASE( jptra_zad ) ; WRITE (cltra,'("ZAD_",4a)') !! care vvl case
+ cltra = TRIM(cltra)//TRIM(ctrcnm(kjn))
+ CALL trd_trc_iomput( cltra, ptrtrd, kjn, kt )
+ CASE( jptra_totad ) ; WRITE (cltra,'("TAD_",4a)') !! total adv
+ cltra = TRIM(cltra)//TRIM(ctrcnm(kjn))
+ CALL trd_trc_iomput( cltra, ptrtrd, kjn, kt )
CASE( jptra_ldf ) ; WRITE (cltra,'("LDF_",4a)')
+ cltra = TRIM(cltra)//TRIM(ctrcnm(kjn))
+ CALL trd_trc_iomput( cltra, ptrtrd, kjn, kt )
CASE( jptra_bbl ) ; WRITE (cltra,'("BBL_",4a)')
+ cltra = TRIM(cltra)//TRIM(ctrcnm(kjn))
+ CALL trd_trc_iomput( cltra, ptrtrd, kjn, kt )
CASE( jptra_nsr ) ; WRITE (cltra,'("FOR_",4a)')
+ cltra = TRIM(cltra)//TRIM(ctrcnm(kjn))
+ CALL trd_trc_iomput( cltra, ptrtrd, kjn, kt )
CASE( jptra_zdf ) ; WRITE (cltra,'("ZDF_",4a)')
+ cltra = TRIM(cltra)//TRIM(ctrcnm(kjn))
+ CALL trd_trc_iomput( cltra, ptrtrd, kjn, kt )
+ CASE( jptra_zdfp ) ; WRITE (cltra,'("ZDP_",4a)')
+ cltra = TRIM(cltra)//TRIM(ctrcnm(kjn))
+ CALL trd_trc_iomput( cltra, ptrtrd, kjn, kt )
CASE( jptra_dmp ) ; WRITE (cltra,'("DMP_",4a)')
+ cltra = TRIM(cltra)//TRIM(ctrcnm(kjn))
+ CALL trd_trc_iomput( cltra, ptrtrd, kjn, kt )
CASE( jptra_sms ) ; WRITE (cltra,'("SMS_",4a)')
+ cltra = TRIM(cltra)//TRIM(ctrcnm(kjn))
+ CALL trd_trc_iomput( cltra, ptrtrd, kjn, kt )
+ CASE( jptra_radb ) ; WRITE (cltra,'("RDB_",4a)')
+ cltra = TRIM(cltra)//TRIM(ctrcnm(kjn))
+ CALL trd_trc_iomput( cltra, ptrtrd, kjn, kt )
+ CASE( jptra_radn ) ; WRITE (cltra,'("RDN_",4a)')
+ cltra = TRIM(cltra)//TRIM(ctrcnm(kjn))
+ CALL trd_trc_iomput( cltra, ptrtrd, kjn, kt )
+ END SELECT
+ ELSE IF( MOD( kt, 2 ) == 1 ) THEN
+ SELECT CASE( ktrd )
CASE( jptra_atf ) ; WRITE (cltra,'("ATF_",4a)')
- CASE( jptra_radb ) ; WRITE (cltra,'("RDB_",4a)')
- CASE( jptra_radn ) ; WRITE (cltra,'("RDN_",4a)')
- END SELECT
- cltra = TRIM(cltra)//TRIM(ctrcnm(kjn))
- CALL iom_put( cltra, ptrtrd(:,:,:) )
+ cltra = TRIM(cltra)//TRIM(ctrcnm(kjn))
+ CALL trd_trc_iomput( cltra, ptrtrd, kjn, kt )
+ END SELECT
+ END IF
!
END IF
@@ -123,4 +175,33 @@
END SUBROUTINE trd_trc_bio
+
+ SUBROUTINE trd_trc_iomput( cltra, ptrtrd, kjn, kt )
+ !!----------------------------------------------------------------------
+ !! *** ROUTINE trd_trc_iomput ***
+ !!----------------------------------------------------------------------
+ INTEGER, INTENT( in ) :: kt ! timestep
+ INTEGER, INTENT( in ) :: kjn ! biotrend index
+ REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT( inout ) :: ptrtrd ! var trend
+ CHARACTER (len=*),INTENT( in ) :: cltra ! trend name
+ !!----------------------------------------------------------------------
+
+
+ IF (iom_use(cltra)) THEN
+# if defined key_debug_medusa
+ IF(lwp) WRITE(numout,*) ' TREND stats (min, max,sum) kt = ',kt ,' jn = ',kjn
+ CALL trc_rst_dia_stat( ptrtrd(:,:,1), cltra)
+# endif
+ CALL iom_put( cltra, ptrtrd(:,:,:) )
+# if defined key_debug_medusa
+ ELSE
+ IF(lwp) WRITE(numout,*) &
+ ' TREND -- No output asked for ',cltra,' kt = ',kt,' jn = ',kjn
+ CALL trc_rst_dia_stat( ptrtrd(:,:,1), cltra)
+# endif
+ ENDIF
+
+ END SUBROUTINE trd_trc_iomput
+
+
#else
!!----------------------------------------------------------------------
Index: /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/trcnam.F90
===================================================================
--- /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/trcnam.F90 (revision 9162)
+++ /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/trcnam.F90 (revision 9163)
@@ -60,5 +60,16 @@
!! ( (PISCES, CFC, MY_TRC, MEDUSA, IDTRA, Age )
!!---------------------------------------------------------------------
- INTEGER :: jn, jk ! dummy loop indice
+ INTEGER :: ierr
+#if defined key_trdmxl_trc || defined key_trdtrc
+ NAMELIST/namtrc_trd/ nn_trd_trc, nn_ctls_trc, rn_ucf_trc, &
+ & ln_trdmxl_trc_restart, ln_trdmxl_trc_instant, &
+ & cn_trdrst_trc_in, cn_trdrst_trc_out, ln_trdtrc
+#endif
+
+ INTEGER :: jn, jk ! dummy loop indice
+ INTEGER :: ios ! Local integer output status for namelist read
+ !!---------------------------------------------------------------------
+
+
! ! Parameters of the run
IF( .NOT. lk_offline ) CALL trc_nam_run
@@ -68,5 +79,5 @@
! ! Parameters of additional diagnostics
- CALL trc_nam_dia
+ IF( .NOT. lk_iomput ) CALL trc_nam_dia
! ! namelist of transport
@@ -171,6 +182,6 @@
ENDIF
- IF( lk_c14b ) THEN ; CALL trc_nam_c14b ! C14 bomb tracers
- ELSE ; IF(lwp) WRITE(numout,*) ' C14 not used'
+ IF( lk_c14b ) THEN ; CALL trc_nam_c14b ! C14 bomb tracers
+ ELSE ; IF(lwp) WRITE(numout,*) ' C14 not used'
ENDIF
Index: /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/trcrst.F90
===================================================================
--- /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/trcrst.F90 (revision 9162)
+++ /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/trcrst.F90 (revision 9163)
@@ -43,4 +43,5 @@
USE sbc_oce, ONLY: lk_oasis
USE oce, ONLY: CO2Flux_out_cpl, DMS_out_cpl, chloro_out_cpl !! Coupling variable
+ USE trcstat
IMPLICIT NONE
@@ -52,6 +53,4 @@
PUBLIC trc_rst_cal
PUBLIC trc_rst_stat
- PUBLIC trc_rst_dia_stat
- PUBLIC trc_rst_tra_stat
!! * Substitutions
@@ -706,90 +705,4 @@
- SUBROUTINE trc_rst_tra_stat
- !!----------------------------------------------------------------------
- !! *** trc_rst_tra_stat ***
- !!
- !! ** purpose : Compute tracers statistics - check where crazy values appears
- !!----------------------------------------------------------------------
- INTEGER :: jk, jn
- REAL(wp) :: ztraf, zmin, zmax, zmean, zdrift, areasf
- REAL(wp), DIMENSION(jpi,jpj) :: zvol
- !!----------------------------------------------------------------------
-
- IF( lwp ) THEN
- WRITE(numout,*)
- WRITE(numout,*) ' ----SURFACE TRA STAT---- '
- WRITE(numout,*)
- ENDIF
- !
- zvol(:,:) = e1e2t(:,:) * fse3t_a(:,:,1) * tmask(:,:,1)
- areasf = glob_sum(zvol(:,:))
- DO jn = 1, jptra
- ztraf = glob_sum( tra(:,:,1,jn) * zvol(:,:) )
- zmin = MINVAL( tra(:,:,1,jn), mask= ((tmask(:,:,1).NE.0.)) )
- zmax = MAXVAL( tra(:,:,1,jn), mask= ((tmask(:,:,1).NE.0.)) )
- IF( lk_mpp ) THEN
- CALL mpp_min( zmin ) ! min over the global domain
- CALL mpp_max( zmax ) ! max over the global domain
- END IF
- zmean = ztraf / areasf
- IF(lwp) WRITE(numout,9001) jn, TRIM( ctrcnm(jn) ), zmean, zmin, zmax
- END DO
- IF(lwp) WRITE(numout,*)
-9001 FORMAT(' tracer nb :',i2,' name :',a10,' mean :',e18.10,' min :',e18.10, &
- & ' max :',e18.10)
- !
- END SUBROUTINE trc_rst_tra_stat
-
-
-
- SUBROUTINE trc_rst_dia_stat( dgtr, names)
- !!----------------------------------------------------------------------
- !! *** trc_rst_dia_stat ***
- !!
- !! ** purpose : Compute tracers statistics
- !!----------------------------------------------------------------------
- REAL(wp), DIMENSION(jpi,jpj) , INTENT(in) :: dgtr ! 2D diag var
- CHARACTER(len=*) , INTENT(in) :: names ! 2D diag name
- !!---------------------------------------------------------------------
- INTEGER :: jk, jn
- CHARACTER (LEN=18) :: text_zmean
- REAL(wp) :: ztraf, zmin, zmax, zmean, areasf
- REAL(wp), DIMENSION(jpi,jpj) :: zvol
- !!----------------------------------------------------------------------
-
- IF( lwp ) WRITE(numout,*) 'STAT- ', names
-
- ! fse3t_a will be undefined at the start of a run, but this routine
- ! may be called at any stage! Hence we MUST make sure it is
- ! initialised to zero when allocated to enable us to test for
- ! zero content here and avoid potentially dangerous and non-portable
- ! operations (e.g. divide by zero, global sums of junk values etc.)
- zvol(:,:) = e1e2t(:,:) * fse3t_a(:,:,1) * tmask(:,:,1)
- ztraf = glob_sum( dgtr(:,:) * zvol(:,:) )
- !! areasf = glob_sum(e1e2t(:,:) * tmask(:,:,1) )
- areasf = glob_sum(zvol(:,:))
- zmin = MINVAL( dgtr(:,:), mask= ((tmask(:,:,1).NE.0.)) )
- zmax = MAXVAL( dgtr(:,:), mask= ((tmask(:,:,1).NE.0.)) )
- IF( lk_mpp ) THEN
- CALL mpp_min( zmin ) ! min over the global domain
- CALL mpp_max( zmax ) ! max over the global domain
- END IF
-
- text_zmean = "N/A"
- ! Avoid divide by zero. areasf must be positive.
- IF (areasf > 0.0) THEN
- zmean = ztraf / areasf
- WRITE(text_zmean,'(e18.10)') zmean
- ENDIF
-
- IF(lwp) WRITE(numout,9002) TRIM( names ), text_zmean, zmin, zmax
-
- 9002 FORMAT(' tracer name :',A,' mean :',A,' min :',e18.10, &
- & ' max :',e18.10 )
- !
- END SUBROUTINE trc_rst_dia_stat
-
-
#else
!!----------------------------------------------------------------------
Index: /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/trcstat.F90
===================================================================
--- /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/trcstat.F90 (revision 9163)
+++ /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/trcstat.F90 (revision 9163)
@@ -0,0 +1,154 @@
+MODULE trcstat
+ !!======================================================================
+ !! *** MODULE trcrst ***
+ !! TOP : Manage the passive tracer restart
+ !!======================================================================
+ !! History : - ! 1991-03 () original code
+ !! 1.0 ! 2005-03 (O. Aumont, A. El Moussaoui) F90
+ !! - ! 2005-10 (C. Ethe) print control
+ !! 2.0 ! 2005-10 (C. Ethe, G. Madec) revised architecture
+ !!----------------------------------------------------------------------
+#if defined key_top
+ !!----------------------------------------------------------------------
+ !! 'key_top' TOP models
+ !!----------------------------------------------------------------------
+ !!----------------------------------------------------------------------
+ !! trc_rst : Restart for passive tracer
+ !!----------------------------------------------------------------------
+ !!----------------------------------------------------------------------
+ !! 'key_top' TOP models
+ !!----------------------------------------------------------------------
+ !! trc_rst_opn : open restart file
+ !! trc_rst_read : read restart file
+ !! trc_rst_wri : write restart file
+ !!----------------------------------------------------------------------
+ USE trc, ONLY: tra, ctrcnm
+ USE par_kind, ONLY: wp
+ USE in_out_manager, ONLY: lwp, numout
+ USE par_oce, ONLY: jpi, jpj
+ USE par_trc, ONLY: jptra
+ USE dom_oce, ONLY: e3t_0, e3t_a, e3t_n, gdepw_0, gdepw_n, &
+ tmask, e1e2t
+ !* MPP library
+ USE lib_mpp
+ !* Fortran utilities
+ USE lib_fortran
+
+ IMPLICIT NONE
+ PRIVATE
+
+ PUBLIC trc_rst_dia_stat
+ PUBLIC trc_rst_tra_stat
+
+ !! * Substitutions
+# include "top_substitute.h90"
+
+CONTAINS
+
+ SUBROUTINE trc_rst_tra_stat
+ !!----------------------------------------------------------------------
+ !! *** trc_rst_tra_stat ***
+ !!
+ !! ** purpose : Compute tracers statistics - check where crazy values appears
+ !!----------------------------------------------------------------------
+ INTEGER :: jk, jn
+ REAL(wp) :: ztraf, zmin, zmax, zmean, zdrift, areasf
+ REAL(wp), DIMENSION(jpi,jpj) :: zvol
+ !!----------------------------------------------------------------------
+
+ IF( lwp ) THEN
+ WRITE(numout,*)
+ WRITE(numout,*) ' ----SURFACE TRA STAT---- '
+ WRITE(numout,*)
+ ENDIF
+ !
+ zvol(:,:) = e1e2t(:,:) * fse3t_a(:,:,1) * tmask(:,:,1)
+ areasf = glob_sum(zvol(:,:))
+ DO jn = 1, jptra
+ ztraf = glob_sum( tra(:,:,1,jn) * zvol(:,:) )
+ zmin = MINVAL( tra(:,:,1,jn), mask= ((tmask(:,:,1).NE.0.)) )
+ zmax = MAXVAL( tra(:,:,1,jn), mask= ((tmask(:,:,1).NE.0.)) )
+ IF( lk_mpp ) THEN
+ CALL mpp_min( zmin ) ! min over the global domain
+ CALL mpp_max( zmax ) ! max over the global domain
+ END IF
+ zmean = ztraf / areasf
+ IF(lwp) WRITE(numout,9001) jn, TRIM( ctrcnm(jn) ), zmean, zmin, zmax
+ END DO
+ IF(lwp) WRITE(numout,*)
+9001 FORMAT(' tracer nb :',i2,' name :',a10,' mean :',e18.10,' min :',e18.10, &
+ & ' max :',e18.10)
+ !
+ END SUBROUTINE trc_rst_tra_stat
+
+
+
+ SUBROUTINE trc_rst_dia_stat( dgtr, names)
+ !!----------------------------------------------------------------------
+ !! *** trc_rst_dia_stat ***
+ !!
+ !! ** purpose : Compute tracers statistics
+ !!----------------------------------------------------------------------
+ REAL(wp), DIMENSION(jpi,jpj) , INTENT(in) :: dgtr ! 2D diag var
+ CHARACTER(len=*) , INTENT(in) :: names ! 2D diag name
+ !!---------------------------------------------------------------------
+ INTEGER :: jk, jn
+ CHARACTER (LEN=18) :: text_zmean
+ REAL(wp) :: ztraf, zmin, zmax, zmean, areasf
+ REAL(wp), DIMENSION(jpi,jpj) :: zvol
+ !!----------------------------------------------------------------------
+
+ IF( lwp ) WRITE(numout,*) 'STAT- ', names
+
+ ! fse3t_a will be undefined at the start of a run, but this routine
+ ! may be called at any stage! Hence we MUST make sure it is
+ ! initialised to zero when allocated to enable us to test for
+ ! zero content here and avoid potentially dangerous and non-portable
+ ! operations (e.g. divide by zero, global sums of junk values etc.)
+ zvol(:,:) = e1e2t(:,:) * fse3t_a(:,:,1) * tmask(:,:,1)
+ ztraf = glob_sum( dgtr(:,:) * zvol(:,:) )
+ !! areasf = glob_sum(e1e2t(:,:) * tmask(:,:,1) )
+ areasf = glob_sum(zvol(:,:))
+ zmin = MINVAL( dgtr(:,:), mask= ((tmask(:,:,1).NE.0.)) )
+ zmax = MAXVAL( dgtr(:,:), mask= ((tmask(:,:,1).NE.0.)) )
+ IF( lk_mpp ) THEN
+ CALL mpp_min( zmin ) ! min over the global domain
+ CALL mpp_max( zmax ) ! max over the global domain
+ END IF
+
+ text_zmean = "N/A"
+ ! Avoid divide by zero. areasf must be positive.
+ IF (areasf > 0.0) THEN
+ zmean = ztraf / areasf
+ WRITE(text_zmean,'(e18.10)') zmean
+ ENDIF
+
+ IF(lwp) WRITE(numout,9002) TRIM( names ), text_zmean, zmin, zmax
+
+ 9002 FORMAT(' tracer name :',A,' mean :',A,' min :',e18.10, &
+ & ' max :',e18.10 )
+ !
+ END SUBROUTINE trc_rst_dia_stat
+
+
+#else
+ !!----------------------------------------------------------------------
+ !! Dummy module : No passive tracer
+ !!----------------------------------------------------------------------
+CONTAINS
+ SUBROUTINE trc_rst_dia_stat ! Empty routines
+ WRITE(*,*) 'trc_rst_wri: You should not have seen this print! error?'
+ END SUBROUTINE trc_rst_dia_stat
+ SUBROUTINE trc_rst_dia_stat( dgtr, names)
+ REAL(wp), DIMENSION(jpi,jpj) , INTENT(in) :: dgtr ! 2D diag var
+ CHARACTER(len=*) , INTENT(in) :: names ! 2D diag name
+ WRITE(*,*) 'trc_rst_wri: You should not have seen this print! error?'
+ END SUBROUTINE trc_rst_dia_stat
+#endif
+
+ !!----------------------------------------------------------------------
+ !! NEMO/TOP 3.3 , NEMO Consortium (2010)
+ !! $Id$
+ !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
+ !!======================================================================
+END MODULE trcstat
Index: /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/trcstp.F90
===================================================================
--- /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/trcstp.F90 (revision 9162)
+++ /branches/UKMO/dev_r5518_GO6_package/NEMOGCM/NEMO/TOP_SRC/trcstp.F90 (revision 9163)
@@ -19,4 +19,5 @@
USE trcwri
USE trcrst
+ USE trcstat
USE trdtrc_oce
USE trdmxl_trc