Changeset 7162
- Timestamp:
- 2016-11-01T14:23:51+01:00 (7 years ago)
- Location:
- branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM
- Files:
-
- 9 added
- 40 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/ORCA2_LIM_PISCES/EXP00/iodef.xml
r5385 r7162 176 176 <field field_ref="CO3sat" /> 177 177 <field field_ref="PAR" /> 178 <field field_ref="PPPHY " />179 <field field_ref="PPPHY 2" />178 <field field_ref="PPPHYN" /> 179 <field field_ref="PPPHYD" /> 180 180 <field field_ref="PPNEWN" /> 181 181 <field field_ref="PPNEWD" /> -
branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/ORCA2_LIM_PISCES/EXP00/namelist_pisces_cfg
r7050 r7162 1 1 !!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 2 !! PISCES (key_pisces) reference namelist (see below for key_pisces_reduced)2 !! PISCES reference namelist 3 3 !! 1 - air-sea exchange (nampisext) 4 4 !! 2 - biological parameters (nampisbio) … … 10 10 !! 8 - parameters for inputs deposition (nampissed) 11 11 !! 11 - Damping (nampisdmp) 12 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 12 !----------------------------------------------------------------------- 13 &nampismod ! Model used 14 !----------------------------------------------------------------------- 15 / 16 !----------------------------------------------------------------------- 17 &nampisext ! air-sea exchange 18 !----------------------------------------------------------------------- 19 / 20 !----------------------------------------------------------------------- 21 &nampisatm ! Atmospheric prrssure 22 !----------------------------------------------------------------------- 23 / 24 !----------------------------------------------------------------------- 25 &nampisbio ! biological parameters 26 !----------------------------------------------------------------------- 27 / 28 !----------------------------------------------------------------------- 29 &namp4zlim ! parameters for nutrient limitations for PISCES std - ln_p4z 30 !----------------------------------------------------------------------- 31 / 32 !----------------------------------------------------------------------- 33 &namp5zlim ! parameters for nutrient limitations PISCES QUOTA - ln_p5z 34 !----------------------------------------------------------------------- 35 / 36 !----------------------------------------------------------------------- 37 &namp5zquota ! parameters for nutrient limitations PISCES quota - ln_p5z 38 !----------------------------------------------------------------------- 39 / 40 !----------------------------------------------------------------------- 41 &nampisopt ! parameters for optics 42 !----------------------------------------------------------------------- 43 / 44 !----------------------------------------------------------------------- 45 &namp4zprod ! parameters for phytoplankton growth for PISCES std - ln_p4z 46 !----------------------------------------------------------------------- 47 / 13 48 !''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 14 &namp ismod ! Model used49 &namp5zprod ! parameters for phytoplankton growth for PISCES quota - ln_p5z 15 50 !,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 16 51 / 17 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 18 !''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 19 &nampisext ! air-sea exchange 20 !,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 52 !----------------------------------------------------------------------- 53 &namp4zmort ! parameters for phytoplankton sinks for PISCES std - ln_p4z 54 !----------------------------------------------------------------------- 21 55 / 22 ! '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''23 &namp isatm ! Atmospheric prrssure24 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,56 !----------------------------------------------------------------------- 57 &namp5zmort ! parameters for phytoplankton sinks for PISCES quota - ln_p5z 58 !----------------------------------------------------------------------- 25 59 / 26 ! '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''27 &namp isbio ! biological parameters28 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,60 !----------------------------------------------------------------------- 61 &namp4zmes ! parameters for mesozooplankton for PISCES std - ln_p4z 62 !----------------------------------------------------------------------- 29 63 / 30 ! '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''31 &namp islim ! parameters for nutrient limitations32 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,64 !----------------------------------------------------------------------- 65 &namp5zmes ! parameters for mesozooplankton 66 !----------------------------------------------------------------------- 33 67 / 34 !''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 35 &nampisopt ! parameters for optics 36 !,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 37 / 38 !''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 39 &nampisprod ! parameters for phytoplankton growth 40 !,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 68 !----------------------------------------------------------------------- 69 &namp4zzoo ! parameters for microzooplankton for PISCES std - ln_p4z 70 !----------------------------------------------------------------------- 41 71 / 42 ! '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''43 &namp ismort ! parameters for phytoplankton sinks44 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,72 !----------------------------------------------------------------------- 73 &namp5zzoo ! parameters for microzooplankton 74 !----------------------------------------------------------------------- 45 75 / 46 ! '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''47 &nampis mes ! parameters for mesozooplankton48 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,76 !----------------------------------------------------------------------- 77 &nampisfer ! parameters for iron chemistry 78 !----------------------------------------------------------------------- 49 79 / 50 ! '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''51 &nampis zoo ! parameters for microzooplankton52 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,80 !----------------------------------------------------------------------- 81 &nampisrem ! parameters for remineralization 82 !----------------------------------------------------------------------- 53 83 / 54 !''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 55 &nampisfer ! parameters for iron chemistry 56 !,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 57 / 58 !''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 59 &nampisrem ! parameters for remineralization 60 !,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 84 !----------------------------------------------------------------------- 85 &nampispoc ! parameters for organic particles 86 !----------------------------------------------------------------------- 61 87 / 62 ! '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''88 !----------------------------------------------------------------------- 63 89 &nampiscal ! parameters for Calcite chemistry 64 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,90 !----------------------------------------------------------------------- 65 91 / 66 ! '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''92 !----------------------------------------------------------------------- 67 93 &nampissbc ! parameters for inputs deposition 68 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,94 !----------------------------------------------------------------------- 69 95 / 70 ! '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''96 !----------------------------------------------------------------------- 71 97 &nampisice ! Prescribed sea ice tracers 72 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,98 !----------------------------------------------------------------------- 73 99 / 74 ! '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''100 !----------------------------------------------------------------------- 75 101 &nampisdmp ! Damping 76 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,102 !----------------------------------------------------------------------- 77 103 / 78 ! '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''104 !----------------------------------------------------------------------- 79 105 &nampismass ! Mass conservation 80 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,106 !----------------------------------------------------------------------- 81 107 / 82 108 !!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> … … 91 117 !! 8 - optical parameters (namlobopt) 92 118 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 93 ! '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''119 !----------------------------------------------------------------------- 94 120 &namlobphy ! biological parameters for phytoplankton 95 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,121 !----------------------------------------------------------------------- 96 122 / 97 ! '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''123 !----------------------------------------------------------------------- 98 124 &namlobnut ! biological parameters for nutrients 99 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,125 !----------------------------------------------------------------------- 100 126 / 101 ! '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''127 !----------------------------------------------------------------------- 102 128 &namlobzoo ! biological parameters for zooplankton 103 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,129 !----------------------------------------------------------------------- 104 130 / 105 ! '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''131 !----------------------------------------------------------------------- 106 132 &namlobdet ! biological parameters for detritus 107 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,133 !----------------------------------------------------------------------- 108 134 / 109 ! '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''135 !----------------------------------------------------------------------- 110 136 &namlobdom ! biological parameters for DOM 111 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,137 !----------------------------------------------------------------------- 112 138 / 113 ! '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''139 !----------------------------------------------------------------------- 114 140 &namlobsed ! parameters from aphotic layers to sediment 115 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,141 !----------------------------------------------------------------------- 116 142 / 117 ! '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''143 !----------------------------------------------------------------------- 118 144 &namlobrat ! general coefficients 119 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,145 !----------------------------------------------------------------------- 120 146 / 121 ! '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''147 !----------------------------------------------------------------------- 122 148 &namlobopt ! optical parameters 123 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,149 !----------------------------------------------------------------------- 124 150 / -
branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/ORCA2_OFF_PISCES/EXP00/iodef.xml
r5385 r7162 108 108 <field field_ref="CO3sat" /> 109 109 <field field_ref="PAR" /> 110 <field field_ref="PPPHY " />111 <field field_ref="PPPHY 2" />110 <field field_ref="PPPHYN" /> 111 <field field_ref="PPPHYD" /> 112 112 <field field_ref="PPNEWN" /> 113 113 <field field_ref="PPNEWD" /> -
branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/ORCA2_OFF_PISCES/EXP00/namelist_pisces_cfg
r7050 r7162 1 1 !!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 2 !! PISCES (key_pisces) reference namelist (see below for key_pisces_reduced)2 !! PISCES reference namelist 3 3 !! 1 - air-sea exchange (nampisext) 4 4 !! 2 - biological parameters (nampisbio) … … 10 10 !! 8 - parameters for inputs deposition (nampissed) 11 11 !! 11 - Damping (nampisdmp) 12 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 12 !----------------------------------------------------------------------- 13 &nampismod ! Model used 14 !----------------------------------------------------------------------- 15 / 16 !----------------------------------------------------------------------- 17 &nampisext ! air-sea exchange 18 !----------------------------------------------------------------------- 19 / 20 !----------------------------------------------------------------------- 21 &nampisatm ! Atmospheric prrssure 22 !----------------------------------------------------------------------- 23 / 24 !----------------------------------------------------------------------- 25 &nampisbio ! biological parameters 26 !----------------------------------------------------------------------- 27 nrdttrc = 4 ! time step frequency for biology 28 / 29 !----------------------------------------------------------------------- 30 &namp4zlim ! parameters for nutrient limitations for PISCES std - ln_p4z 31 !----------------------------------------------------------------------- 32 / 33 !----------------------------------------------------------------------- 34 &namp5zlim ! parameters for nutrient limitations PISCES QUOTA - ln_p5z 35 !----------------------------------------------------------------------- 36 / 37 !----------------------------------------------------------------------- 38 &namp5zquota ! parameters for nutrient limitations PISCES quota - ln_p5z 39 !----------------------------------------------------------------------- 40 / 41 !----------------------------------------------------------------------- 42 &nampisopt ! parameters for optics 43 !----------------------------------------------------------------------- 44 / 45 !----------------------------------------------------------------------- 46 &namp4zprod ! parameters for phytoplankton growth for PISCES std - ln_p4z 47 !----------------------------------------------------------------------- 48 / 13 49 !''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 14 &namp ismod ! Model used50 &namp5zprod ! parameters for phytoplankton growth for PISCES quota - ln_p5z 15 51 !,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 16 52 / 17 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 18 !''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 19 &nampisext ! air-sea exchange 20 !,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 53 !----------------------------------------------------------------------- 54 &namp4zmort ! parameters for phytoplankton sinks for PISCES std - ln_p4z 55 !----------------------------------------------------------------------- 21 56 / 22 ! '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''23 &namp isatm ! Atmospheric prrssure24 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,57 !----------------------------------------------------------------------- 58 &namp5zmort ! parameters for phytoplankton sinks for PISCES quota - ln_p5z 59 !----------------------------------------------------------------------- 25 60 / 26 !''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 27 &nampisbio ! biological parameters 28 !,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 29 nrdttrc = 4 ! time step frequency for biology 61 !----------------------------------------------------------------------- 62 &namp4zmes ! parameters for mesozooplankton for PISCES std - ln_p4z 63 !----------------------------------------------------------------------- 30 64 / 31 ! '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''32 &namp islim ! parameters for nutrient limitations33 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,65 !----------------------------------------------------------------------- 66 &namp5zmes ! parameters for mesozooplankton 67 !----------------------------------------------------------------------- 34 68 / 35 !''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 36 &nampisopt ! parameters for optics 37 !,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 38 / 39 !''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 40 &nampisprod ! parameters for phytoplankton growth 41 !,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 69 !----------------------------------------------------------------------- 70 &namp4zzoo ! parameters for microzooplankton for PISCES std - ln_p4z 71 !----------------------------------------------------------------------- 42 72 / 43 ! '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''44 &namp ismort ! parameters for phytoplankton sinks45 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,73 !----------------------------------------------------------------------- 74 &namp5zzoo ! parameters for microzooplankton 75 !----------------------------------------------------------------------- 46 76 / 47 ! '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''48 &nampis mes ! parameters for mesozooplankton49 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,77 !----------------------------------------------------------------------- 78 &nampisfer ! parameters for iron chemistry 79 !----------------------------------------------------------------------- 50 80 / 51 ! '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''52 &nampis zoo ! parameters for microzooplankton53 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,81 !----------------------------------------------------------------------- 82 &nampisrem ! parameters for remineralization 83 !----------------------------------------------------------------------- 54 84 / 55 !''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 56 &nampisfer ! parameters for iron chemistry 57 !,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 58 / 59 !''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 60 &nampisrem ! parameters for remineralization 61 !,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 85 !----------------------------------------------------------------------- 86 &nampispoc ! parameters for organic particles 87 !----------------------------------------------------------------------- 62 88 / 63 ! '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''89 !----------------------------------------------------------------------- 64 90 &nampiscal ! parameters for Calcite chemistry 65 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,91 !----------------------------------------------------------------------- 66 92 / 67 ! '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''93 !----------------------------------------------------------------------- 68 94 &nampissbc ! parameters for inputs deposition 69 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,95 !----------------------------------------------------------------------- 70 96 / 71 ! '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''97 !----------------------------------------------------------------------- 72 98 &nampisice ! Prescribed sea ice tracers 73 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,99 !----------------------------------------------------------------------- 74 100 / 75 ! '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''101 !----------------------------------------------------------------------- 76 102 &nampisdmp ! Damping 77 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,103 !----------------------------------------------------------------------- 78 104 nn_pisdmp = 1460 ! Frequency of Relaxation 79 105 / 80 ! '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''106 !----------------------------------------------------------------------- 81 107 &nampismass ! Mass conservation 82 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,108 !----------------------------------------------------------------------- 83 109 / 84 110 !!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> … … 93 119 !! 8 - optical parameters (namlobopt) 94 120 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 95 ! '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''121 !----------------------------------------------------------------------- 96 122 &namlobphy ! biological parameters for phytoplankton 97 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,123 !----------------------------------------------------------------------- 98 124 / 99 ! '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''125 !----------------------------------------------------------------------- 100 126 &namlobnut ! biological parameters for nutrients 101 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,127 !----------------------------------------------------------------------- 102 128 / 103 ! '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''129 !----------------------------------------------------------------------- 104 130 &namlobzoo ! biological parameters for zooplankton 105 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,131 !----------------------------------------------------------------------- 106 132 / 107 ! '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''133 !----------------------------------------------------------------------- 108 134 &namlobdet ! biological parameters for detritus 109 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,135 !----------------------------------------------------------------------- 110 136 / 111 ! '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''137 !----------------------------------------------------------------------- 112 138 &namlobdom ! biological parameters for DOM 113 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,139 !----------------------------------------------------------------------- 114 140 / 115 ! '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''141 !----------------------------------------------------------------------- 116 142 &namlobsed ! parameters from aphotic layers to sediment 117 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,143 !----------------------------------------------------------------------- 118 144 / 119 ! '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''145 !----------------------------------------------------------------------- 120 146 &namlobrat ! general coefficients 121 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,147 !----------------------------------------------------------------------- 122 148 / 123 ! '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''149 !----------------------------------------------------------------------- 124 150 &namlobopt ! optical parameters 125 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,151 !----------------------------------------------------------------------- 126 152 / -
branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/SHARED/field_def.xml
r7041 r7162 785 785 786 786 <field_group id="ptrc_T" grid_ref="grid_T_3D"> 787 <!-- PISCES standard : variables available with ln_p4z --> 787 788 <field id="DIC" long_name="Dissolved inorganic Concentration" unit="mmol/m3" /> 788 789 <field id="DIC_e3t" long_name="DIC * e3t" unit="mmol/m2" > DIC * e3t </field > … … 834 835 <field id="NH4_e3t" long_name="NH4 * e3t" unit="mmol/m2" > NH4 * e3t </field > 835 836 836 <!-- PISCES with Kriest parametisation : variables available with key_kriest --> 837 <field id="Num" long_name="Number of organic particles" unit="1" /> 838 <field id="Num_e3t" long_name="Num * e3t" unit="m" > Num * e3t </field > 839 840 <!-- PISCES light : variables available with key_pisces_reduced --> 837 <!-- PISCES quota : variables available with ln_p5z --> 838 839 <field id="DON" long_name="Dissolved organic N Concentration" unit="mmol/m3" /> 840 <field id="DON_e3t" long_name="DON * e3t" unit="mmol/m2" > DON * e3t </field > 841 <field id="DOP" long_name="Dissolved organic P Concentration" unit="mmol/m3" /> 842 <field id="DOP_e3t" long_name="DOP * e3t" unit="mmol/m2" > DOP * e3t </field > 843 <field id="PON" long_name="Small PON Concentration" unit="mmol/m3" /> 844 <field id="PON_e3t" long_name="PON * e3t" unit="mmol/m2" > PON * e3t </field > 845 <field id="POP" long_name="Small POP Concentration" unit="mmol/m3" /> 846 <field id="POP_e3t" long_name="POP * e3t" unit="mmol/m2" > POP * e3t </field > 847 <field id="GON" long_name="Big PON Concentration" unit="mmol/m3" /> 848 <field id="GON_e3t" long_name="GON * e3t" unit="mmol/m2" > GON * e3t </field > 849 <field id="GOP" long_name="Big POP Concentration" unit="mmol/m3" /> 850 <field id="GOP_e3t" long_name="GOP * e3t" unit="mmol/m2" > GOP * e3t </field > 851 <field id="PHYN" long_name="Nanophytoplankton N biomass" unit="mmol/m3" /> 852 <field id="PHYN_e3t" long_name="PHYN * e3t" unit="mmol/m2" > PHYN * e3t </field > 853 <field id="PHYP" long_name="Nanophytoplankton P biomass" unit="mmol/m3" /> 854 <field id="PHYP_e3t" long_name="PHYP * e3t" unit="mmol/m2" > PHYP * e3t </field > 855 <field id="DIAN" long_name="Diatoms N biomass" unit="mmol/m3" /> 856 <field id="DIAN_e3t" long_name="DIAN * e3t" unit="mmol/m2" > DIAN * e3t </field > 857 <field id="DIAP" long_name="Diatoms P biomass" unit="mmol/m3" /> 858 <field id="DIAP_e3t" long_name="DIAP * e3t" unit="mmol/m2" > DIAP * e3t </field > 859 <field id="PIC" long_name="Picophytoplankton C biomass" unit="mmol/m3" /> 860 <field id="PIC_e3t" long_name="PIC * e3t" unit="mmol/m2" > PIC * e3t </field > 861 <field id="PICN" long_name="Picophytoplankton N biomass" unit="mmol/m3" /> 862 <field id="PICN_e3t" long_name="PICN * e3t" unit="mmol/m2" > PICN * e3t </field > 863 <field id="PICP" long_name="Picophytoplankton P biomass" unit="mmol/m3" /> 864 <field id="PICP_e3t" long_name="PICP * e3t" unit="mmol/m2" > PICP * e3t </field > 865 <field id="PFe" long_name="Picophytoplankton Fe biomass" unit="mmol/m3" /> 866 <field id="PFe_e3t" long_name="PFe * e3t" unit="mmol/m2" > PFe * e3t </field > 867 <field id="PCHL" long_name="Picophytoplankton Chl biomass" unit="mg/m3" /> 868 <field id="PCHL_e3t" long_name="PCHL * e3t" unit="mmol/m2" > PCHL * e3t </field > 869 870 <!-- PISCES light : variables available with ln_p2z --> 841 871 <field id="DET" long_name="Detritus" unit="mmol-N/m3" /> 842 872 <field id="DET_e3t" long_name="DET * e3t" unit="mmol-N/m2" > DET * e3t </field > … … 870 900 <field id="PAR" long_name="Photosynthetically Available Radiation" unit="W/m2" grid_ref="grid_T_3D" /> 871 901 <field id="PARDM" long_name="Daily mean PAR" unit="W/m2" grid_ref="grid_T_3D" /> 872 <field id="PPPHY" long_name="Primary production of nanophyto" unit="mol/m3/s" grid_ref="grid_T_3D" /> 873 <field id="PPPHY2" long_name="Primary production of diatoms" unit="mol/m3/s" grid_ref="grid_T_3D" /> 874 <field id="PPNEWN" long_name="New Primary production of nanophyto" unit="mol/m3/s" grid_ref="grid_T_3D" /> 875 <field id="PPNEWD" long_name="New Primary production of diatoms" unit="mol/m3/s" grid_ref="grid_T_3D" /> 876 <field id="PBSi" long_name="Primary production of Si diatoms" unit="mol/m3/s" grid_ref="grid_T_3D" /> 877 <field id="PFeN" long_name="Primary production of nano iron" unit="mol/m3/s" grid_ref="grid_T_3D" /> 902 <field id="PPPHYN" long_name="Primary production of nanophyto" unit="molC/m3/s" grid_ref="grid_T_3D" /> 903 <field id="PPPHYP" long_name="Primary production of picophyto" unit="molC/m3/s" grid_ref="grid_T_3D" /> 904 <field id="PPPHYD" long_name="Primary production of diatoms" unit="molC/m3/s" grid_ref="grid_T_3D" /> 905 <field id="PPNEWN" long_name="New Primary production of nanophyto" unit="molC/m3/s" grid_ref="grid_T_3D" /> 906 <field id="PPNEWP" long_name="New Primary production of picophyto" unit="molC/m3/s" grid_ref="grid_T_3D" /> 907 <field id="PPNEWD" long_name="New Primary production of diatoms" unit="molC/m3/s" grid_ref="grid_T_3D" /> 908 <field id="PBSi" long_name="Primary production of Si diatoms" unit="molC/m3/s" grid_ref="grid_T_3D" /> 909 <field id="PFeN" long_name="Primary production of nano iron" unit="molC/m3/s" grid_ref="grid_T_3D" /> 910 <field id="PFeP" long_name="Primary production of pico iron" unit="molC/m3/s" grid_ref="grid_T_3D" /> 878 911 <field id="PFeD" long_name="Primary production of diatoms iron" unit="mol/m3/s" grid_ref="grid_T_3D" /> 879 912 <field id="xfracal" long_name="Calcifying fraction" unit="1" grid_ref="grid_T_3D" /> … … 884 917 <field id="REMIN" long_name="Oxic remineralization of OM" unit="mol/m3/s" grid_ref="grid_T_3D" /> 885 918 <field id="DENIT" long_name="Anoxic remineralization of OM" unit="mol/m3/s" grid_ref="grid_T_3D" /> 919 <field id="REMINP" long_name="Oxic remineralization rate of POC" unit="d-1" grid_ref="grid_T_3D" /> 920 <field id="REMING" long_name="Oxic remineralization rate of GOC" unit="d-1" grid_ref="grid_T_3D" /> 886 921 <field id="Nfix" long_name="Nitrogen fixation" unit="mol/m3/s" grid_ref="grid_T_3D" /> 887 922 <field id="Mumax" long_name="Maximum growth rate" unit="s-1" grid_ref="grid_T_3D" /> 888 923 <field id="MuN" long_name="Realized growth rate for nanophyto" unit="s-1" grid_ref="grid_T_3D" /> 924 <field id="MuP" long_name="Realized growth rate for picophyto" unit="s-1" grid_ref="grid_T_3D" /> 889 925 <field id="MuD" long_name="Realized growth rate for diatomes" unit="s-1" grid_ref="grid_T_3D" /> 926 <field id="MunetN" long_name="Net growth rate for nanophyto" unit="s-1" grid_ref="grid_T_3D" /> 927 <field id="MunetP" long_name="Net growth rate for picophyto" unit="s-1" grid_ref="grid_T_3D" /> 928 <field id="MunetD" long_name="Net growth rate for diatomes" unit="s-1" grid_ref="grid_T_3D" /> 890 929 <field id="LNnut" long_name="Nutrient limitation term in Nanophyto" unit="" grid_ref="grid_T_3D" /> 930 <field id="LPnut" long_name="Nutrient limitation term in Picophyto" unit="-" grid_ref="grid_T_3D" /> 891 931 <field id="LDnut" long_name="Nutrient limitation term in Diatoms" unit="" grid_ref="grid_T_3D" /> 892 932 <field id="LNFe" long_name="Iron limitation term in Nanophyto" unit="" grid_ref="grid_T_3D" /> 933 <field id="LPFe" long_name="Iron limitation term in Picophyto" unit="-" grid_ref="grid_T_3D" /> 893 934 <field id="LDFe" long_name="Iron limitation term in Diatoms" unit="" grid_ref="grid_T_3D" /> 894 935 <field id="LNlight" long_name="Light limitation term in Nanophyto" unit="" grid_ref="grid_T_3D" /> 936 <field id="LPlight" long_name="Light limitation term in Picophyto" unit="-" grid_ref="grid_T_3D" /> 895 937 <field id="LDlight" long_name="Light limitation term in Diatoms" unit="" grid_ref="grid_T_3D" /> 938 <field id="SIZEN" long_name="Mean relative size of nanophyto." unit="-" grid_ref="grid_T_3D" /> 939 <field id="SIZEP" long_name="Mean relative size of picophyto." unit="-" grid_ref="grid_T_3D" /> 940 <field id="SIZED" long_name="Mean relative size of diatoms" unit="-" grid_ref="grid_T_3D" /> 896 941 <field id="Fe2" long_name="Iron II concentration" unit="nmol/m3" grid_ref="grid_T_3D" /> 897 942 <field id="Fe3" long_name="Iron III concentration" unit="nmol/m3" grid_ref="grid_T_3D" /> … … 906 951 <field id="Sdenit" long_name="Nitrate reduction in the sediments" unit="mol/m2/s" /> 907 952 <field id="Ironice" long_name="Iron input/uptake due to sea ice" unit="mol/m2/s" /> 953 <field id="SedCal" long_name="Calcite burial in the sediments" unit="molC/m2/s" /> 954 <field id="SedSi" long_name="Silicon burial in the sediments" unit="molSi/m2/s" /> 955 <field id="SedC" long_name="Organic C burial in the sediments" unit="molC/m2/s" /> 908 956 <field id="HYDR" long_name="Iron input from hydrothemal vents" unit="mol/m2/s" grid_ref="grid_T_3D" /> 909 957 <field id="EPC100" long_name="Export of carbon particles at 100 m" unit="mol/m2/s" /> … … 924 972 <field id="Ironsed" long_name="Iron deposition from sediment" unit="mol/m2/s" grid_ref="grid_T_3D" /> 925 973 926 927 <!-- PISCES with Kriest parametisation : variables available with key_kriest -->928 <field id="EPN100" long_name="Particulate number flux at 100 m" unit="mol/m2/s" />929 <field id="EXPN" long_name="Particulate number flux" unit="mol/m2/s" grid_ref="grid_T_3D" />930 <field id="XNUM" long_name="Number of particles in aggregats" unit="1" grid_ref="grid_T_3D" />931 <field id="WSC" long_name="sinking speed of mass flux" unit="m2/s" grid_ref="grid_T_3D" />932 <field id="WSN" long_name="sinking speed of number flux" unit="m2/s" grid_ref="grid_T_3D" />933 934 974 <!-- dbio_T on T grid : variables available with key_diaar5 --> 935 975 <field id="TPP" long_name="Total Primary production of phyto" unit="mol/m3/s" grid_ref="grid_T_3D" /> … … 940 980 <field id="ZO2MIN" long_name="Depth of oxygen minimum concentration" unit="m" /> 941 981 <field id="INTNFIX" long_name="Nitrogen fixation rate : vert. integrated" unit="mol/m2/s" /> 942 <field id="INTPPPHY " long_name="Vertically integrated primary production by nanophy" unit="mol/m2/s" />943 <field id="INTPPPHY 2" long_name="Vertically integrated primary production by diatom" unit="mol/m2/s" />982 <field id="INTPPPHYN" long_name="Vertically integrated primary production by nanophy" unit="mol/m2/s" /> 983 <field id="INTPPPHYD" long_name="Vertically integrated primary production by diatom" unit="mol/m2/s" /> 944 984 <field id="INTPP" long_name="Vertically integrated primary production by phyto" unit="mol/m2/s" /> 945 985 <field id="INTPNEW" long_name="Vertically integrated new primary production" unit="mol/m2/s" /> -
branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/SHARED/namelist_pisces_ref
r7041 r7162 1 1 !!>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 2 !! PISCES (key_pisces) reference namelist (see below for key_pisces_reduced)2 !! PISCES reference namelist 3 3 !! 1 - air-sea exchange (nampisext) 4 4 !! 2 - biological parameters (nampisbio) … … 10 10 !! 8 - parameters for inputs deposition (nampissed) 11 11 !! 11 - Damping (nampisdmp) 12 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 13 !''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 12 !----------------------------------------------------------------------- 14 13 &nampismod ! Model used 15 !,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 16 ln_p2z = .false. ! LOBSTER model used 17 ln_p4z = .true. ! PISCES model used 18 / 19 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 20 !''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 14 !----------------------------------------------------------------------- 15 ln_p2z = .false. ! LOBSTER model used 16 ln_p4z = .true. ! PISCES model used 17 ln_p5z = .false. ! PISCES QUOTA model used 18 ln_ligand = .false. ! Enable organic ligands 19 / 20 !----------------------------------------------------------------------- 21 21 &nampisext ! air-sea exchange 22 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,22 !----------------------------------------------------------------------- 23 23 ln_co2int = .false. ! read atm pco2 from a file (T) or constant (F) 24 24 atcco2 = 280. ! Constant value atmospheric pCO2 - ln_co2int = F … … 28 28 ! ! then the first atmospheric CO2 record read is at years(1) 29 29 / 30 ! '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''30 !----------------------------------------------------------------------- 31 31 &nampisatm ! Atmospheric prrssure 32 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,32 !----------------------------------------------------------------------- 33 33 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 34 34 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! 35 35 sn_patm = 'presatm' , -1 , 'patm' , .true. , .true. , 'yearly' , '' , '' , '' 36 sn_atmco2 = 'presatmco2' , -1 , 'xco2' , .true. , .true. , 'yearly' , '' , '' , '' 36 37 cn_dir = './' ! root directory for the location of the dynamical files 37 38 ! 38 ln_presatm = .false. ! constant atmopsheric pressure (F) or from a file (T) 39 / 40 !''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 39 ln_presatm = .false. ! constant atmopsheric pressure (F) or from a file (T) 40 ln_presatmco2 = .false. ! Read spatialized atm co2 files [ppm] if TRUE 41 / 42 !----------------------------------------------------------------------- 41 43 &nampisbio ! biological parameters 42 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,44 !----------------------------------------------------------------------- 43 45 nrdttrc = 1 ! time step frequency for biology 44 46 wsbio = 2. ! POC sinking speed 45 47 xkmort = 2.E-7 ! half saturation constant for mortality 46 48 ferat3 = 10.E-6 ! Fe/C in zooplankton 47 wsbio2 = 30. ! Big particles sinking speed 49 wsbio2 = 50. ! Big particles sinking speed 50 wsbio2max = 50. ! Big particles maximum sinking speed 51 wsbio2scale= 5000. ! Big particles length scale of sinking 48 52 niter1max = 1 ! Maximum number of iterations for POC 49 53 niter2max = 1 ! Maximum number of iterations for GOC 50 / 51 !''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 52 &nampislim ! parameters for nutrient limitations 53 !,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 54 ! ! ln_ligand enabled 55 wfep = 0. ! FeP sinking speed 56 ldocp = 0. ! Phyto ligand production per unit doc 57 ldocz = 0. ! Zoo ligand production per unit doc 58 lthet = 0. ! Proportional loss of ligands due to Fe uptake 59 ! ! ln_p5z enabled 60 no3rat3 = 0.182 ! N/C ratio in zooplankton 61 po4rat3 = 0.0094 ! P/C ratio in zooplankton 62 / 63 !----------------------------------------------------------------------- 64 &namp4zlim ! parameters for nutrient limitations for PISCES std - ln_p4z 65 !----------------------------------------------------------------------- 54 66 concnno3 = 1.e-6 ! Nitrate half saturation of nanophytoplankton 55 67 concdno3 = 3.E-6 ! Nitrate half saturation for diatoms … … 71 83 qdfelim = 7.E-6 ! Optimal quota of diatoms 72 84 caco3r = 0.3 ! mean rain ratio 73 oxymin = 1.E-6 ! Half-saturation constant for anoxia 74 / 75 !''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 85 oxymin = 1.E-6 ! Half-saturation constant for anoxia 86 / 87 !----------------------------------------------------------------------- 88 &namp5zlim ! parameters for nutrient limitations PISCES QUOTA - ln_p5z 89 !----------------------------------------------------------------------- 90 concnno3 = 3e-6 ! Nitrate half saturation of nanophytoplankton 91 concpno3 = 1e-6 92 concdno3 = 4E-6 ! Phosphate half saturation for diatoms 93 concnnh4 = 1.5E-6 ! NH4 half saturation for phyto 94 concpnh4 = 4E-7 95 concdnh4 = 2E-6 ! NH4 half saturation for diatoms 96 concnpo4 = 3E-6 ! PO4 half saturation for phyto 97 concppo4 = 1.5E-6 98 concdpo4 = 4E-6 ! PO4 half saturation for diatoms 99 concnfer = 3E-9 ! Iron half saturation for phyto 100 concpfer = 1.5E-9 101 concdfer = 4E-9 ! Iron half saturation for diatoms 102 concbfe = 1.E-11 ! Half-saturation for Fe limitation of Bacteria 103 concbnh4 = 1.E-7 ! NH4 half saturation for phyto 104 concbno3 = 5.E-7 ! Phosphate half saturation for diatoms 105 concbpo4 = 1E-7 ! Phosphate half saturation for bacteria 106 xsizedia = 1.E-6 ! Minimum size criteria for diatoms 107 xsizephy = 1.E-6 ! Minimum size criteria for phyto 108 xsizepic = 1.E-6 109 xsizern = 1.0 ! Size ratio for nanophytoplankton 110 xsizerp = 1.0 111 xsizerd = 4.0 ! Size ratio for diatoms 112 xksi1 = 2.E-6 ! half saturation constant for Si uptake 113 xksi2 = 20E-6 ! half saturation constant for Si/C 114 xkdoc = 417.E-6 ! half-saturation constant of DOC remineralization 115 caco3r = 0.35 ! mean rain ratio 116 oxymin = 1.E-6 ! Half-saturation constant for anoxia 117 / 118 !----------------------------------------------------------------------- 119 &namp5zquota ! parameters for nutrient limitations PISCES quota - ln_p5z 120 !----------------------------------------------------------------------- 121 qfnopt = 7.E-6 ! Optimal Fe quota of nanophyto 122 qfpopt = 7.E-6 ! Optimal Fe quota of picophyto 123 qfdopt = 7.E-6 ! Optimal quota of diatoms 124 qnnmin = 0.29 ! Minimal N quota for nano 125 qnnmax = 1.39 ! Maximal N quota for nano 126 qpnmin = 0.28 ! Minimal P quota for nano 127 qpnmax = 1.06 ! Maximal P quota for nano 128 qnpmin = 0.42 ! Minimal N quota for pico 129 qnpmax = 1.39 ! Maximal N quota for pico 130 qppmin = 0.25 ! Minimal P quota for pico 131 qppmax = 0.7 ! Maximal P quota for pico 132 qndmin = 0.25 ! Minimal N quota for diatoms 133 qndmax = 1.39 ! Maximal N quota for diatoms 134 qpdmin = 0.29 ! Minimal P quota for diatoms 135 qpdmax = 1.32 ! Maximal P quota for diatoms 136 qfnmax = 40E-6 ! Maximal Fe quota for nano 137 qfpmax = 40E-6 ! Maximal Fe quota for pico 138 qfdmax = 40E-6 ! Maximal Fe quota for diatoms 139 / 140 !----------------------------------------------------------------------- 76 141 &nampisopt ! parameters for optics 77 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,142 !----------------------------------------------------------------------- 78 143 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 79 144 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! … … 83 148 parlux = 0.43 ! Fraction of shortwave as PAR 84 149 / 85 ! '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''86 &namp isprod ! parameters for phytoplankton growth87 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,88 pislope 89 pislope 2= 2. ! P-I slope for diatoms150 !----------------------------------------------------------------------- 151 &namp4zprod ! parameters for phytoplankton growth for PISCES std - ln_p4z 152 !----------------------------------------------------------------------- 153 pislopen = 2. ! P-I slope 154 pisloped = 2. ! P-I slope for diatoms 90 155 xadap = 0. ! Adaptation factor to low light 91 excret 92 excret 2= 0.05 ! excretion ratio of diatoms156 excretn = 0.05 ! excretion ratio of phytoplankton 157 excretd = 0.05 ! excretion ratio of diatoms 93 158 ln_newprod = .true. ! Enable new parame. of production (T/F) 94 159 bresp = 0.033 ! Basal respiration rate … … 101 166 / 102 167 !''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 103 &namp ismort ! parameters for phytoplankton sinks168 &namp5zprod ! parameters for phytoplankton growth for PISCES quota - ln_p5z 104 169 !,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 105 wchl = 0.01 ! quadratic mortality of phytoplankton 170 pislopen = 3. ! P-I slope 171 pislopep = 3. ! P-I slope for picophytoplankton 172 pisloped = 3. ! P-I slope for diatoms 173 excretn = 0.05 ! excretion ratio of phytoplankton 174 excretp = 0.05 ! excretion ratio of picophytoplankton 175 excretd = 0.05 ! excretion ratio of diatoms 176 xadap = 0. ! Adaptation factor to low light 177 bresp = 0.02 ! Basal respiration rate 178 thetannm = 0.25 ! Maximum Chl/N in nanophytoplankton 179 thetanpm = 0.25 ! Maximum Chl/N in picophytoplankton 180 thetandm = 0.3 ! Maximum Chl/N in diatoms 181 chlcmin = 0.004 ! Minimum Chl/c in phytoplankton 182 grosip = 0.131 ! mean Si/C ratio 183 xlimmxln = 2. ! Critical time scale for mixing (nano) 184 xlimmxlp = 2. ! Critical time scale for mixing (pico) 185 xlimmxld = 4. ! Critical time scale for mixing (diatoms) 186 / 187 !----------------------------------------------------------------------- 188 &namp4zmort ! parameters for phytoplankton sinks for PISCES std - ln_p4z 189 !----------------------------------------------------------------------- 190 wchl = 0.01 ! quadratic mortality of phytoplankton 106 191 wchld = 0.01 ! maximum quadratic mortality of diatoms 107 192 wchldm = 0.03 ! maximum quadratic mortality of diatoms … … 109 194 mprat2 = 0.01 ! Diatoms mortality rate 110 195 / 111 !''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 112 &nampismes ! parameters for mesozooplankton 113 !,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 196 !----------------------------------------------------------------------- 197 &namp5zmort ! parameters for phytoplankton sinks for PISCES quota - ln_p5z 198 !----------------------------------------------------------------------- 199 wchln = 0.01 ! quadratic mortality of nanophytoplankton 200 wchlp = 0.01 ! quadratic mortality of picophytoplankton 201 wchld = 0.01 ! maximum quadratic mortality of diatoms 202 wchldm = 0.02 ! maximum quadratic mortality of diatoms 203 mpratn = 0.01 ! nanophytoplankton mortality rate 204 mpratp = 0.01 ! picophytoplankton mortality rate 205 mprat2 = 0.01 ! Diatoms mortality rate 206 / 207 !----------------------------------------------------------------------- 208 &namp4zmes ! parameters for mesozooplankton for PISCES std - ln_p4z 209 !----------------------------------------------------------------------- 114 210 part2 = 0.75 ! part of calcite not dissolved in mesozoo guts 115 211 grazrat2 = 0.75 ! maximal mesozoo grazing rate … … 131 227 grazflux = 2.e3 ! flux-feeding rate 132 228 / 133 !''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 134 &nampiszoo ! parameters for microzooplankton 135 !,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 136 part = 0.5 ! part of calcite not dissolved in microzoo gutsa 229 !----------------------------------------------------------------------- 230 &namp5zmes ! parameters for mesozooplankton 231 !----------------------------------------------------------------------- 232 part2 = 0.75 ! part of calcite not dissolved in mesozoo guts 233 grazrat2 = 0.85 ! maximal mesozoo grazing rate 234 bmetexc2 = .true. ! Metabolic use of excess carbon 235 resrat2 = 0.005 ! exsudation rate of mesozooplankton 236 mzrat2 = 0.02 ! mesozooplankton mortality rate 237 xpref2d = 1. ! zoo preference for phyto 238 xpref2p = 1. ! zoo preference for POC 239 xpref2z = 1. ! zoo preference for zoo 240 xpref2m = 0.2 ! meso preference for zoo 241 xpref2c = 0.3 ! zoo preference for poc 242 xthresh2zoo = 1E-8 ! zoo feeding threshold for mesozooplankton 243 xthresh2dia = 1E-8 ! diatoms feeding threshold for mesozooplankton 244 xthresh2phy = 1E-8 ! nanophyto feeding threshold for mesozooplankton 245 xthresh2mes = 1E-8 ! meso feeding threshold for mesozooplankton 246 xthresh2poc = 1E-8 ! poc feeding threshold for mesozooplankton 247 xthresh2 = 3E-7 ! Food threshold for grazing 248 xkgraz2 = 20.E-6 ! half sturation constant for meso grazing 249 epsher2 = 0.5 ! Efficicency of Mesozoo growth 250 ssigma2 = 0.5 ! Fraction excreted as semi-labile DOM 251 srespir2 = 0.2 ! Active respiration 252 unass2c = 0.3 ! non assimilated fraction of P by mesozoo 253 unass2n = 0.3 ! non assimilated fraction of N by mesozoo 254 unass2p = 0.3 ! non assimilated fraction of P by mesozoo 255 grazflux = 3.e3 ! flux-feeding rate 256 / 257 !----------------------------------------------------------------------- 258 &namp4zzoo ! parameters for microzooplankton for PISCES std - ln_p4z 259 !----------------------------------------------------------------------- 260 part = 0.5 ! part of calcite not dissolved in microzoo guts 137 261 grazrat = 3.0 ! maximal zoo grazing rate 138 262 resrat = 0.03 ! exsudation rate of zooplankton … … 150 274 unass = 0.3 ! non assimilated fraction of phyto by zoo 151 275 / 152 !''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 276 !----------------------------------------------------------------------- 277 &namp5zzoo ! parameters for microzooplankton 278 !----------------------------------------------------------------------- 279 part = 0.5 ! part of calcite not dissolved in microzoo gutsa 280 grazrat = 2.75 ! maximal zoo grazing rate 281 bmetexc = .true. ! Metabolic use of excess carbon 282 resrat = 0.03 ! exsudation rate of zooplankton 283 mzrat = 0.005 ! zooplankton mortality rate 284 xprefc = 0.1 ! Microzoo preference for POM 285 xprefn = 1. ! Microzoo preference for Nanophyto 286 xprefp = 1.6 ! Microzoo preference for picophyto 287 xprefd = 1.0 ! Microzoo preference for Diatoms 288 xprefz = 0.3 ! Microzoo preference for microzooplankton 289 xthreshdia = 1.E-8 ! Diatoms feeding threshold for microzooplankton 290 xthreshphy = 1.E-8 ! Nanophyto feeding threshold for microzooplankton 291 xthreshpic = 1.E-8 292 xthreshzoo = 1.E-8 ! Nanophyto feeding threshold for microzooplankton 293 xthreshpoc = 1.E-8 ! POC feeding threshold for microzooplankton 294 xthresh = 3.E-7 ! Food threshold for feeding 295 xkgraz = 20.E-6 ! half sturation constant for grazing 296 epsher = 0.5 ! Efficiency of microzoo growth 297 ssigma = 0.5 ! Fraction excreted as semi-labile DOM 298 srespir = 0.2 ! Active respiration 299 unassc = 0.3 ! non assimilated fraction of C by zoo 300 unassn = 0.3 ! non assimilated fraction of C by zoo 301 unassp = 0.3 ! non assimilated fraction of C by zoo 302 / 303 !----------------------------------------------------------------------- 153 304 &nampisfer ! parameters for iron chemistry 154 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,305 !----------------------------------------------------------------------- 155 306 ln_fechem = .false. ! complex iron chemistry ( T/F ) 156 307 ln_ligvar = .false. ! variable ligand concentration 157 xlam1 = 0.005 ! scavenging rate of Iron 158 xlamdust = 150.0 ! Scavenging rate of dust 159 ligand = 0.6E-9 ! Ligands concentration 160 / 161 !''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 308 ln_fecolloid = .false. ! variable colloidal fraction 309 xlam1 = 0.005 ! scavenging rate of Iron 310 xlamdust = 150.0 ! Scavenging rate of dust 311 ligand = 0.6E-9 ! Ligands concentration 312 kfep = 0. ! Nanoparticle formation rate constant 313 / 314 !----------------------------------------------------------------------- 162 315 &nampisrem ! parameters for remineralization 163 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,316 !----------------------------------------------------------------------- 164 317 xremik = 0.3 ! remineralization rate of DOC 165 xremip = 0.025 ! remineralisation rate of POC166 318 nitrif = 0.05 ! NH4 nitrification rate 167 319 xsirem = 0.003 ! remineralization rate of Si 168 320 xsiremlab = 0.03 ! fast remineralization rate of Si 169 321 xsilab = 0.5 ! Fraction of labile biogenic silica 170 / 171 !''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 322 feratb = 10.E-6 ! Fe/C quota in bacteria 323 xkferb = 2.5E-10 ! Half-saturation constant for bacteria Fe/C 324 ! ! ln_p5z 325 xremikc = 0.25 ! remineralization rate of DOC 326 xremikn = 0.35 ! remineralization rate of DON 327 xremikp = 0.4 ! remineralization rate of DOP 328 ! feratb = 20E-6 ! Bacterial Fe/C ratio 329 ! xkferb = 3E-10 ! Half-saturation constant for bact. Fe/C 330 / 331 !----------------------------------------------------------------------- 332 &nampispoc ! parameters for organic particles 333 !----------------------------------------------------------------------- 334 xremip = 0.035 ! remineralisation rate of PON 335 jcpoc = 15 ! Number of lability classes 336 rshape = 1.0 ! Shape of the gamma function 337 ! ! ln_p5z 338 xremipc = 0.02 ! remineralisation rate of POC 339 xremipn = 0.025 ! remineralisation rate of PON 340 xremipp = 0.03 ! remineralisation rate of POP 341 / 342 !----------------------------------------------------------------------- 172 343 &nampiscal ! parameters for Calcite chemistry 173 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,344 !----------------------------------------------------------------------- 174 345 kdca = 6. ! calcite dissolution rate constant (1/time) 175 346 nca = 1. ! order of dissolution reaction (dimensionless) 176 347 / 177 ! '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''348 !----------------------------------------------------------------------- 178 349 &nampissbc ! parameters for inputs deposition 179 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,350 !----------------------------------------------------------------------- 180 351 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! 181 352 ! ! ! (if <0 months) ! name ! (logical) ! (T/F) ! 'monthly' ! filename ! pairing ! filename ! … … 210 381 concfediaz = 1.e-10 ! Diazotrophs half-saturation Cste for Iron 211 382 hratio = 1.e+7 ! Fe to 3He ratio assumed for vent iron supply 212 / 213 !''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 383 ! ! ln_ligand 384 fep_rats = 0. ! Fep/Fer ratio from sed sources 385 fep_rath = 0. ! Fep/Fer ratio from sed hydro sources 386 / 387 !----------------------------------------------------------------------- 214 388 &nampisice ! Prescribed sea ice tracers 215 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,389 !----------------------------------------------------------------------- 216 390 ! constant ocean tracer concentrations are defined in trcice_pisces.F90 (Global, Arctic, Antarctic and Baltic) 217 391 ! trc_ice_ratio * betw 0 and 1: prescribed ice/ocean tracer concentration ratio … … 224 398 ! cn_trc_o * 'GL' use global ocean values making the Baltic distinction only 225 399 ! 'AA' use specific Arctic/Antarctic/Baltic values 226 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,400 !----------------------------------------------------------------------- 227 401 ! sn_tri_ ! trc_ice_ratio ! trc_ice_prescr ! cn_trc_o 228 402 sn_tri_dic = -1., -99., 'AA' … … 252 426 sn_tri_nh4 = 1., -99., 'AA' 253 427 / 254 ! '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''428 !----------------------------------------------------------------------- 255 429 &nampisdmp ! Damping 256 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,430 !----------------------------------------------------------------------- 257 431 ln_pisdmp = .true. ! Relaxation fo some tracers to a mean value 258 432 nn_pisdmp = 5475 ! Frequency of Relaxation 259 433 / 260 ! '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''434 !----------------------------------------------------------------------- 261 435 &nampismass ! Mass conservation 262 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,436 !----------------------------------------------------------------------- 263 437 ln_check_mass = .false. ! Check mass conservation 264 438 / … … 274 448 !! 8 - optical parameters (namlobopt) 275 449 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 276 ! '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''450 !----------------------------------------------------------------------- 277 451 &namlobphy ! biological parameters for phytoplankton 278 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,452 !----------------------------------------------------------------------- 279 453 tmumax = 1.21e-5 ! maximal phytoplankton growth rate [s-1] 280 454 rgamma = 0.05 ! phytoplankton exudation fraction [%] … … 283 457 aki = 33. ! light photosynthesis half saturation constant[W/m2] 284 458 / 285 ! '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''459 !----------------------------------------------------------------------- 286 460 &namlobnut ! biological parameters for nutrients 287 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,461 !----------------------------------------------------------------------- 288 462 akno3 = 0.7 ! nitrate limitation half-saturation value [mmol/m3] 289 463 aknh4 = 0.001 ! ammonium limitation half-saturation value [mmol/m3] … … 291 465 psinut = 3. ! inhibition of nitrate uptake by ammonium 292 466 / 293 ! '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''467 !----------------------------------------------------------------------- 294 468 &namlobzoo ! biological parameters for zooplankton 295 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,469 !----------------------------------------------------------------------- 296 470 rppz = 0.8 ! zooplankton nominal preference for phytoplancton food [%] 297 471 taus = 9.26E-6 ! specific zooplankton maximal grazing rate [s-1] … … 305 479 tmminz = 2.31e-6 ! minimal zooplankton mortality rate [(mmolN/m3)-1 d-1] 306 480 / 307 ! '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''481 !----------------------------------------------------------------------- 308 482 &namlobdet ! biological parameters for detritus 309 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,483 !----------------------------------------------------------------------- 310 484 taudn = 5.80e-7 ! detritus breakdown rate [0.1/86400 s-1=10 days] 311 485 fdetlab = 0. ! NH4 fraction of detritus dissolution 312 486 / 313 ! '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''487 !----------------------------------------------------------------------- 314 488 &namlobdom ! biological parameters for DOM 315 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,489 !----------------------------------------------------------------------- 316 490 taudomn = 6.43e-8 ! DOM breakdown rate [s-1] 317 491 ! ! slow remineralization rate of semi-labile dom to nh4 (1 month) 318 492 / 319 ! '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''493 !----------------------------------------------------------------------- 320 494 &namlobsed ! parameters from aphotic layers to sediment 321 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,495 !----------------------------------------------------------------------- 322 496 sedlam = 3.86e-7 ! time coefficient of POC remineralization in sediments [s-1] 323 497 sedlostpoc = 0. ! mass of POC lost in sediments … … 325 499 xhr = -0.858 ! coeff for martin''s remineralisation profile 326 500 / 327 ! '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''501 !----------------------------------------------------------------------- 328 502 &namlobrat ! general coefficients 329 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,503 !----------------------------------------------------------------------- 330 504 rcchl = 60. ! Carbone/Chlorophyl ratio [mgC.mgChla-1] 331 505 redf = 6.56 ! redfield ratio (C:N) for phyto 332 506 reddom = 6.56 ! redfield ratio (C:N) for DOM 333 507 / 334 ! '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''508 !----------------------------------------------------------------------- 335 509 &namlobopt ! optical parameters 336 ! ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,510 !----------------------------------------------------------------------- 337 511 xkg0 = 0.0232 ! green absorption coefficient of water 338 512 xkr0 = 0.225 ! red absorption coefficent of water -
branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/CONFIG/cfg.txt
r7068 r7162 11 11 GYRE OPA_SRC 12 12 ORCA2_LIM_PISCES OPA_SRC LIM_SRC_2 NST_SRC TOP_SRC 13 ORCA2_LIM3_PISCES OPA_SRC LIM_SRC_3 NST_SRC TOP_SRC14 ORCA2_LIM3_TRC_N OPA_SRC LIM_SRC_3 NST_SRC TOP_SRC15 ORCA2_LIM3_TRC OPA_SRC LIM_SRC_3 NST_SRC TOP_SRC -
branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90
r6722 r7162 20 20 USE dom_oce ! ocean space and time domain 21 21 USE sbc_oce ! Surface boundary condition: ocean fields 22 USE trc_oce ! share SMS/Ocean variables 22 23 USE sbc_ice ! Surface boundary condition: ice fields 23 24 USE sbcapr ! Stochastic param. : ??? … … 36 37 USE albedo ! 37 38 USE eosbn2 ! 38 USE sbcrnf , ONLY : l_rnfcpl 39 #if defined key_cpl_carbon_cycle 40 USE p4zflx, ONLY : oce_co2 41 #endif 39 USE sbcrnf, ONLY : l_rnfcpl 42 40 #if defined key_cice 43 41 USE ice_domain_size, only: ncat … … 467 465 ! ! Atmospheric CO2 ! 468 466 ! ! ------------------------- ! 469 srcv(jpr_co2 )%clname = 'O_AtmCO2' ; IF( TRIM(sn_rcv_co2%cldes ) == 'coupled' ) srcv(jpr_co2 )%laction = .TRUE. 467 srcv(jpr_co2 )%clname = 'O_AtmCO2' 468 IF( TRIM(sn_rcv_co2%cldes ) == 'coupled' ) THEN 469 srcv(jpr_co2 )%laction = .TRUE. 470 l_co2cpl = .TRUE. 471 IF(lwp) WRITE(numout,*) 472 IF(lwp) WRITE(numout,*) ' Atmospheric pco2 received from oasis ' 473 IF(lwp) WRITE(numout,*) 474 ENDIF 470 475 ! ! ------------------------- ! 471 476 ! ! topmelt and botmelt ! … … 984 989 ENDIF 985 990 986 #if defined key_cpl_carbon_cycle987 991 ! ! ================== ! 988 992 ! ! atmosph. CO2 (ppm) ! 989 993 ! ! ================== ! 990 994 IF( srcv(jpr_co2)%laction ) atm_co2(:,:) = frcv(jpr_co2)%z3(:,:,1) 991 #endif992 995 993 996 ! Fields received by SAS when OASIS coupling … … 1919 1922 IF( ssnd(jps_hsnw)%laction ) CALL cpl_snd( jps_hsnw, isec, ztmp4, info ) 1920 1923 ENDIF 1921 !1922 #if defined key_cpl_carbon_cycle1923 1924 ! ! ------------------------- ! 1924 1925 ! ! CO2 flux from PISCES ! 1925 1926 ! ! ------------------------- ! 1926 IF( ssnd(jps_co2)%laction ) CALL cpl_snd( jps_co2, isec, RESHAPE ( oce_co2, (/jpi,jpj,1/) ) , info ) 1927 ! 1928 #endif 1927 IF( ssnd(jps_co2)%laction .AND. l_co2cpl ) CALL cpl_snd( jps_co2, isec, RESHAPE ( oce_co2, (/jpi,jpj,1/) ) , info ) 1928 ! 1929 1929 ! ! ------------------------- ! 1930 1930 IF( ssnd(jps_ocx1)%laction ) THEN ! Surface current ! -
branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/OPA_SRC/trc_oce.F90
r6140 r7162 24 24 PUBLIC trc_oce_alloc ! function called by nemogcm.F90 25 25 26 LOGICAL , PUBLIC :: l_co2cpl = .false. !: atmospheric pco2 recieved from oasis 26 27 INTEGER , PUBLIC :: nn_dttrc !: frequency of step on passive tracers 27 28 REAL(wp), PUBLIC :: r_si2 !: largest depth of extinction (blue & 0.01 mg.m-3) (RGB) 28 29 REAL(wp), PUBLIC, SAVE, ALLOCATABLE, DIMENSION(:,:,:) :: etot3 !: light absortion coefficient 29 REAL(wp), PUBLIC, SAVE, ALLOCATABLE, DIMENSION(:,: ,:) :: facvol !: volume for degraded regions30 REAL(wp), PUBLIC, SAVE, ALLOCATABLE, DIMENSION(:,:) :: oce_co2 !: ocean carbon flux 30 31 31 32 #if defined key_top … … 75 76 !! *** trc_oce_alloc *** 76 77 !!---------------------------------------------------------------------- 77 INTEGER :: ierr(2) ! Local variables 78 !!---------------------------------------------------------------------- 79 ierr(:) = 0 80 ALLOCATE( etot3 (jpi,jpj,jpk), STAT=ierr(1) ) 81 IF( lk_degrad) ALLOCATE( facvol(jpi,jpj,jpk), STAT=ierr(2) ) 82 trc_oce_alloc = MAXVAL( ierr ) 83 ! 78 ALLOCATE( etot3(jpi,jpj,jpk), oce_co2(jpi,jpj), STAT=trc_oce_alloc ) 84 79 IF( trc_oce_alloc /= 0 ) CALL ctl_warn('trc_oce_alloc: failed to allocate etot3 array') 80 ! 85 81 END FUNCTION trc_oce_alloc 86 82 -
branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zbio.F90
r7068 r7162 20 20 USE p4zmicro ! Sources and sinks of microzooplankton 21 21 USE p4zmeso ! Sources and sinks of mesozooplankton 22 USE p5zlim ! Co-limitations of differents nutrients 23 USE p5zprod ! Growth rate of the 2 phyto groups 24 USE p5zmort ! Mortality terms for phytoplankton 25 USE p5zmicro ! Sources and sinks of microzooplankton 26 USE p5zmeso ! Sources and sinks of mesozooplankton 27 USE p5zagg ! Aggregation of particles 22 28 USE p4zrem ! Remineralisation of organic matter 29 USE p4zpoc ! Remineralization of organic particles 30 USE p4zagg ! Aggregation of particles 23 31 USE p4zfechem 32 USE p4zligand ! Prognostic ligand model 24 33 USE prtctl_trc ! print control for debugging 25 34 USE iom ! I/O manager … … 69 78 END DO 70 79 71 CALL p4z_opt ( kt, knt ) ! Optic: PAR in the water column 72 CALL p4z_sink ( kt, knt ) ! vertical flux of particulate organic matter 73 CALL p4z_fechem(kt, knt ) ! Iron chemistry/scavenging 74 CALL p4z_lim ( kt, knt ) ! co-limitations by the various nutrients 75 CALL p4z_prod ( kt, knt ) ! phytoplankton growth rate over the global ocean. 76 ! ! (for each element : C, Si, Fe, Chl ) 77 CALL p4z_mort ( kt ) ! phytoplankton mortality 78 ! ! zooplankton sources/sinks routines 79 CALL p4z_micro( kt, knt ) ! microzooplankton 80 CALL p4z_meso ( kt, knt ) ! mesozooplankton 81 CALL p4z_rem ( kt, knt ) ! remineralization terms of organic matter+scavenging of Fe 82 ! ! test if tracers concentrations fall below 0. 80 CALL p4z_opt ( kt, knt ) ! Optic: PAR in the water column 81 CALL p4z_sink ( kt, knt ) ! vertical flux of particulate organic matter 82 CALL p4z_fechem ( kt, knt ) ! Iron chemistry/scavenging 83 ! 84 IF( ln_p4z ) THEN 85 CALL p4z_lim ( kt, knt ) ! co-limitations by the various nutrients 86 CALL p4z_prod ( kt, knt ) ! phytoplankton growth rate over the global ocean. 87 ! ! (for each element : C, Si, Fe, Chl ) 88 CALL p4z_mort ( kt ) ! phytoplankton mortality 89 ! ! zooplankton sources/sinks routines 90 CALL p4z_micro( kt, knt ) ! microzooplankton 91 CALL p4z_meso ( kt, knt ) ! mesozooplankton 92 CALL p4z_agg ( kt, knt ) ! Aggregation of particles 93 ELSE 94 CALL p5z_lim ( kt, knt ) ! co-limitations by the various nutrients 95 CALL p5z_prod ( kt, knt ) ! phytoplankton growth rate over the global ocean. 96 ! ! (for each element : C, Si, Fe, Chl ) 97 CALL p5z_mort ( kt ) ! phytoplankton mortality 98 ! ! zooplankton sources/sinks routines 99 CALL p5z_micro( kt, knt ) ! microzooplankton 100 CALL p5z_meso ( kt, knt ) ! mesozooplankton 101 CALL p5z_agg ( kt, knt ) ! Aggregation of particles 102 ENDIF 103 ! 104 CALL p4z_rem ( kt, knt ) ! remineralization terms of organic matter+scavenging of Fe 105 CALL p4z_poc ( kt, knt ) ! Remineralization of organic particles 106 IF( ln_ligand ) THEN 107 CALL p4z_ligand( kt, knt ) 108 ENDIF 83 109 ! ! 84 110 IF(ln_ctl) THEN ! print mean trends (used for debugging) -
branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zche.F90
r7068 r7162 11 11 !! 2.0 ! 2007-12 (C. Ethe, G. Madec) F90 12 12 !! ! 2011-02 (J. Simeon, J.Orr ) update O2 solubility constants 13 !! 3.6 ! 2016-03 (O. Aumont) Change chemistry to MOCSY standards 13 14 !!---------------------------------------------------------------------- 14 15 !! p4z_che : Sea water chemistry computed following OCMIP protocol … … 18 19 USE sms_pisces ! PISCES Source Minus Sink variables 19 20 USE lib_mpp ! MPP library 21 USE eosbn2, ONLY : neos 20 22 21 23 IMPLICIT NONE 22 24 PRIVATE 23 25 24 PUBLIC p4z_che ! 25 PUBLIC p4z_che_alloc ! 26 27 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: sio3eq ! chemistry of Si 28 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: fekeq ! chemistry of Fe 29 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: chemc ! Solubilities of O2 and CO2 30 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: chemo2 ! Solubilities of O2 and CO2 26 PUBLIC p4z_che ! 27 PUBLIC p4z_che_alloc ! 28 PUBLIC ahini_for_at ! 29 PUBLIC solve_at_general ! 30 31 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: sio3eq ! chemistry of Si 32 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: fekeq ! chemistry of Fe 33 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: chemc ! Solubilities of O2 and CO2 34 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: chemo2 ! Solubilities of O2 and CO2 35 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: fesol ! solubility of Fe 31 36 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: tempis ! In situ temperature 37 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: salinprac ! Practical salinity 38 39 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: akb3 !: ??? 40 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: akw3 !: ??? 41 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: akf3 !: ??? 42 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: aks3 !: ??? 43 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: ak1p3 !: ??? 44 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: ak2p3 !: ??? 45 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: ak3p3 !: ??? 46 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: aksi3 !: ??? 47 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: borat !: ??? 48 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: fluorid !: ??? 49 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: sulfat !: ??? 50 51 !!* Variable for chemistry of the CO2 cycle 32 52 33 53 REAL(wp), PUBLIC :: atcox = 0.20946 ! units atm 34 54 35 REAL(wp) :: salchl = 1. / 1.80655 ! conversion factor for salinity --> chlorinity (Wooster et al. 1969)36 55 REAL(wp) :: o2atm = 1. / ( 1000. * 0.20946 ) 37 56 38 REAL(wp) :: rgas = 83.14472 ! universal gas constants 39 REAL(wp) :: oxyco = 1. / 22.4144 ! converts from liters of an ideal gas to moles 40 41 REAL(wp) :: bor1 = 0.00023 ! borat constants 42 REAL(wp) :: bor2 = 1. / 10.82 43 44 REAL(wp) :: st1 = 0.14 ! constants for calculate concentrations for sulfate 45 REAL(wp) :: st2 = 1./96.062 ! (Morris & Riley 1966) 46 47 REAL(wp) :: ft1 = 0.000067 ! constants for calculate concentrations for fluorides 48 REAL(wp) :: ft2 = 1./18.9984 ! (Dickson & Riley 1979 ) 49 50 ! ! volumetric solubility constants for o2 in ml/L 51 REAL(wp) :: ox0 = 2.00856 ! from Table 1 for Eq 8 of Garcia and Gordon, 1992. 52 REAL(wp) :: ox1 = 3.22400 ! corrects for moisture and fugacity, but not total atmospheric pressure 53 REAL(wp) :: ox2 = 3.99063 ! Original PISCES code noted this was a solubility, but 54 REAL(wp) :: ox3 = 4.80299 ! was in fact a bunsen coefficient with units L-O2/(Lsw atm-O2) 55 REAL(wp) :: ox4 = 9.78188e-1 ! Hence, need to divide EXP( zoxy ) by 1000, ml-O2 => L-O2 56 REAL(wp) :: ox5 = 1.71069 ! and atcox = 0.20946 to add the 1/atm dimension. 57 REAL(wp) :: ox6 = -6.24097e-3 58 REAL(wp) :: ox7 = -6.93498e-3 59 REAL(wp) :: ox8 = -6.90358e-3 60 REAL(wp) :: ox9 = -4.29155e-3 61 REAL(wp) :: ox10 = -3.11680e-7 57 REAL(wp) :: rgas = 83.14472 ! universal gas constants 58 REAL(wp) :: oxyco = 1. / 22.4144 ! converts from liters of an ideal gas to moles 62 59 63 60 ! ! coeff. for seawater pressure correction : millero 95 64 61 ! ! AGRIF doesn't like the DATA instruction 65 REAL(wp) :: devk11 = -25.5 66 REAL(wp) :: devk12 = -15.82 67 REAL(wp) :: devk13 = -29.48 68 REAL(wp) :: devk14 = -25.60 69 REAL(wp) :: devk15 = -48.76 62 REAL(wp) :: devk10 = -25.5 63 REAL(wp) :: devk11 = -15.82 64 REAL(wp) :: devk12 = -29.48 65 REAL(wp) :: devk13 = -20.02 66 REAL(wp) :: devk14 = -18.03 67 REAL(wp) :: devk15 = -9.78 68 REAL(wp) :: devk16 = -48.76 69 REAL(wp) :: devk17 = -14.51 70 REAL(wp) :: devk18 = -23.12 71 REAL(wp) :: devk19 = -26.57 72 REAL(wp) :: devk110 = -29.48 70 73 ! 71 REAL(wp) :: devk21 = 0.1271 72 REAL(wp) :: devk22 = -0.0219 73 REAL(wp) :: devk23 = 0.1622 74 REAL(wp) :: devk24 = 0.2324 75 REAL(wp) :: devk25 = 0.5304 74 REAL(wp) :: devk20 = 0.1271 75 REAL(wp) :: devk21 = -0.0219 76 REAL(wp) :: devk22 = 0.1622 77 REAL(wp) :: devk23 = 0.1119 78 REAL(wp) :: devk24 = 0.0466 79 REAL(wp) :: devk25 = -0.0090 80 REAL(wp) :: devk26 = 0.5304 81 REAL(wp) :: devk27 = 0.1211 82 REAL(wp) :: devk28 = 0.1758 83 REAL(wp) :: devk29 = 0.2020 84 REAL(wp) :: devk210 = 0.1622 76 85 ! 86 REAL(wp) :: devk30 = 0. 77 87 REAL(wp) :: devk31 = 0. 78 REAL(wp) :: devk32 = 0. 79 REAL(wp) :: devk33 = 2.608E-3 80 REAL(wp) :: devk34 = -3.6246E-3 81 REAL(wp) :: devk35 = 0. 88 REAL(wp) :: devk32 = 2.608E-3 89 REAL(wp) :: devk33 = -1.409e-3 90 REAL(wp) :: devk34 = 0.316e-3 91 REAL(wp) :: devk35 = -0.942e-3 92 REAL(wp) :: devk36 = 0. 93 REAL(wp) :: devk37 = -0.321e-3 94 REAL(wp) :: devk38 = -2.647e-3 95 REAL(wp) :: devk39 = -3.042e-3 96 REAL(wp) :: devk310 = -2.6080e-3 82 97 ! 83 REAL(wp) :: devk41 = -3.08E-3 84 REAL(wp) :: devk42 = 1.13E-3 85 REAL(wp) :: devk43 = -2.84E-3 86 REAL(wp) :: devk44 = -5.13E-3 87 REAL(wp) :: devk45 = -11.76E-3 98 REAL(wp) :: devk40 = -3.08E-3 99 REAL(wp) :: devk41 = 1.13E-3 100 REAL(wp) :: devk42 = -2.84E-3 101 REAL(wp) :: devk43 = -5.13E-3 102 REAL(wp) :: devk44 = -4.53e-3 103 REAL(wp) :: devk45 = -3.91e-3 104 REAL(wp) :: devk46 = -11.76e-3 105 REAL(wp) :: devk47 = -2.67e-3 106 REAL(wp) :: devk48 = -5.15e-3 107 REAL(wp) :: devk49 = -4.08e-3 108 REAL(wp) :: devk410 = -2.84e-3 88 109 ! 89 REAL(wp) :: devk51 = 0.0877E-3 90 REAL(wp) :: devk52 = -0.1475E-3 91 REAL(wp) :: devk53 = 0. 92 REAL(wp) :: devk54 = 0.0794E-3 93 REAL(wp) :: devk55 = 0.3692E-3 110 REAL(wp) :: devk50 = 0.0877E-3 111 REAL(wp) :: devk51 = -0.1475E-3 112 REAL(wp) :: devk52 = 0. 113 REAL(wp) :: devk53 = 0.0794E-3 114 REAL(wp) :: devk54 = 0.09e-3 115 REAL(wp) :: devk55 = 0.054e-3 116 REAL(wp) :: devk56 = 0.3692E-3 117 REAL(wp) :: devk57 = 0.0427e-3 118 REAL(wp) :: devk58 = 0.09e-3 119 REAL(wp) :: devk59 = 0.0714e-3 120 REAL(wp) :: devk510 = 0.0 121 ! 122 ! General parameters 123 REAL(wp), PARAMETER :: pp_rdel_ah_target = 1.E-4_wp 124 REAL(wp), PARAMETER :: pp_ln10 = 2.302585092994045684018_wp 125 126 ! Maximum number of iterations for each method 127 INTEGER, PARAMETER :: jp_maxniter_atgen = 20 128 129 ! Bookkeeping variables for each method 130 ! - SOLVE_AT_GENERAL 131 INTEGER :: niter_atgen = jp_maxniter_atgen 94 132 95 133 !!---------------------------------------------------------------------- … … 109 147 !!--------------------------------------------------------------------- 110 148 INTEGER :: ji, jj, jk 111 REAL(wp) :: ztkel, zt , zt2, zsal , zsal2 , zbuf1 , zbuf2149 REAL(wp) :: ztkel, ztkel1, zt , zsal , zsal2 , zbuf1 , zbuf2 112 150 REAL(wp) :: ztgg , ztgg2, ztgg3 , ztgg4 , ztgg5 113 151 REAL(wp) :: zpres, ztc , zcl , zcpexp, zoxy , zcpexp2 114 152 REAL(wp) :: zsqrt, ztr , zlogt , zcek1, zc1, zplat 115 REAL(wp) :: zis , zis2 , zsal15, zisqrt, za1 153 REAL(wp) :: zis , zis2 , zsal15, zisqrt, za1, za2 116 154 REAL(wp) :: zckb , zck1 , zck2 , zckw , zak1 , zak2 , zakb , zaksp0, zakw 155 REAL(wp) :: zck1p, zck2p, zck3p, zcksi, zak1p, zak2p, zak3p, zaksi 117 156 REAL(wp) :: zst , zft , zcks , zckf , zaksp1 157 REAL(wp) :: total2free, free2SWS, total2SWS, SWS2total 158 118 159 !!--------------------------------------------------------------------- 119 160 ! 120 161 IF( nn_timing == 1 ) CALL timing_start('p4z_che') 162 ! 163 ! Computation of chemical constants require practical salinity 164 ! Thus, when TEOS08 is used, absolute salinity is converted to 165 ! practical salinity 166 ! ------------------------------------------------------------- 167 IF (neos == -1) THEN 168 salinprac(:,:,:) = tsn(:,:,:,jp_sal) * 35.0 / 35.16504 169 ELSE 170 salinprac(:,:,:) = tsn(:,:,:,jp_sal) 171 ENDIF 172 121 173 ! 122 174 ! Computations of chemical constants require in situ temperature … … 129 181 DO ji = 1, jpi 130 182 zpres = gdept_n(ji,jj,jk) / 1000. 131 za1 = 0.04 * ( 1.0 + 0.185 * tsn(ji,jj,jk,jp_tem) + 0.035 * ( tsn(ji,jj,jk,jp_sal) - 35.0) )183 za1 = 0.04 * ( 1.0 + 0.185 * tsn(ji,jj,jk,jp_tem) + 0.035 * (salinprac(ji,jj,jk) - 35.0) ) 132 184 za2 = 0.0075 * ( 1.0 - tsn(ji,jj,jk,jp_tem) / 30.0 ) 133 185 tempis(ji,jj,jk) = tsn(ji,jj,jk,jp_tem) - za1 * zpres + za2 * zpres**2 … … 138 190 ! CHEMICAL CONSTANTS - SURFACE LAYER 139 191 ! ---------------------------------- 192 !CDIR NOVERRCHK 140 193 DO jj = 1, jpj 194 !CDIR NOVERRCHK 141 195 DO ji = 1, jpi 142 196 ! ! SET ABSOLUTE TEMPERATURE 143 197 ztkel = tempis(ji,jj,1) + 273.15 144 198 zt = ztkel * 0.01 145 zt2 = zt * zt 146 zsal = tsn(ji,jj,1,jp_sal) + ( 1.- tmask(ji,jj,1) ) * 35. 147 zsal2 = zsal * zsal 148 zlogt = LOG( zt ) 199 zsal = salinprac(ji,jj,1) + ( 1.- tmask(ji,jj,1) ) * 35. 149 200 ! ! LN(K0) OF SOLUBILITY OF CO2 (EQ. 12, WEISS, 1980) 150 201 ! ! AND FOR THE ATMOSPHERE FOR NON IDEAL GAS 151 202 zcek1 = 9345.17/ztkel - 60.2409 + 23.3585 * LOG(zt) + zsal*(0.023517 - 0.00023656*ztkel & 152 203 & + 0.0047036e-4*ztkel**2) 153 ! ! SET SOLUBILITIES OF O2 AND CO2 154 chemc(ji,jj,1) = EXP( zcek1 ) * 1.e-6 * rhop(ji,jj,1) / 1000. ! mol/(kg uatm) 204 chemc(ji,jj,1) = EXP( zcek1 ) * 1E-6 * rhop(ji,jj,1) / 1000. ! mol/(L atm) 155 205 chemc(ji,jj,2) = -1636.75 + 12.0408*ztkel - 0.0327957*ztkel**2 + 0.0000316528*ztkel**3 156 206 chemc(ji,jj,3) = 57.7 - 0.118*ztkel … … 161 211 ! OXYGEN SOLUBILITY - DEEP OCEAN 162 212 ! ------------------------------- 213 !CDIR NOVERRCHK 163 214 DO jk = 1, jpk 215 !CDIR NOVERRCHK 164 216 DO jj = 1, jpj 217 !CDIR NOVERRCHK 165 218 DO ji = 1, jpi 166 219 ztkel = tempis(ji,jj,jk) + 273.15 167 zsal = tsn(ji,jj,jk,jp_sal) + ( 1.- tmask(ji,jj,jk) ) * 35.220 zsal = salinprac(ji,jj,jk) + ( 1.- tmask(ji,jj,jk) ) * 35. 168 221 zsal2 = zsal * zsal 169 222 ztgg = LOG( ( 298.15 - tempis(ji,jj,jk) ) / ztkel ) ! Set the GORDON & GARCIA scaled temperature … … 172 225 ztgg4 = ztgg3 * ztgg 173 226 ztgg5 = ztgg4 * ztgg 174 zoxy = ox0 + ox1 * ztgg + ox2 * ztgg2 + ox3 * ztgg3 + ox4 * ztgg4 + ox5 * ztgg5 & 175 + zsal * ( ox6 + ox7 * ztgg + ox8 * ztgg2 + ox9 * ztgg3 ) + ox10 * zsal2 227 228 zoxy = 2.00856 + 3.22400 * ztgg + 3.99063 * ztgg2 + 4.80299 * ztgg3 & 229 & + 9.78188e-1 * ztgg4 + 1.71069 * ztgg5 + zsal * ( -6.24097e-3 & 230 & - 6.93498e-3 * ztgg - 6.90358e-3 * ztgg2 - 4.29155e-3 * ztgg3 ) & 231 & - 3.11680e-7 * zsal2 176 232 chemo2(ji,jj,jk) = ( EXP( zoxy ) * o2atm ) * oxyco * atcox ! mol/(L atm) 177 233 END DO … … 183 239 ! CHEMICAL CONSTANTS - DEEP OCEAN 184 240 ! ------------------------------- 241 !CDIR NOVERRCHK 185 242 DO jk = 1, jpk 243 !CDIR NOVERRCHK 186 244 DO jj = 1, jpj 245 !CDIR NOVERRCHK 187 246 DO ji = 1, jpi 188 247 … … 195 254 ! SET ABSOLUTE TEMPERATURE 196 255 ztkel = tempis(ji,jj,jk) + 273.15 197 zsal = tsn(ji,jj,jk,jp_sal) + ( 1.-tmask(ji,jj,jk) ) * 35.256 zsal = salinprac(ji,jj,jk) + ( 1.-tmask(ji,jj,jk) ) * 35. 198 257 zsqrt = SQRT( zsal ) 199 258 zsal15 = zsqrt * zsal … … 206 265 207 266 ! CHLORINITY (WOOSTER ET AL., 1969) 208 zcl = zsal * salchl267 zcl = zsal / 1.80655 209 268 210 269 ! TOTAL SULFATE CONCENTR. [MOLES/kg soln] 211 zst = st1 * zcl * st2270 zst = 0.14 * zcl /96.062 212 271 213 272 ! TOTAL FLUORIDE CONCENTR. [MOLES/kg soln] 214 zft = ft1 * zcl * ft2273 zft = 0.000067 * zcl /18.9984 215 274 216 275 ! DISSOCIATION CONSTANT FOR SULFATES on free H scale (Dickson 1990) … … 220 279 & - 2698. * ztr * zis**1.5 + 1776.* ztr * zis2 & 221 280 & + LOG(1.0 - 0.001005 * zsal)) 222 !223 aphscale(ji,jj,jk) = ( 1. + zst / zcks )224 281 225 282 ! DISSOCIATION CONSTANT FOR FLUORIDES on free H scale (Dickson and Riley 79) … … 235 292 & * zlogt + 0.053105*zsqrt*ztkel 236 293 237 238 294 ! DISSOCIATION COEFFICIENT FOR CARBONATE ACCORDING TO 239 295 ! MEHRBACH (1973) REFIT BY MILLERO (1995), seawater scale … … 243 299 - 0.01781*zsal + 0.0001122*zsal*zsal) 244 300 245 ! PKW (H2O) (DICKSON AND RILEY, 1979) 246 zckw = -13847.26*ztr + 148.9652 - 23.6521 * zlogt & 247 & + (118.67*ztr - 5.977 + 1.0495 * zlogt) & 248 & * zsqrt - 0.01615 * zsal 301 ! PKW (H2O) (MILLERO, 1995) from composite data 302 zckw = -13847.26 * ztr + 148.9652 - 23.6521 * zlogt + ( 118.67 * ztr & 303 - 5.977 + 1.0495 * zlogt ) * zsqrt - 0.01615 * zsal 304 305 ! CONSTANTS FOR PHOSPHATE (MILLERO, 1995) 306 zck1p = -4576.752*ztr + 115.540 - 18.453*zlogt & 307 & + (-106.736*ztr + 0.69171) * zsqrt & 308 & + (-0.65643*ztr - 0.01844) * zsal 309 310 zck2p = -8814.715*ztr + 172.1033 - 27.927*zlogt & 311 & + (-160.340*ztr + 1.3566)*zsqrt & 312 & + (0.37335*ztr - 0.05778)*zsal 313 314 zck3p = -3070.75*ztr - 18.126 & 315 & + (17.27039*ztr + 2.81197) * zsqrt & 316 & + (-44.99486*ztr - 0.09984) * zsal 317 318 ! CONSTANT FOR SILICATE, MILLERO (1995) 319 zcksi = -8904.2*ztr + 117.400 - 19.334*zlogt & 320 & + (-458.79*ztr + 3.5913) * zisqrt & 321 & + (188.74*ztr - 1.5998) * zis & 322 & + (-12.1652*ztr + 0.07871) * zis2 & 323 & + LOG(1.0 - 0.001005*zsal) 249 324 250 325 ! APPARENT SOLUBILITY PRODUCT K'SP OF CALCITE IN SEAWATER … … 254 329 & - 0.07711*zsal + 0.0041249*zsal15 255 330 331 ! CONVERT FROM DIFFERENT PH SCALES 332 total2free = 1.0/(1.0 + zst/zcks) 333 free2SWS = 1. + zst/zcks + zft/(zckf*total2free) 334 total2SWS = total2free * free2SWS 335 SWS2total = 1.0 / total2SWS 336 256 337 ! K1, K2 OF CARBONIC ACID, KB OF BORIC ACID, KW (H2O) (LIT.?) 257 zak1 = 10**(zck1) 258 zak2 = 10**(zck2) 259 zakb = EXP( zckb )338 zak1 = 10**(zck1) * total2SWS 339 zak2 = 10**(zck2) * total2SWS 340 zakb = EXP( zckb ) * total2SWS 260 341 zakw = EXP( zckw ) 261 342 zaksp1 = 10**(zaksp0) 343 zak1p = exp( zck1p ) 344 zak2p = exp( zck2p ) 345 zak3p = exp( zck3p ) 346 zaksi = exp( zcksi ) 347 zckf = zckf * total2SWS 262 348 263 349 ! FORMULA FOR CPEXP AFTER EDMOND & GIESKES (1970) … … 271 357 ! FORMULA ON P. 1286 IS RIGHT AND CONSISTENT WITH THE 272 358 ! SIGN IN PARTIAL MOLAR VOLUME CHANGE AS SHOWN ON P. 1285)) 273 zcpexp = zpres / (rgas*ztkel)274 zcpexp2 = zpres * z pres/(rgas*ztkel)359 zcpexp = zpres / (rgas*ztkel) 360 zcpexp2 = zpres * zcpexp 275 361 276 362 ! KB OF BORIC ACID, K1,K2 OF CARBONIC ACID PRESSURE … … 278 364 ! (CF. BROECKER ET AL., 1982) 279 365 280 zbuf1 = - ( devk11 + devk21 * ztc + devk31 * ztc * ztc ) 366 zbuf1 = - ( devk10 + devk20 * ztc + devk30 * ztc * ztc ) 367 zbuf2 = 0.5 * ( devk40 + devk50 * ztc ) 368 ak13(ji,jj,jk) = zak1 * EXP( zbuf1 * zcpexp + zbuf2 * zcpexp2 ) 369 370 zbuf1 = - ( devk11 + devk21 * ztc + devk31 * ztc * ztc ) 281 371 zbuf2 = 0.5 * ( devk41 + devk51 * ztc ) 282 ak 13(ji,jj,jk) = zak1* EXP( zbuf1 * zcpexp + zbuf2 * zcpexp2 )372 ak23(ji,jj,jk) = zak2 * EXP( zbuf1 * zcpexp + zbuf2 * zcpexp2 ) 283 373 284 374 zbuf1 = - ( devk12 + devk22 * ztc + devk32 * ztc * ztc ) 285 375 zbuf2 = 0.5 * ( devk42 + devk52 * ztc ) 286 ak 23(ji,jj,jk) = zak2* EXP( zbuf1 * zcpexp + zbuf2 * zcpexp2 )376 akb3(ji,jj,jk) = zakb * EXP( zbuf1 * zcpexp + zbuf2 * zcpexp2 ) 287 377 288 378 zbuf1 = - ( devk13 + devk23 * ztc + devk33 * ztc * ztc ) 289 379 zbuf2 = 0.5 * ( devk43 + devk53 * ztc ) 290 ak b3(ji,jj,jk) = zakb* EXP( zbuf1 * zcpexp + zbuf2 * zcpexp2 )380 akw3(ji,jj,jk) = zakw * EXP( zbuf1 * zcpexp + zbuf2 * zcpexp2 ) 291 381 292 382 zbuf1 = - ( devk14 + devk24 * ztc + devk34 * ztc * ztc ) 293 383 zbuf2 = 0.5 * ( devk44 + devk54 * ztc ) 294 akw3(ji,jj,jk) = zakw * EXP( zbuf1 * zcpexp + zbuf2 * zcpexp2 ) 295 384 aks3(ji,jj,jk) = zcks * EXP( zbuf1 * zcpexp + zbuf2 * zcpexp2 ) 385 386 zbuf1 = - ( devk15 + devk25 * ztc + devk35 * ztc * ztc ) 387 zbuf2 = 0.5 * ( devk45 + devk55 * ztc ) 388 akf3(ji,jj,jk) = zckf * EXP( zbuf1 * zcpexp + zbuf2 * zcpexp2 ) 389 390 zbuf1 = - ( devk17 + devk27 * ztc + devk37 * ztc * ztc ) 391 zbuf2 = 0.5 * ( devk47 + devk57 * ztc ) 392 ak1p3(ji,jj,jk) = zak1p * EXP( zbuf1 * zcpexp + zbuf2 * zcpexp2 ) 393 394 zbuf1 = - ( devk18 + devk28 * ztc + devk38 * ztc * ztc ) 395 zbuf2 = 0.5 * ( devk48 + devk58 * ztc ) 396 ak2p3(ji,jj,jk) = zak2p * EXP( zbuf1 * zcpexp + zbuf2 * zcpexp2 ) 397 398 zbuf1 = - ( devk19 + devk29 * ztc + devk39 * ztc * ztc ) 399 zbuf2 = 0.5 * ( devk49 + devk59 * ztc ) 400 ak3p3(ji,jj,jk) = zak3p * EXP( zbuf1 * zcpexp + zbuf2 * zcpexp2 ) 401 402 zbuf1 = - ( devk110 + devk210 * ztc + devk310 * ztc * ztc ) 403 zbuf2 = 0.5 * ( devk410 + devk510 * ztc ) 404 aksi3(ji,jj,jk) = zaksi * EXP( zbuf1 * zcpexp + zbuf2 * zcpexp2 ) 405 406 ! CONVERT FROM DIFFERENT PH SCALES 407 total2free = 1.0/(1.0 + zst/aks3(ji,jj,jk)) 408 free2SWS = 1. + zst/aks3(ji,jj,jk) + zft/akf3(ji,jj,jk) 409 total2SWS = total2free * free2SWS 410 SWS2total = 1.0 / total2SWS 411 412 ! Convert to total scale 413 ak13(ji,jj,jk) = ak13(ji,jj,jk) * SWS2total 414 ak23(ji,jj,jk) = ak23(ji,jj,jk) * SWS2total 415 akb3(ji,jj,jk) = akb3(ji,jj,jk) * SWS2total 416 akw3(ji,jj,jk) = akw3(ji,jj,jk) * SWS2total 417 ak1p3(ji,jj,jk) = ak1p3(ji,jj,jk) * SWS2total 418 ak2p3(ji,jj,jk) = ak2p3(ji,jj,jk) * SWS2total 419 ak3p3(ji,jj,jk) = ak3p3(ji,jj,jk) * SWS2total 420 aksi3(ji,jj,jk) = aksi3(ji,jj,jk) * SWS2total 421 akf3(ji,jj,jk) = akf3(ji,jj,jk) / total2free 296 422 297 423 ! APPARENT SOLUBILITY PRODUCT K'SP OF CALCITE 298 424 ! AS FUNCTION OF PRESSURE FOLLOWING MILLERO 299 425 ! (P. 1285) AND BERNER (1976) 300 zbuf1 = - ( devk1 5 + devk25 * ztc + devk35* ztc * ztc )301 zbuf2 = 0.5 * ( devk4 5 + devk55* ztc )426 zbuf1 = - ( devk16 + devk26 * ztc + devk36 * ztc * ztc ) 427 zbuf2 = 0.5 * ( devk46 + devk56 * ztc ) 302 428 aksp(ji,jj,jk) = zaksp1 * EXP( zbuf1 * zcpexp + zbuf2 * zcpexp2 ) 303 429 304 ! TOTAL BORATE CONCENTR. [MOLES/L] 305 borat(ji,jj,jk) = bor1 * zcl * bor2 430 ! TOTAL F, S, and BORATE CONCENTR. [MOLES/L] 431 borat(ji,jj,jk) = 0.0002414 * zcl / 10.811 432 sulfat(ji,jj,jk) = zst 433 fluorid(ji,jj,jk) = zft 306 434 307 435 ! Iron and SIO3 saturation concentration from ... 308 436 sio3eq(ji,jj,jk) = EXP( LOG( 10.) * ( 6.44 - 968. / ztkel ) ) * 1.e-6 309 fekeq (ji,jj,jk) = 10**( 17.27 - 1565.7 / ( 273.15 + ztc ) ) 310 437 fekeq (ji,jj,jk) = 10**( 17.27 - 1565.7 / ztkel ) 438 439 ! Liu and Millero (1999) only valid 5 - 50 degC 440 ztkel1 = MAX( 5. , tempis(ji,jj,jk) ) + 273.16 441 fesol(ji,jj,jk,1) = 10**((-13.486) - (0.1856* (zis**0.5)) + (0.3073*zis) + (5254.0/ztkel1)) 442 fesol(ji,jj,jk,2) = 10**(2.517 - (0.885*(zis**0.5)) + (0.2139 * zis) - (1320.0/ztkel1) ) 443 fesol(ji,jj,jk,3) = 10**(0.4511 - (0.3305*(zis**0.5)) - (1996.0/ztkel1) ) 444 fesol(ji,jj,jk,4) = 10**(-0.2965 - (0.7881*(zis**0.5)) - (4086.0/ztkel1) ) 445 fesol(ji,jj,jk,5) = 10**(4.4466 - (0.8505*(zis**0.5)) - (7980.0/ztkel1) ) 311 446 END DO 312 447 END DO … … 317 452 END SUBROUTINE p4z_che 318 453 454 SUBROUTINE ahini_for_at(p_hini) 455 !!--------------------------------------------------------------------- 456 !! *** ROUTINE ahini_for_at *** 457 !! 458 !! Subroutine returns the root for the 2nd order approximation of the 459 !! DIC -- B_T -- A_CB equation for [H+] (reformulated as a cubic 460 !! polynomial) around the local minimum, if it exists. 461 !! Returns * 1E-03_wp if p_alkcb <= 0 462 !! * 1E-10_wp if p_alkcb >= 2*p_dictot + p_bortot 463 !! * 1E-07_wp if 0 < p_alkcb < 2*p_dictot + p_bortot 464 !! and the 2nd order approximation does not have 465 !! a solution 466 !!--------------------------------------------------------------------- 467 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(OUT) :: p_hini 468 INTEGER :: ji, jj, jk 469 REAL(wp) :: zca1, zba1 470 REAL(wp) :: zd, zsqrtd, zhmin 471 REAL(wp) :: za2, za1, za0 472 REAL(wp) :: p_dictot, p_bortot, p_alkcb 473 474 IF( nn_timing == 1 ) CALL timing_start('ahini_for_at') 475 ! 476 DO jk = 1, jpk 477 DO jj = 1, jpj 478 DO ji = 1, jpi 479 p_alkcb = trb(ji,jj,jk,jptal) * 1000. / (rhop(ji,jj,jk) + rtrn) 480 p_dictot = trb(ji,jj,jk,jpdic) * 1000. / (rhop(ji,jj,jk) + rtrn) 481 p_bortot = borat(ji,jj,jk) 482 IF (p_alkcb <= 0.) THEN 483 p_hini(ji,jj,jk) = 1.e-3 484 ELSEIF (p_alkcb >= (2.*p_dictot + p_bortot)) THEN 485 p_hini(ji,jj,jk) = 1.e-10_wp 486 ELSE 487 zca1 = p_dictot/( p_alkcb + rtrn ) 488 zba1 = p_bortot/ (p_alkcb + rtrn ) 489 ! Coefficients of the cubic polynomial 490 za2 = aKb3(ji,jj,jk)*(1. - zba1) + ak13(ji,jj,jk)*(1.-zca1) 491 za1 = ak13(ji,jj,jk)*akb3(ji,jj,jk)*(1. - zba1 - zca1) & 492 & + ak13(ji,jj,jk)*ak23(ji,jj,jk)*(1. - (zca1+zca1)) 493 za0 = ak13(ji,jj,jk)*ak23(ji,jj,jk)*akb3(ji,jj,jk)*(1. - zba1 - (zca1+zca1)) 494 ! Taylor expansion around the minimum 495 zd = za2*za2 - 3.*za1 ! Discriminant of the quadratic equation 496 ! for the minimum close to the root 497 498 IF(zd > 0.) THEN ! If the discriminant is positive 499 zsqrtd = SQRT(zd) 500 IF(za2 < 0) THEN 501 zhmin = (-za2 + zsqrtd)/3. 502 ELSE 503 zhmin = -za1/(za2 + zsqrtd) 504 ENDIF 505 p_hini(ji,jj,jk) = zhmin + SQRT(-(za0 + zhmin*(za1 + zhmin*(za2 + zhmin)))/zsqrtd) 506 ELSE 507 p_hini(ji,jj,jk) = 1.e-7 508 ENDIF 509 ! 510 ENDIF 511 END DO 512 END DO 513 END DO 514 ! 515 IF( nn_timing == 1 ) CALL timing_stop('ahini_for_at') 516 ! 517 END SUBROUTINE ahini_for_at 518 519 !=============================================================================== 520 SUBROUTINE anw_infsup( p_alknw_inf, p_alknw_sup ) 521 522 ! Subroutine returns the lower and upper bounds of "non-water-selfionization" 523 ! contributions to total alkalinity (the infimum and the supremum), i.e 524 ! inf(TA - [OH-] + [H+]) and sup(TA - [OH-] + [H+]) 525 526 ! Argument variables 527 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(OUT) :: p_alknw_inf 528 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(OUT) :: p_alknw_sup 529 530 p_alknw_inf(:,:,:) = -trb(:,:,:,jppo4) * 1000. / (rhop(:,:,:) + rtrn) - sulfat(:,:,:) & 531 & - fluorid(:,:,:) 532 p_alknw_sup(:,:,:) = (2. * trb(:,:,:,jpdic) + 2. * trb(:,:,:,jppo4) + trb(:,:,:,jpsil) ) & 533 & * 1000. / (rhop(:,:,:) + rtrn) + borat(:,:,:) 534 535 END SUBROUTINE anw_infsup 536 537 538 SUBROUTINE solve_at_general( p_hini, zhi ) 539 540 ! Universal pH solver that converges from any given initial value, 541 ! determines upper an lower bounds for the solution if required 542 543 ! Argument variables 544 !-------------------- 545 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(IN) :: p_hini 546 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(OUT) :: zhi 547 548 ! Local variables 549 !----------------- 550 INTEGER :: ji, jj, jk, jn 551 REAL(wp) :: zh_ini, zh, zh_prev, zh_lnfactor 552 REAL(wp) :: zdelta, zh_delta 553 REAL(wp) :: zeqn, zdeqndh, zalka 554 REAL(wp) :: aphscale 555 REAL(wp) :: znumer_dic, zdnumer_dic, zdenom_dic, zalk_dic, zdalk_dic 556 REAL(wp) :: znumer_bor, zdnumer_bor, zdenom_bor, zalk_bor, zdalk_bor 557 REAL(wp) :: znumer_po4, zdnumer_po4, zdenom_po4, zalk_po4, zdalk_po4 558 REAL(wp) :: znumer_sil, zdnumer_sil, zdenom_sil, zalk_sil, zdalk_sil 559 REAL(wp) :: znumer_so4, zdnumer_so4, zdenom_so4, zalk_so4, zdalk_so4 560 REAL(wp) :: znumer_flu, zdnumer_flu, zdenom_flu, zalk_flu, zdalk_flu 561 REAL(wp) :: zalk_wat, zdalk_wat 562 REAL(wp) :: zfact, p_alktot, zdic, zbot, zpt, zst, zft, zsit 563 LOGICAL :: l_exitnow 564 REAL(wp), PARAMETER :: pz_exp_threshold = 1.0 565 REAL(wp), POINTER, DIMENSION(:,:,:) :: zalknw_inf, zalknw_sup, rmask, zh_min, zh_max, zeqn_absmin 566 567 IF( nn_timing == 1 ) CALL timing_start('solve_at_general') 568 ! Allocate temporary workspace 569 CALL wrk_alloc( jpi, jpj, jpk, zalknw_inf, zalknw_sup, rmask ) 570 CALL wrk_alloc( jpi, jpj, jpk, zh_min, zh_max, zeqn_absmin ) 571 572 CALL anw_infsup( zalknw_inf, zalknw_sup ) 573 574 rmask(:,:,:) = tmask(:,:,:) 575 zhi(:,:,:) = 0. 576 577 ! TOTAL H+ scale: conversion factor for Htot = aphscale * Hfree 578 DO jk = 1, jpk 579 DO jj = 1, jpj 580 DO ji = 1, jpi 581 IF (rmask(ji,jj,jk) == 1.) THEN 582 p_alktot = trb(ji,jj,jk,jptal) * 1000. / (rhop(ji,jj,jk) + rtrn) 583 aphscale = 1. + sulfat(ji,jj,jk)/aks3(ji,jj,jk) 584 zh_ini = p_hini(ji,jj,jk) 585 586 zdelta = (p_alktot-zalknw_inf(ji,jj,jk))**2 + 4.*akw3(ji,jj,jk)/aphscale 587 588 IF(p_alktot >= zalknw_inf(ji,jj,jk)) THEN 589 zh_min(ji,jj,jk) = 2.*akw3(ji,jj,jk) /( p_alktot-zalknw_inf(ji,jj,jk) + SQRT(zdelta) ) 590 ELSE 591 zh_min(ji,jj,jk) = aphscale*(-(p_alktot-zalknw_inf(ji,jj,jk)) + SQRT(zdelta) ) / 2. 592 ENDIF 593 594 zdelta = (p_alktot-zalknw_sup(ji,jj,jk))**2 + 4.*akw3(ji,jj,jk)/aphscale 595 596 IF(p_alktot <= zalknw_sup(ji,jj,jk)) THEN 597 zh_max(ji,jj,jk) = aphscale*(-(p_alktot-zalknw_sup(ji,jj,jk)) + SQRT(zdelta) ) / 2. 598 ELSE 599 zh_max(ji,jj,jk) = 2.*akw3(ji,jj,jk) /( p_alktot-zalknw_sup(ji,jj,jk) + SQRT(zdelta) ) 600 ENDIF 601 602 zhi(ji,jj,jk) = MAX(MIN(zh_max(ji,jj,jk), zh_ini), zh_min(ji,jj,jk)) 603 ENDIF 604 END DO 605 END DO 606 END DO 607 608 zeqn_absmin(:,:,:) = HUGE(1._wp) 609 610 DO jn = 1, jp_maxniter_atgen 611 DO jk = 1, jpk 612 DO jj = 1, jpj 613 DO ji = 1, jpi 614 IF (rmask(ji,jj,jk) == 1.) THEN 615 zfact = rhop(ji,jj,jk) / 1000. + rtrn 616 p_alktot = trb(ji,jj,jk,jptal) / zfact 617 zdic = trb(ji,jj,jk,jpdic) / zfact 618 zbot = borat(ji,jj,jk) 619 zpt = trb(ji,jj,jk,jppo4) / zfact * po4r 620 zsit = trb(ji,jj,jk,jpsil) / zfact 621 zst = sulfat (ji,jj,jk) 622 zft = fluorid(ji,jj,jk) 623 aphscale = 1. + sulfat(ji,jj,jk)/aks3(ji,jj,jk) 624 zh = zhi(ji,jj,jk) 625 zh_prev = zh 626 627 ! H2CO3 - HCO3 - CO3 : n=2, m=0 628 znumer_dic = 2.*ak13(ji,jj,jk)*ak23(ji,jj,jk) + zh*ak13(ji,jj,jk) 629 zdenom_dic = ak13(ji,jj,jk)*ak23(ji,jj,jk) + zh*(ak13(ji,jj,jk) + zh) 630 zalk_dic = zdic * (znumer_dic/zdenom_dic) 631 zdnumer_dic = ak13(ji,jj,jk)*ak13(ji,jj,jk)*ak23(ji,jj,jk) + zh & 632 *(4.*ak13(ji,jj,jk)*ak23(ji,jj,jk) + zh*ak13(ji,jj,jk)) 633 zdalk_dic = -zdic*(zdnumer_dic/zdenom_dic**2) 634 635 636 ! B(OH)3 - B(OH)4 : n=1, m=0 637 znumer_bor = akb3(ji,jj,jk) 638 zdenom_bor = akb3(ji,jj,jk) + zh 639 zalk_bor = zbot * (znumer_bor/zdenom_bor) 640 zdnumer_bor = akb3(ji,jj,jk) 641 zdalk_bor = -zbot*(zdnumer_bor/zdenom_bor**2) 642 643 644 ! H3PO4 - H2PO4 - HPO4 - PO4 : n=3, m=1 645 znumer_po4 = 3.*ak1p3(ji,jj,jk)*ak2p3(ji,jj,jk)*ak3p3(ji,jj,jk) & 646 & + zh*(2.*ak1p3(ji,jj,jk)*ak2p3(ji,jj,jk) + zh* ak1p3(ji,jj,jk)) 647 zdenom_po4 = ak1p3(ji,jj,jk)*ak2p3(ji,jj,jk)*ak3p3(ji,jj,jk) & 648 & + zh*( ak1p3(ji,jj,jk)*ak2p3(ji,jj,jk) + zh*(ak1p3(ji,jj,jk) + zh)) 649 zalk_po4 = zpt * (znumer_po4/zdenom_po4 - 1.) ! Zero level of H3PO4 = 1 650 zdnumer_po4 = ak1p3(ji,jj,jk)*ak2p3(ji,jj,jk)*ak1p3(ji,jj,jk)*ak2p3(ji,jj,jk)*ak3p3(ji,jj,jk) & 651 & + zh*(4.*ak1p3(ji,jj,jk)*ak1p3(ji,jj,jk)*ak2p3(ji,jj,jk)*ak3p3(ji,jj,jk) & 652 & + zh*(9.*ak1p3(ji,jj,jk)*ak2p3(ji,jj,jk)*ak3p3(ji,jj,jk) & 653 & + ak1p3(ji,jj,jk)*ak1p3(ji,jj,jk)*ak2p3(ji,jj,jk) & 654 & + zh*(4.*ak1p3(ji,jj,jk)*ak2p3(ji,jj,jk) + zh * ak1p3(ji,jj,jk) ) ) ) 655 zdalk_po4 = -zpt * (zdnumer_po4/zdenom_po4**2) 656 657 ! H4SiO4 - H3SiO4 : n=1, m=0 658 znumer_sil = aksi3(ji,jj,jk) 659 zdenom_sil = aksi3(ji,jj,jk) + zh 660 zalk_sil = zsit * (znumer_sil/zdenom_sil) 661 zdnumer_sil = aksi3(ji,jj,jk) 662 zdalk_sil = -zsit * (zdnumer_sil/zdenom_sil**2) 663 664 ! HSO4 - SO4 : n=1, m=1 665 aphscale = 1.0 + zst/aks3(ji,jj,jk) 666 znumer_so4 = aks3(ji,jj,jk) * aphscale 667 zdenom_so4 = aks3(ji,jj,jk) * aphscale + zh 668 zalk_so4 = zst * (znumer_so4/zdenom_so4 - 1.) 669 zdnumer_so4 = aks3(ji,jj,jk) 670 zdalk_so4 = -zst * (zdnumer_so4/zdenom_so4**2) 671 672 ! HF - F : n=1, m=1 673 znumer_flu = akf3(ji,jj,jk) 674 zdenom_flu = akf3(ji,jj,jk) + zh 675 zalk_flu = zft * (znumer_flu/zdenom_flu - 1.) 676 zdnumer_flu = akf3(ji,jj,jk) 677 zdalk_flu = -zft * (zdnumer_flu/zdenom_flu**2) 678 679 ! H2O - OH 680 aphscale = 1.0 + zst/aks3(ji,jj,jk) 681 zalk_wat = akw3(ji,jj,jk)/zh - zh/aphscale 682 zdalk_wat = -akw3(ji,jj,jk)/zh**2 - 1./aphscale 683 684 ! CALCULATE [ALK]([CO3--], [HCO3-]) 685 zeqn = zalk_dic + zalk_bor + zalk_po4 + zalk_sil & 686 & + zalk_so4 + zalk_flu & 687 & + zalk_wat - p_alktot 688 689 zalka = p_alktot - (zalk_bor + zalk_po4 + zalk_sil & 690 & + zalk_so4 + zalk_flu + zalk_wat) 691 692 zdeqndh = zdalk_dic + zdalk_bor + zdalk_po4 + zdalk_sil & 693 & + zdalk_so4 + zdalk_flu + zdalk_wat 694 695 ! Adapt bracketing interval 696 IF(zeqn > 0._wp) THEN 697 zh_min(ji,jj,jk) = zh_prev 698 ELSEIF(zeqn < 0._wp) THEN 699 zh_max(ji,jj,jk) = zh_prev 700 ENDIF 701 702 IF(ABS(zeqn) >= 0.5_wp*zeqn_absmin(ji,jj,jk)) THEN 703 ! if the function evaluation at the current point is 704 ! not decreasing faster than with a bisection step (at least linearly) 705 ! in absolute value take one bisection step on [ph_min, ph_max] 706 ! ph_new = (ph_min + ph_max)/2d0 707 ! 708 ! In terms of [H]_new: 709 ! [H]_new = 10**(-ph_new) 710 ! = 10**(-(ph_min + ph_max)/2d0) 711 ! = SQRT(10**(-(ph_min + phmax))) 712 ! = SQRT(zh_max * zh_min) 713 zh = SQRT(zh_max(ji,jj,jk) * zh_min(ji,jj,jk)) 714 zh_lnfactor = (zh - zh_prev)/zh_prev ! Required to test convergence below 715 ELSE 716 ! dzeqn/dpH = dzeqn/d[H] * d[H]/dpH 717 ! = -zdeqndh * LOG(10) * [H] 718 ! \Delta pH = -zeqn/(zdeqndh*d[H]/dpH) = zeqn/(zdeqndh*[H]*LOG(10)) 719 ! 720 ! pH_new = pH_old + \deltapH 721 ! 722 ! [H]_new = 10**(-pH_new) 723 ! = 10**(-pH_old - \Delta pH) 724 ! = [H]_old * 10**(-zeqn/(zdeqndh*[H]_old*LOG(10))) 725 ! = [H]_old * EXP(-LOG(10)*zeqn/(zdeqndh*[H]_old*LOG(10))) 726 ! = [H]_old * EXP(-zeqn/(zdeqndh*[H]_old)) 727 728 zh_lnfactor = -zeqn/(zdeqndh*zh_prev) 729 730 IF(ABS(zh_lnfactor) > pz_exp_threshold) THEN 731 zh = zh_prev*EXP(zh_lnfactor) 732 ELSE 733 zh_delta = zh_lnfactor*zh_prev 734 zh = zh_prev + zh_delta 735 ENDIF 736 737 IF( zh < zh_min(ji,jj,jk) ) THEN 738 ! if [H]_new < [H]_min 739 ! i.e., if ph_new > ph_max then 740 ! take one bisection step on [ph_prev, ph_max] 741 ! ph_new = (ph_prev + ph_max)/2d0 742 ! In terms of [H]_new: 743 ! [H]_new = 10**(-ph_new) 744 ! = 10**(-(ph_prev + ph_max)/2d0) 745 ! = SQRT(10**(-(ph_prev + phmax))) 746 ! = SQRT([H]_old*10**(-ph_max)) 747 ! = SQRT([H]_old * zh_min) 748 zh = SQRT(zh_prev * zh_min(ji,jj,jk)) 749 zh_lnfactor = (zh - zh_prev)/zh_prev ! Required to test convergence below 750 ENDIF 751 752 IF( zh > zh_max(ji,jj,jk) ) THEN 753 ! if [H]_new > [H]_max 754 ! i.e., if ph_new < ph_min, then 755 ! take one bisection step on [ph_min, ph_prev] 756 ! ph_new = (ph_prev + ph_min)/2d0 757 ! In terms of [H]_new: 758 ! [H]_new = 10**(-ph_new) 759 ! = 10**(-(ph_prev + ph_min)/2d0) 760 ! = SQRT(10**(-(ph_prev + ph_min))) 761 ! = SQRT([H]_old*10**(-ph_min)) 762 ! = SQRT([H]_old * zhmax) 763 zh = SQRT(zh_prev * zh_max(ji,jj,jk)) 764 zh_lnfactor = (zh - zh_prev)/zh_prev ! Required to test convergence below 765 ENDIF 766 ENDIF 767 768 zeqn_absmin(ji,jj,jk) = MIN( ABS(zeqn), zeqn_absmin(ji,jj,jk)) 769 770 ! Stop iterations once |\delta{[H]}/[H]| < rdel 771 ! <=> |(zh - zh_prev)/zh_prev| = |EXP(-zeqn/(zdeqndh*zh_prev)) -1| < rdel 772 ! |EXP(-zeqn/(zdeqndh*zh_prev)) -1| ~ |zeqn/(zdeqndh*zh_prev)| 773 774 ! Alternatively: 775 ! |\Delta pH| = |zeqn/(zdeqndh*zh_prev*LOG(10))| 776 ! ~ 1/LOG(10) * |\Delta [H]|/[H] 777 ! < 1/LOG(10) * rdel 778 779 ! Hence |zeqn/(zdeqndh*zh)| < rdel 780 781 ! rdel <-- pp_rdel_ah_target 782 l_exitnow = (ABS(zh_lnfactor) < pp_rdel_ah_target) 783 784 IF(l_exitnow) THEN 785 rmask(ji,jj,jk) = 0. 786 ENDIF 787 788 zhi(ji,jj,jk) = zh 789 790 IF(jn >= jp_maxniter_atgen) THEN 791 zhi(ji,jj,jk) = -1._wp 792 ENDIF 793 794 ENDIF 795 END DO 796 END DO 797 END DO 798 END DO 799 ! 800 CALL wrk_dealloc( jpi, jpj, jpk, zalknw_inf, zalknw_sup, rmask ) 801 CALL wrk_dealloc( jpi, jpj, jpk, zh_min, zh_max, zeqn_absmin ) 802 803 804 IF( nn_timing == 1 ) CALL timing_stop('solve_at_general') 805 806 807 END SUBROUTINE solve_at_general 319 808 320 809 INTEGER FUNCTION p4z_che_alloc() … … 322 811 !! *** ROUTINE p4z_che_alloc *** 323 812 !!---------------------------------------------------------------------- 324 ALLOCATE( sio3eq(jpi,jpj,jpk), fekeq(jpi,jpj,jpk), chemc(jpi,jpj,3), chemo2(jpi,jpj,jpk), & 325 & tempis(jpi,jpj,jpk), STAT=p4z_che_alloc ) 813 INTEGER :: ierr(3) ! Local variables 814 !!---------------------------------------------------------------------- 815 816 ierr(:) = 0 817 818 ALLOCATE( sio3eq(jpi,jpj,jpk), fekeq(jpi,jpj,jpk), chemc(jpi,jpj,3), chemo2(jpi,jpj,jpk), STAT=ierr(1) ) 819 820 ALLOCATE( akb3(jpi,jpj,jpk) , tempis(jpi, jpj, jpk), & 821 & akw3(jpi,jpj,jpk) , borat (jpi,jpj,jpk) , & 822 & aks3(jpi,jpj,jpk) , akf3(jpi,jpj,jpk) , & 823 & ak1p3(jpi,jpj,jpk) , ak2p3(jpi,jpj,jpk) , & 824 & ak3p3(jpi,jpj,jpk) , aksi3(jpi,jpj,jpk) , & 825 & fluorid(jpi,jpj,jpk) , sulfat(jpi,jpj,jpk) , & 826 & salinprac(jpi,jpj,jpk), STAT=ierr(2) ) 827 828 ALLOCATE( fesol(jpi,jpj,jpk,5), STAT=ierr(3) ) 829 830 !* Variable for chemistry of the CO2 cycle 831 p4z_che_alloc = MAXVAL( ierr ) 326 832 ! 327 833 IF( p4z_che_alloc /= 0 ) CALL ctl_warn('p4z_che_alloc : failed to allocate arrays.') … … 330 836 331 837 !!====================================================================== 332 END MODULE p4zche838 END MODULE p4zche -
branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zfechem.F90
r7068 r7162 5 5 !!====================================================================== 6 6 !! History : 3.5 ! 2012-07 (O. Aumont, A. Tagliabue, C. Ethe) Original code 7 !! 3.6 ! 2015-05 (O. Aumont) PISCES quota 7 8 !!---------------------------------------------------------------------- 8 9 !! p4z_fechem : Compute remineralization/scavenging of iron … … 13 14 USE trc ! passive tracers common variables 14 15 USE sms_pisces ! PISCES Source Minus Sink variables 15 USE p4zopt ! optical model16 16 USE p4zche ! chemical model 17 17 USE p4zsbc ! Boundary conditions from sediments … … 25 25 PUBLIC p4z_fechem_init ! called in trcsms_pisces.F90 26 26 27 LOGICAL :: ln_fechem !: boolean for complex iron chemistry following Tagliabue and voelker 28 LOGICAL :: ln_ligvar !: boolean for variable ligand concentration following Tagliabue and voelker 29 REAL(wp), PUBLIC :: xlam1 !: scavenging rate of Iron 30 REAL(wp), PUBLIC :: xlamdust !: scavenging rate of Iron by dust 31 REAL(wp), PUBLIC :: ligand !: ligand concentration in the ocean 32 33 !!gm Not DOCTOR norm !!! 27 !! * Shared module variables 28 LOGICAL :: ln_fechem !: boolean for complex iron chemistry following Tagliabue and voelker 29 LOGICAL :: ln_ligvar !: boolean for variable ligand concentration following Tagliabue and voelker 30 LOGICAL :: ln_fecolloid !: boolean for variable colloidal fraction 31 REAL(wp), PUBLIC :: xlam1 !: scavenging rate of Iron 32 REAL(wp), PUBLIC :: xlamdust !: scavenging rate of Iron by dust 33 REAL(wp), PUBLIC :: ligand !: ligand concentration in the ocean 34 REAL(wp), PUBLIC :: kfep !: rate constant for nanoparticle formation 35 34 36 REAL(wp) :: kl1, kl2, kb1, kb2, ks, kpr, spd, con, kth 35 37 … … 54 56 !! and one particulate form (ln_fechem) 55 57 !!--------------------------------------------------------------------- 56 INTEGER, INTENT(in) :: kt, knt ! ocean time step57 !58 INTEGER :: ji, jj, jk, jic59 CHARACTER (len=25) :: charout58 ! 59 INTEGER, INTENT(in) :: kt, knt ! ocean time step 60 ! 61 INTEGER :: ji, jj, jk, jic, jn 60 62 REAL(wp) :: zdep, zlam1a, zlam1b, zlamfac 61 REAL(wp) :: zkeq, zfeequi, zfesatur, zfecoll 63 REAL(wp) :: zkeq, zfeequi, zfesatur, zfecoll, fe3sol 62 64 REAL(wp) :: zdenom1, zscave, zaggdfea, zaggdfeb, zcoag 63 65 REAL(wp) :: ztrc, zdust 64 REAL(wp) :: zdenom , zdenom265 REAL(wp) , POINTER, DIMENSION(:,:,:) :: zTL1, zFe3, ztotlig66 REAL(wp) , POINTER, DIMENSION(:,:,:) :: zFeL1, zFeL2, zTL2, zFe2, zFeP66 REAL(wp) :: zdenom2 67 REAL(wp) :: zzFeL1, zzFeL2, zzFe2, zzFeP, zzFe3, zzstrn2 68 REAL(wp) :: zrum, zcodel, zargu, zlight 67 69 REAL(wp) :: zkox, zkph1, zkph2, zph, zionic, ztligand 68 70 REAL(wp) :: za, zb, zc, zkappa1, zkappa2, za0, za1, za2 69 71 REAL(wp) :: zxs, zfunc, zp, zq, zd, zr, zphi, zfff, zp3, zq2 70 REAL(wp) :: ztfe, zoxy 72 REAL(wp) :: ztfe, zoxy, zhplus 73 REAL(wp) :: zaggliga, zaggligb 74 REAL(wp) :: dissol, zligco 75 CHARACTER (len=25) :: charout 76 REAL(wp), POINTER, DIMENSION(:,:,:) :: zTL1, zFe3, ztotlig, precip 77 REAL(wp), POINTER, DIMENSION(:,:,:) :: zFeL1, zFeL2, zTL2, zFe2, zFeP 78 REAL(wp), POINTER, DIMENSION(:,: ) :: zstrn, zstrn2 71 79 !!--------------------------------------------------------------------- 72 80 ! 73 81 IF( nn_timing == 1 ) CALL timing_start('p4z_fechem') 74 82 ! 75 CALL wrk_alloc( jpi,jpj,jpk, zFe3, zFeL1, zTL1, ztotlig ) 83 ! Allocate temporary workspace 84 CALL wrk_alloc( jpi, jpj, jpk, zFe3, zFeL1, zTL1, ztotlig, precip ) 76 85 zFe3 (:,:,:) = 0. 77 86 zFeL1(:,:,:) = 0. 78 87 zTL1 (:,:,:) = 0. 79 88 IF( ln_fechem ) THEN 80 CALL wrk_alloc( jpi,jpj,jpk, zFe2, zFeL2, zTL2, zFeP ) 89 CALL wrk_alloc( jpi, jpj, zstrn, zstrn2 ) 90 CALL wrk_alloc( jpi, jpj, jpk, zFe2, zFeL2, zTL2, zFeP ) 81 91 zFe2 (:,:,:) = 0. 82 92 zFeL2(:,:,:) = 0. … … 92 102 ztotlig(:,:,:) = MIN( ztotlig(:,:,:), 10. ) 93 103 ELSE 94 ztotlig(:,:,:) = ligand * 1E9 104 IF( ln_ligand ) THEN ; ztotlig(:,:,:) = trb(:,:,:,jplgw) * 1E9 105 ELSE ; ztotlig(:,:,:) = ligand * 1E9 106 ENDIF 95 107 ENDIF 96 108 97 109 IF( ln_fechem ) THEN 110 ! compute the day length depending on latitude and the day 111 zrum = REAL( nday_year - 80, wp ) / REAL( nyear_len(1), wp ) 112 zcodel = ASIN( SIN( zrum * rpi * 2._wp ) * SIN( rad * 23.5_wp ) ) 113 114 ! day length in hours 115 zstrn(:,:) = 0. 116 DO jj = 1, jpj 117 DO ji = 1, jpi 118 zargu = TAN( zcodel ) * TAN( gphit(ji,jj) * rad ) 119 zargu = MAX( -1., MIN( 1., zargu ) ) 120 zstrn(ji,jj) = MAX( 0.0, 24. - 2. * ACOS( zargu ) / rad / 15. ) 121 END DO 122 END DO 123 124 ! Maximum light intensity 125 zstrn2(:,:) = zstrn(:,:) / 24. 126 WHERE( zstrn(:,:) < 1.e0 ) zstrn(:,:) = 24. 127 zstrn(:,:) = 24. / zstrn(:,:) 128 98 129 ! ------------------------------------------------------------ 99 130 ! NEW FE CHEMISTRY ROUTINE from Tagliabue and Volker (2009) … … 101 132 ! Chemistry is supposed to be fast enough to be at equilibrium 102 133 ! ------------------------------------------------------------ 103 DO jk = 1, jpkm1 134 DO jn = 1, 2 135 DO jk = 1, jpkm1 104 136 DO jj = 1, jpj 105 137 DO ji = 1, jpi 138 zlight = etot(ji,jj,jk) * zstrn(ji,jj) * float(2-jn) 139 zzstrn2 = zstrn2(ji,jj) * float(2-jn) + (1. - zstrn2(ji,jj) ) * float(jn-1) 106 140 ! Calculate ligand concentrations : assume 2/3rd of excess goes to 107 141 ! strong ligands (L1) and 1/3rd to weak ligands (L2) … … 110 144 zTL2(ji,jj,jk) = ligand * 1E9 - 0.000001 + 0.33 * ztligand 111 145 ! ionic strength from Millero et al. 1987 112 zionic = 19.9201 * tsn(ji,jj,jk,jp_sal) / ( 1000. - 1.00488 * tsn(ji,jj,jk,jp_sal) + rtrn )113 146 zph = -LOG10( MAX( hi(ji,jj,jk), rtrn) ) 114 zoxy = trb(ji,jj,jk,jpoxy) * ( rhop(ji,jj,jk) / 1.e3 )147 zoxy = trb(ji,jj,jk,jpoxy) 115 148 ! Fe2+ oxydation rate from Santana-Casiano et al. (2005) 116 zkox = 35.407 - 6.7109 * zph + 0.5342 * zph * zph - 5362.6 / ( t sn(ji,jj,jk,jp_tem) + 273.15 ) &117 & - 0.04406 * SQRT( tsn(ji,jj,jk,jp_sal) ) - 0.002847 * tsn(ji,jj,jk,jp_sal)149 zkox = 35.407 - 6.7109 * zph + 0.5342 * zph * zph - 5362.6 / ( tempis(ji,jj,jk) + 273.15 ) & 150 & - 0.04406 * SQRT( salinprac(ji,jj,jk) ) - 0.002847 * salinprac(ji,jj,jk) 118 151 zkox = ( 10.** zkox ) * spd 119 152 zkox = zkox * MAX( 1.e-6, zoxy) / ( chemo2(ji,jj,jk) + rtrn ) 120 153 ! PHOTOREDUCTION of complexed iron : Tagliabue and Arrigo (2006) 121 zkph2 = MAX( 0., 15. * etot(ji,jj,jk) / ( etot(ji,jj,jk) + 2. ))154 zkph2 = MAX( 0., 15. * zlight / ( zlight + 2. ) ) * (1. - fr_i(ji,jj)) 122 155 zkph1 = zkph2 / 5. 123 156 ! pass the dfe concentration from PISCES … … 165 198 ENDIF 166 199 ! solve for the other Fe species 167 z Fe3(ji,jj,jk) = MAX( 0., zxs )168 z Fep(ji,jj,jk) = MAX( 0., ( ks * zFe3(ji,jj,jk)/ kpr ) )200 zzFe3 = MAX( 0., zxs ) 201 zzFep = MAX( 0., ( ks * zzFe3 / kpr ) ) 169 202 zkappa2 = ( kb2 + zkph2 ) / kl2 170 zFeL2(ji,jj,jk) = MAX( 0., ( zFe3(ji,jj,jk) * zTL2(ji,jj,jk) ) / ( zkappa2 + zFe3(ji,jj,jk) ) ) 171 zFeL1(ji,jj,jk) = MAX( 0., ( ztfe / zb - za / zb * zFe3(ji,jj,jk) - zc / zb * zFeL2(ji,jj,jk) ) ) 172 zFe2 (ji,jj,jk) = MAX( 0., ( ( zkph1 * zFeL1(ji,jj,jk) + zkph2 * zFeL2(ji,jj,jk) ) / zkox ) ) 203 zzFeL2 = MAX( 0., ( zzFe3 * zTL2(ji,jj,jk) ) / ( zkappa2 + zzFe3 ) ) 204 zzFeL1 = MAX( 0., ( ztfe / zb - za / zb * zzFe3 - zc / zb * zzFeL2 ) ) 205 zzFe2 = MAX( 0., ( ( zkph1 * zzFeL1 + zkph2 * zzFeL2 ) / zkox ) ) 206 zFe3(ji,jj,jk) = zFe3(ji,jj,jk) + zzFe3 * zzstrn2 207 zFe2(ji,jj,jk) = zFe2(ji,jj,jk) + zzFe2 * zzstrn2 208 zFeL2(ji,jj,jk) = zFeL2(ji,jj,jk) + zzFeL2 * zzstrn2 209 zFeL1(ji,jj,jk) = zFeL1(ji,jj,jk) + zzFeL1 * zzstrn2 210 zFeP(ji,jj,jk) = zFeP(ji,jj,jk) + zzFeP * zzstrn2 173 211 END DO 174 212 END DO 213 END DO 175 214 END DO 176 215 ELSE … … 198 237 ! 199 238 ENDIF 200 ! 239 201 240 zdust = 0. ! if no dust available 202 !203 241 DO jk = 1, jpkm1 204 242 DO jj = 1, jpj … … 212 250 zfecoll = ( 0.3 * zFeL1(ji,jj,jk) + 0.5 * zFeL2(ji,jj,jk) ) * 1E-9 213 251 ELSE 214 zfeequi = zFe3(ji,jj,jk) * 1E-9 215 zfecoll = 0.5 * zFeL1(ji,jj,jk) * 1E-9 252 IF (ln_fecolloid) THEN 253 zfeequi = zFe3(ji,jj,jk) * 1E-9 254 zhplus = max( rtrn, hi(ji,jj,jk) ) 255 fe3sol = fesol(ji,jj,jk,1) * ( fesol(ji,jj,jk,2) * zhplus**2 & 256 & + fesol(ji,jj,jk,3) * zhplus + fesol(ji,jj,jk,4) & 257 & + fesol(ji,jj,jk,5) / zhplus ) 258 zfecoll = max( ( 0.1 * zFeL1(ji,jj,jk) * 1E-9 ), ( zFeL1(ji,jj,jk) * 1E-9 -fe3sol ) ) 259 ELSE 260 zfeequi = zFe3(ji,jj,jk) * 1E-9 261 zfecoll = 0.5 * zFeL1(ji,jj,jk) * 1E-9 262 fe3sol = 0. 263 kfep = 0. 264 ENDIF 216 265 ENDIF 217 218 ztrc = ( trb(ji,jj,jk,jppoc) + trb(ji,jj,jk,jpgoc) + trb(ji,jj,jk,jpcal) + trb(ji,jj,jk,jpgsi) ) * 1.e6 266 ztrc = ( trb(ji,jj,jk,jppoc) + trb(ji,jj,jk,jpgoc) + trb(ji,jj,jk,jpcal) + trb(ji,jj,jk,jpgsi) ) * 1.e6 219 267 IF( ln_dust ) zdust = dust(ji,jj) / ( wdust / rday ) * tmask(ji,jj,jk) ! dust in kg/m2/s 220 268 zlam1b = 3.e-5 + xlamdust * zdust + xlam1 * ztrc … … 232 280 zlamfac = MAX( 0.e0, ( gphit(ji,jj) + 55.) / 30. ) 233 281 zlamfac = MIN( 1. , zlamfac ) 234 !!gm very small BUG : it is unlikely but possible that gdept_n = 0 .....235 282 zdep = MIN( 1., 1000. / gdept_n(ji,jj,jk) ) 236 283 zlam1b = xlam1 * MAX( 0.e0, ( trb(ji,jj,jk,jpfer) * 1.e9 - ztotlig(ji,jj,jk) ) ) … … 242 289 ! ---------------------------------------------------------------- 243 290 zlam1a = ( 0.369 * 0.3 * trb(ji,jj,jk,jpdoc) + 102.4 * trb(ji,jj,jk,jppoc) ) * xdiss(ji,jj,jk) & 244 & + ( 114. * 0.3 * trb(ji,jj,jk,jpdoc) + 5.09E3 * trb(ji,jj,jk,jppoc))291 & + ( 114. * 0.3 * trb(ji,jj,jk,jpdoc) ) 245 292 zaggdfea = zlam1a * xstep * zfecoll 293 ! 246 294 zlam1b = 3.53E3 * trb(ji,jj,jk,jpgoc) * xdiss(ji,jj,jk) 247 295 zaggdfeb = zlam1b * xstep * zfecoll 248 296 ! 249 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zscave - zaggdfea - zaggdfeb - zcoag 297 ! precipitation of Fe3+, creation of nanoparticles 298 precip(ji,jj,jk) = MAX( 0., ( zfeequi - fe3sol ) ) * kfep * xstep 299 ! 300 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zscave - zaggdfea - zaggdfeb & 301 & - zcoag - precip(ji,jj,jk) 250 302 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zscave * zdenom1 + zaggdfea 251 303 tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zscave * zdenom2 + zaggdfeb 304 IF( ln_ligand ) THEN 305 zligco = MAX( ( 0.1 * trn(ji,jj,jk,jplgw) ), ( trn(ji,jj,jk,jplgw) - fe3sol ) ) 306 zaggliga = zlam1a * xstep * zligco 307 zaggligb = zlam1b * xstep * zligco 308 tra(ji,jj,jk,jpfep) = tra(ji,jj,jk,jpfep) + precip(ji,jj,jk) 309 tra(ji,jj,jk,jplgw) = tra(ji,jj,jk,jplgw) - zaggliga - zaggligb 310 ENDIF 252 311 END DO 253 312 END DO … … 256 315 ! Define the bioavailable fraction of iron 257 316 ! ---------------------------------------- 258 IF( ln_fechem ) THEN 259 biron(:,:,:) = MAX( 0., trb(:,:,:,jpfer) - zFeP(:,:,:) * 1E-9 ) 260 ELSE 261 biron(:,:,:) = trb(:,:,:,jpfer) 317 IF( ln_fechem ) THEN ; biron(:,:,:) = MAX( 0., trb(:,:,:,jpfer) - zFeP(:,:,:) * 1E-9 ) 318 ELSE ; biron(:,:,:) = trb(:,:,:,jpfer) 319 ENDIF 320 321 IF( ln_ligand .AND. .NOT.ln_fechem) THEN 322 plig(:,:,:) = MAX( 0., ( ( zFeL1(:,:,:) * 1E-9 ) / ( trn(:,:,:,jpfer) +rtrn ) ) ) 323 plig(:,:,:) = MAX( 0. , plig(:,:,:) ) 262 324 ENDIF 263 325 264 326 ! Output of some diagnostics variables 265 327 ! --------------------------------- 266 IF( lk_iomput .AND. knt == nrdttrc ) THEN 328 IF( lk_iomput ) THEN 329 IF( knt == nrdttrc ) THEN 267 330 IF( iom_use("Fe3") ) CALL iom_put("Fe3" , zFe3 (:,:,:) * tmask(:,:,:) ) ! Fe3+ 268 331 IF( iom_use("FeL1") ) CALL iom_put("FeL1" , zFeL1 (:,:,:) * tmask(:,:,:) ) ! FeL1 … … 276 339 IF( iom_use("TL2") ) CALL iom_put("TL2" , zTL2 (:,:,:) * tmask(:,:,:) ) ! TL2 277 340 ENDIF 341 ENDIF 278 342 ENDIF 279 343 … … 284 348 ENDIF 285 349 ! 286 CALL wrk_dealloc( jpi, jpj, jpk, zFe3, zFeL1, zTL1, ztotlig ) 287 IF( ln_fechem ) CALL wrk_dealloc( jpi, jpj, jpk, zFe2, zFeL2, zTL2, zFeP ) 350 CALL wrk_dealloc( jpi, jpj, jpk, zFe3, zFeL1, zTL1, ztotlig, precip ) 351 IF( ln_fechem ) THEN 352 CALL wrk_dealloc( jpi, jpj, zstrn, zstrn2 ) 353 CALL wrk_dealloc( jpi, jpj, jpk, zFe2, zFeL2, zTL2, zFeP ) 354 ENDIF 288 355 ! 289 356 IF( nn_timing == 1 ) CALL timing_stop('p4z_fechem') … … 304 371 !! 305 372 !!---------------------------------------------------------------------- 306 NAMELIST/nampisfer/ ln_fechem, ln_ligvar, xlam1, xlamdust, ligand373 NAMELIST/nampisfer/ ln_fechem, ln_ligvar, ln_fecolloid, xlam1, xlamdust, ligand, kfep 307 374 INTEGER :: ios ! Local integer output status for namelist read 308 375 … … 320 387 WRITE(numout,*) ' Namelist parameters for Iron chemistry, nampisfer' 321 388 WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' 322 WRITE(numout,*) ' enable complex iron chemistry scheme ln_fechem =', ln_fechem 323 WRITE(numout,*) ' variable concentration of ligand ln_ligvar =', ln_ligvar 324 WRITE(numout,*) ' scavenging rate of Iron xlam1 =', xlam1 325 WRITE(numout,*) ' scavenging rate of Iron by dust xlamdust =', xlamdust 326 WRITE(numout,*) ' ligand concentration in the ocean ligand =', ligand 389 WRITE(numout,*) ' enable complex iron chemistry scheme ln_fechem =', ln_fechem 390 WRITE(numout,*) ' variable concentration of ligand ln_ligvar =', ln_ligvar 391 WRITE(numout,*) ' Variable colloidal fraction of Fe3+ ln_fecolloid =', ln_fecolloid 392 WRITE(numout,*) ' scavenging rate of Iron xlam1 =', xlam1 393 WRITE(numout,*) ' scavenging rate of Iron by dust xlamdust =', xlamdust 394 WRITE(numout,*) ' ligand concentration in the ocean ligand =', ligand 395 WRITE(numout,*) ' rate constant for nanoparticle formation kfep =', kfep 327 396 ENDIF 328 397 ! … … 353 422 ! 354 423 END SUBROUTINE p4z_fechem_init 355 356 424 !!====================================================================== 357 425 END MODULE p4zfechem -
branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zflx.F90
r7068 r7162 22 22 USE iom ! I/O manager 23 23 USE fldread ! read input fields 24 USE sbc_oce, ONLY : atm_co2 ! atmospheric pCO225 24 26 25 IMPLICIT NONE … … 42 41 43 42 ! !!* nampisatm namelist (Atmospheric PRessure) * 44 LOGICAL, PUBLIC :: ln_presatm !: ref. pressure: global mean Patm (F) or a constant (F)45 46 REAL(wp) , ALLOCATABLE, SAVE, DIMENSION(:,:) :: patm ! atmospheric pressure at kt [N/m2] 47 TYPE(FLD), ALLOCATABLE, DIMENSION(:) :: sf_patm ! structure of input fields (file informations, fields read)48 49 50 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: oce_co2 !: ocean carbon flux 43 LOGICAL, PUBLIC :: ln_presatm !: ref. pressure: global mean Patm (F) or a constant (F) 44 LOGICAL, PUBLIC :: ln_presatmco2 !: accounting for spatial atm CO2 in the compuation of carbon flux (T) or not (F) 45 46 REAL(wp) , ALLOCATABLE, SAVE, DIMENSION(:,:) :: patm ! atmospheric pressure at kt [N/m2] 47 TYPE(FLD), ALLOCATABLE, DIMENSION(:) :: sf_patm ! structure of input fields (file informations, fields read) 48 TYPE(FLD), ALLOCATABLE, DIMENSION(:) :: sf_atmco2 ! structure of input fields (file informations, fields read) 49 51 50 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: satmco2 !: atmospheric pco2 52 51 … … 68 67 !! ** Method : 69 68 !! - Include total atm P correction via Esbensen & Kushnir (1981) 70 !! - Pressure correction NOT done for key_cpl_carbon_cycle71 69 !! - Remove Wanninkhof chemical enhancement; 72 70 !! - Add option for time-interpolation of atcco2.txt … … 79 77 REAL(wp) :: zfld, zflu, zfld16, zflu16, zfact 80 78 REAL(wp) :: zvapsw, zsal, zfco2, zxc2, xCO2approx, ztkel, zfugcoeff 81 REAL(wp) :: zph, z ah2, zbot, zdic, zalk, zsch_o2, zalka, zsch_co279 REAL(wp) :: zph, zdic, zsch_o2, zsch_co2 82 80 REAL(wp) :: zyr_dec, zdco2dt 83 81 CHARACTER (len=25) :: charout … … 94 92 ! IS USED TO COMPUTE AIR-SEA FLUX OF CO2 95 93 96 IF( kt /= nit000 .AND. knt == 1 ) CALL p4z_patm( kt ) ! Get sea-level pressure (E&K [1981] climatology) for use in flux calcs97 98 IF( ln_co2int ) THEN94 IF( kt /= nit000 .AND. .NOT.l_co2cpl .AND. knt == 1 ) CALL p4z_patm( kt ) ! Get sea-level pressure (E&K [1981] climatology) for use in flux calcs 95 96 IF( ln_co2int .AND. .NOT.ln_presatmco2 .AND. .NOT.l_co2cpl ) THEN 99 97 ! Linear temporal interpolation of atmospheric pco2. atcco2.txt has annual values. 100 98 ! Caveats: First column of .txt must be in years, decimal years preferably. … … 110 108 ENDIF 111 109 112 ! IF( ln_cpl_carbon_cycle ) satmco2(:,:) = atm_co2(:,:) 113 114 DO jm = 1, 10 115 DO jj = 1, jpj 116 DO ji = 1, jpi 117 118 ! DUMMY VARIABLES FOR DIC, H+, AND BORATE 119 zbot = borat(ji,jj,1) 120 zfact = rhop(ji,jj,1) / 1000. + rtrn 121 zdic = trb(ji,jj,1,jpdic) / zfact 122 zph = MAX( hi(ji,jj,1), 1.e-10 ) / zfact 123 zalka = trb(ji,jj,1,jptal) / zfact 124 125 ! CALCULATE [ALK]([CO3--], [HCO3-]) 126 zalk = zalka - ( akw3(ji,jj,1) / zph - zph / aphscale(ji,jj,1) & 127 & + zbot / ( 1.+ zph / akb3(ji,jj,1) ) ) 128 129 ! CALCULATE [H+] AND [H2CO3] 130 zah2 = SQRT( (zdic-zalk)**2 + 4.* ( zalk * ak23(ji,jj,1) & 131 & / ak13(ji,jj,1) ) * ( 2.* zdic - zalk ) ) 132 zah2 = 0.5 * ak13(ji,jj,1) / zalk * ( ( zdic - zalk ) + zah2 ) 133 zh2co3(ji,jj) = ( 2.* zdic - zalk ) / ( 2.+ ak13(ji,jj,1) / zah2 ) * zfact 134 hi(ji,jj,1) = zah2 * zfact 135 END DO 110 IF( l_co2cpl ) satmco2(:,:) = atm_co2(:,:) 111 112 DO jj = 1, jpj 113 DO ji = 1, jpi 114 ! DUMMY VARIABLES FOR DIC, H+, AND BORATE 115 zfact = rhop(ji,jj,1) / 1000. + rtrn 116 zdic = trb(ji,jj,1,jpdic) 117 zph = MAX( hi(ji,jj,1), 1.e-10 ) / zfact 118 ! CALCULATE [H2CO3] 119 zh2co3(ji,jj) = zdic/(1. + ak13(ji,jj,1)/zph + ak13(ji,jj,1)*ak23(ji,jj,1)/zph**2) 136 120 END DO 137 121 END DO 138 139 122 140 123 ! -------------- … … 165 148 END DO 166 149 150 167 151 DO jj = 1, jpj 168 152 DO ji = 1, jpi 169 ztkel = tsn(ji,jj,1,jp_tem) + 273.15170 zsal = tsn(ji,jj,1,jp_sal) + ( 1.- tmask(ji,jj,1) ) * 35.153 ztkel = tempis(ji,jj,1) + 273.15 154 zsal = salinprac(ji,jj,1) + ( 1.- tmask(ji,jj,1) ) * 35. 171 155 zvapsw = EXP(24.4543 - 67.4509*(100.0/ztkel) - 4.8489*LOG(ztkel/100) - 0.000544*zsal) 172 156 zpco2atm(ji,jj) = satmco2(ji,jj) * ( patm(ji,jj) - zvapsw ) … … 269 253 WRITE(numout,*) ' ' 270 254 ENDIF 271 IF( .NOT.ln_co2int) THEN255 IF( .NOT.ln_co2int .AND. .NOT.ln_presatmco2 ) THEN 272 256 IF(lwp) THEN ! control print 273 257 WRITE(numout,*) ' Constant Atmospheric pCO2 value atcco2 =', atcco2 … … 275 259 ENDIF 276 260 satmco2(:,:) = atcco2 ! Initialisation of atmospheric pco2 277 ELSE 261 ELSEIF( ln_co2int .AND. .NOT.ln_presatmco2 ) THEN 278 262 IF(lwp) THEN 279 263 WRITE(numout,*) ' Atmospheric pCO2 value from file clname =', TRIM( clname ) … … 297 281 END DO 298 282 CLOSE(numco2) 299 ENDIF 283 ELSEIF( .NOT.ln_co2int .AND. ln_presatmco2 ) THEN 284 IF(lwp) THEN 285 WRITE(numout,*) ' Spatialized Atmospheric pCO2 from an external file' 286 WRITE(numout,*) ' ' 287 ENDIF 288 ELSE 289 IF(lwp) THEN 290 WRITE(numout,*) ' Spatialized Atmospheric pCO2 from an external file' 291 WRITE(numout,*) ' ' 292 ENDIF 293 ENDIF 294 300 295 ! 301 296 oce_co2(:,:) = 0._wp ! Initialization of Flux of Carbon … … 323 318 CHARACTER(len=100) :: cn_dir ! Root directory for location of ssr files 324 319 TYPE(FLD_N) :: sn_patm ! informations about the fields to be read 325 !! 326 NAMELIST/nampisatm/ ln_presatm, sn_patm, cn_dir 320 TYPE(FLD_N) :: sn_atmco2 ! informations about the fields to be read 321 !! 322 NAMELIST/nampisatm/ ln_presatm, ln_presatmco2, sn_patm, sn_atmco2, cn_dir 327 323 328 324 ! ! ----------------------- ! … … 343 339 WRITE(numout,*) ' Namelist nampisatm : Atmospheric Pressure as external forcing' 344 340 WRITE(numout,*) ' constant atmopsheric pressure (F) or from a file (T) ln_presatm = ', ln_presatm 341 WRITE(numout,*) ' spatial atmopsheric CO2 for flux calcs ln_presatmco2 = ', ln_presatmco2 345 342 WRITE(numout,*) 346 343 ENDIF … … 355 352 ENDIF 356 353 ! 354 IF( ln_presatmco2 ) THEN 355 ALLOCATE( sf_atmco2(1), STAT=ierr ) !* allocate and fill sf_atmco2 (forcing structure) with sn_atmco2 356 IF( ierr > 0 ) CALL ctl_stop( 'STOP', 'p4z_flx: unable to allocate sf_atmco2 structure' ) 357 ! 358 CALL fld_fill( sf_atmco2, (/ sn_atmco2 /), cn_dir, 'p4z_flx', 'Atmospheric co2 partial pressure ', 'nampisatm' ) 359 ALLOCATE( sf_atmco2(1)%fnow(jpi,jpj,1) ) 360 IF( sn_atmco2%ln_tint ) ALLOCATE( sf_atmco2(1)%fdta(jpi,jpj,1,2) ) 361 ENDIF 362 ! 357 363 IF( .NOT.ln_presatm ) patm(:,:) = 1.e0 ! Initialize patm if no reading from a file 358 364 ! … … 364 370 ENDIF 365 371 ! 372 IF( ln_presatmco2 ) THEN 373 CALL fld_read( kt, 1, sf_atmco2 ) !* input atmco2 provided at kt + 1/2 374 satmco2(:,:) = sf_atmco2(1)%fnow(:,:,1) ! atmospheric pressure 375 ELSE 376 satmco2(:,:) = atcco2 ! Initialize atmco2 if no reading from a file 377 ENDIF 378 ! 366 379 END SUBROUTINE p4z_patm 367 380 381 368 382 INTEGER FUNCTION p4z_flx_alloc() 369 383 !!---------------------------------------------------------------------- 370 384 !! *** ROUTINE p4z_flx_alloc *** 371 385 !!---------------------------------------------------------------------- 372 ALLOCATE( oce_co2(jpi,jpj),satmco2(jpi,jpj), patm(jpi,jpj), STAT=p4z_flx_alloc )386 ALLOCATE( satmco2(jpi,jpj), patm(jpi,jpj), STAT=p4z_flx_alloc ) 373 387 ! 374 388 IF( p4z_flx_alloc /= 0 ) CALL ctl_warn('p4z_flx_alloc : failed to allocate arrays') -
branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zint.F90
r7068 r7162 12 12 USE trc ! passive tracers common variables 13 13 USE sms_pisces ! PISCES Source Minus Sink variables 14 USE iom15 14 16 15 IMPLICIT NONE -
branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zlim.F90
r7068 r7162 14 14 USE trc ! Tracers defined 15 15 USE sms_pisces ! PISCES variables 16 USE p4zopt ! Optical17 16 USE iom ! I/O manager 18 17 … … 22 21 PUBLIC p4z_lim 23 22 PUBLIC p4z_lim_init 23 PUBLIC p4z_lim_alloc 24 24 25 25 !! * Shared module variables … … 44 44 REAL(wp), PUBLIC :: qdfelim !: optimal Fe quota for diatoms 45 45 REAL(wp), PUBLIC :: caco3r !: mean rainratio 46 47 !!* Phytoplankton limitation terms 48 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xnanono3 !: ??? 49 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xdiatno3 !: ??? 50 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xnanonh4 !: ??? 51 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xdiatnh4 !: ??? 52 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xnanopo4 !: ??? 53 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xdiatpo4 !: ??? 54 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xlimphy !: ??? 55 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xlimdia !: ??? 56 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xlimnfe !: ??? 57 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xlimdfe !: ??? 58 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xlimsi !: ??? 59 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xlimbac !: ?? 60 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: xlimbacl !: ?? 61 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: concdfe !: ??? 62 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: concnfe !: ??? 46 63 47 64 ! Coefficient for iron limitation … … 220 237 !!---------------------------------------------------------------------- 221 238 222 NAMELIST/namp islim/ concnno3, concdno3, concnnh4, concdnh4, concnfer, concdfer, concbfe, &239 NAMELIST/namp4zlim/ concnno3, concdno3, concnnh4, concdnh4, concnfer, concdfer, concbfe, & 223 240 & concbno3, concbnh4, xsizedia, xsizephy, xsizern, xsizerd, & 224 241 & xksi1, xksi2, xkdoc, qnfelim, qdfelim, caco3r, oxymin … … 226 243 227 244 REWIND( numnatp_ref ) ! Namelist nampislim in reference namelist : Pisces nutrient limitation parameters 228 READ ( numnatp_ref, namp islim, IOSTAT = ios, ERR = 901)229 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp islim in reference namelist', lwp )245 READ ( numnatp_ref, namp4zlim, IOSTAT = ios, ERR = 901) 246 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp4zlim in reference namelist', lwp ) 230 247 231 248 REWIND( numnatp_cfg ) ! Namelist nampislim in configuration namelist : Pisces nutrient limitation parameters 232 READ ( numnatp_cfg, namp islim, IOSTAT = ios, ERR = 902 )233 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp islim in configuration namelist', lwp )234 IF(lwm) WRITE ( numonp, namp islim )249 READ ( numnatp_cfg, namp4zlim, IOSTAT = ios, ERR = 902 ) 250 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp4zlim in configuration namelist', lwp ) 251 IF(lwm) WRITE ( numonp, namp4zlim ) 235 252 236 253 IF(lwp) THEN ! control print 237 254 WRITE(numout,*) ' ' 238 WRITE(numout,*) ' Namelist parameters for nutrient limitations, namp islim'255 WRITE(numout,*) ' Namelist parameters for nutrient limitations, namp4zlim' 239 256 WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' 240 257 WRITE(numout,*) ' mean rainratio caco3r = ', caco3r … … 264 281 END SUBROUTINE p4z_lim_init 265 282 283 INTEGER FUNCTION p4z_lim_alloc() 284 !!---------------------------------------------------------------------- 285 !! *** ROUTINE p5z_lim_alloc *** 286 !!---------------------------------------------------------------------- 287 USE lib_mpp , ONLY: ctl_warn 288 !!---------------------------------------------------------------------- 289 290 !* Biological arrays for phytoplankton growth 291 ALLOCATE( xnanono3(jpi,jpj,jpk), xdiatno3(jpi,jpj,jpk), & 292 & xnanonh4(jpi,jpj,jpk), xdiatnh4(jpi,jpj,jpk), & 293 & xnanopo4(jpi,jpj,jpk), xdiatpo4(jpi,jpj,jpk), & 294 & xlimphy (jpi,jpj,jpk), xlimdia (jpi,jpj,jpk), & 295 & xlimnfe (jpi,jpj,jpk), xlimdfe (jpi,jpj,jpk), & 296 & xlimbac (jpi,jpj,jpk), xlimbacl(jpi,jpj,jpk), & 297 & concnfe (jpi,jpj,jpk), concdfe (jpi,jpj,jpk), & 298 & xlimsi (jpi,jpj,jpk), STAT=p4z_lim_alloc ) 299 ! 300 IF( p4z_lim_alloc /= 0 ) CALL ctl_warn('p4z_lim_alloc : failed to allocate arrays.') 301 ! 302 END FUNCTION p4z_lim_alloc 303 266 304 !!====================================================================== 267 305 END MODULE p4zlim -
branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zlys.F90
r7068 r7162 11 11 !! ! 2011-02 (J. Simeon, J. Orr) Calcon salinity dependence 12 12 !! 3.4 ! 2011-06 (O. Aumont, C. Ethe) Improvment of calcite dissolution 13 !! 3.6 ! 2015-05 (O. Aumont) PISCES quota 13 14 !!---------------------------------------------------------------------- 14 15 !! p4z_lys : Compute the CaCO3 dissolution … … 18 19 USE trc ! passive tracers common variables 19 20 USE sms_pisces ! PISCES Source Minus Sink variables 21 USE p4zche ! Chemical model 20 22 USE prtctl_trc ! print control for debugging 21 23 USE iom ! I/O manager … … 57 59 INTEGER, INTENT(in) :: kt, knt ! ocean time step 58 60 INTEGER :: ji, jj, jk, jn 59 REAL(wp) :: zalk, zdic, zph, zah2 60 REAL(wp) :: zdispot, zfact, zcalcon, zalka, zaldi 61 REAL(wp) :: zdispot, zfact, zcalcon 61 62 REAL(wp) :: zomegaca, zexcess, zexcess0 62 63 CHARACTER (len=25) :: charout 63 REAL(wp), POINTER, DIMENSION(:,:,:) :: zco3, zc o3sat, zcaldiss64 REAL(wp), POINTER, DIMENSION(:,:,:) :: zco3, zcaldiss, zhinit, zhi, zco3sat 64 65 !!--------------------------------------------------------------------- 65 66 ! 66 67 IF( nn_timing == 1 ) CALL timing_start('p4z_lys') 67 68 ! 68 CALL wrk_alloc( jpi, jpj, jpk, zco3, zc o3sat, zcaldiss)69 CALL wrk_alloc( jpi, jpj, jpk, zco3, zcaldiss, zhinit, zhi, zco3sat ) 69 70 ! 70 71 zco3 (:,:,:) = 0. 71 72 zcaldiss(:,:,:) = 0. 73 zhinit(:,:,:) = hi(:,:,:) * 1000. / ( rhop(:,:,:) + rtrn ) 72 74 ! ------------------------------------------- 73 75 ! COMPUTE [CO3--] and [H+] CONCENTRATIONS 74 76 ! ------------------------------------------- 75 76 DO jn = 1, 5 ! BEGIN OF ITERATION 77 ! 78 DO jk = 1, jpkm1 79 DO jj = 1, jpj 80 DO ji = 1, jpi 81 zfact = rhop(ji,jj,jk) / 1000. + rtrn 82 zph = hi(ji,jj,jk) * tmask(ji,jj,jk) / zfact + ( 1.-tmask(ji,jj,jk) ) * 1.e-9 ! [H+] 83 zdic = trb(ji,jj,jk,jpdic) / zfact 84 zalka = trb(ji,jj,jk,jptal) / zfact 85 ! CALCULATE [ALK]([CO3--], [HCO3-]) 86 zalk = zalka - ( akw3(ji,jj,jk) / zph - zph / ( aphscale(ji,jj,jk) + rtrn ) & 87 & + borat(ji,jj,jk) / ( 1. + zph / akb3(ji,jj,jk) ) ) 88 ! CALCULATE [H+] and [CO3--] 89 zaldi = zdic - zalk 90 zah2 = SQRT( zaldi * zaldi + 4.* ( zalk * ak23(ji,jj,jk) / ak13(ji,jj,jk) ) * ( zdic + zaldi ) ) 91 zah2 = 0.5 * ak13(ji,jj,jk) / zalk * ( zaldi + zah2 ) 92 ! 93 zco3(ji,jj,jk) = zalk / ( 2. + zah2 / ak23(ji,jj,jk) ) * zfact 94 hi(ji,jj,jk) = zah2 * zfact 95 END DO 77 78 CALL solve_at_general(zhinit, zhi) 79 80 DO jk = 1, jpkm1 81 DO jj = 1, jpj 82 DO ji = 1, jpi 83 zco3(ji,jj,jk) = trb(ji,jj,jk,jpdic) * ak13(ji,jj,jk) * ak23(ji,jj,jk) / (zhi(ji,jj,jk)**2 & 84 & + ak13(ji,jj,jk) * zhi(ji,jj,jk) + ak13(ji,jj,jk) * ak23(ji,jj,jk) + rtrn ) 85 hi(ji,jj,jk) = zhi(ji,jj,jk) * rhop(ji,jj,jk) / 1000. 96 86 END DO 97 87 END DO 98 ! 99 END DO 88 END DO 100 89 101 90 ! --------------------------------------------------------- … … 111 100 ! DEVIATION OF [CO3--] FROM SATURATION VALUE 112 101 ! Salinity dependance in zomegaca and divide by rhop/1000 to have good units 113 zcalcon = calcon * ( tsn(ji,jj,jk,jp_sal) / 35._wp )102 zcalcon = calcon * ( salinprac(ji,jj,jk) / 35._wp ) 114 103 zfact = rhop(ji,jj,jk) / 1000._wp 115 104 zomegaca = ( zcalcon * zco3(ji,jj,jk) ) / ( aksp(ji,jj,jk) * zfact + rtrn ) … … 128 117 ! AND [SUM(CO2)] DUE TO CACO3 DISSOLUTION/PRECIPITATION 129 118 zcaldiss(ji,jj,jk) = zdispot * rfact2 / rmtss ! calcite dissolution 130 zco3(ji,jj,jk) = zco3(ji,jj,jk) + zcaldiss(ji,jj,jk)131 119 ! 132 120 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + 2. * zcaldiss(ji,jj,jk) … … 151 139 ENDIF 152 140 ! 153 CALL wrk_dealloc( jpi, jpj, jpk, zco3, zc o3sat, zcaldiss)141 CALL wrk_dealloc( jpi, jpj, jpk, zco3, zcaldiss, zhinit, zhi, zco3sat ) 154 142 ! 155 143 IF( nn_timing == 1 ) CALL timing_stop('p4z_lys') … … 170 158 !! 171 159 !!---------------------------------------------------------------------- 172 INTEGER :: ji, jj, jk173 160 INTEGER :: ios ! Local integer output status for namelist read 174 REAL(wp) :: zcaralk, zbicarb, zco3175 REAL(wp) :: ztmas, ztmas1176 161 177 162 NAMELIST/nampiscal/ kdca, nca … … 199 184 ! 200 185 END SUBROUTINE p4z_lys_init 201 202 186 !!====================================================================== 203 187 END MODULE p4zlys -
branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmeso.F90
r7068 r7162 14 14 USE trc ! passive tracers common variables 15 15 USE sms_pisces ! PISCES Source Minus Sink variables 16 USE p4zsink ! vertical flux of particulate matter due to sinking17 USE p4zint ! interpolation and computation of various fields18 16 USE p4zprod ! production 19 17 USE prtctl_trc ! print control for debugging … … 67 65 REAL(wp) :: zgraze2 , zdenom, zdenom2 68 66 REAL(wp) :: zfact , zfood, zfoodlim, zproport 69 REAL(wp) :: zmortzgoc, zfrac, zfracfe, zratio, zratio2 67 REAL(wp) :: zmortzgoc, zfrac, zfracfe, zratio, zratio2, zfracal, zgrazcal 70 68 REAL(wp) :: zepshert, zepsherv, zgrarsig, zgraztot, zgraztotn, zgraztotf 71 69 REAL(wp) :: zgrarem2, zgrafer2, zgrapoc2, zprcaca, zmortz2, zgrasrat, zgrasratn … … 80 78 IF( nn_timing == 1 ) CALL timing_start('p4z_meso') 81 79 ! 82 IF( lk_iomput ) THEN 83 CALL wrk_alloc( jpi, jpj, jpk, zgrazing ) 84 zgrazing(:,:,:) = 0._wp 85 ENDIF 80 CALL wrk_alloc( jpi, jpj, jpk, zgrazing ) 81 zgrazing(:,:,:) = 0._wp 86 82 87 83 DO jk = 1, jpkm1 … … 158 154 159 155 ! Total grazing ( grazing by microzoo is already computed in p4zmicro ) 160 IF( lk_iomput )zgrazing(ji,jj,jk) = zgraztot156 zgrazing(ji,jj,jk) = zgraztot 161 157 162 158 ! Mesozooplankton efficiency … … 177 173 tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + zgrarsig 178 174 tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + zgrarem2 - zgrarsig 175 ! 176 IF( ln_ligand ) tra(ji,jj,jk,jplgw) = tra(ji,jj,jk,jplgw) + (zgrarem2 - zgrarsig) * ldocz 177 ! 179 178 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - o2ut * zgrarsig 180 179 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + zgrafer2 … … 195 194 tra(ji,jj,jk,jpdfe) = tra(ji,jj,jk,jpdfe) - zgrazf 196 195 197 ! calcite production 198 zprcaca = xfracal(ji,jj,jk) * zgrazn 199 prodcal(ji,jj,jk) = prodcal(ji,jj,jk) + zprcaca ! prodcal=prodcal(nanophy)+prodcal(microzoo)+prodcal(mesozoo) 200 ! 201 zprcaca = part2 * zprcaca 202 tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) - zprcaca 203 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2. * zprcaca 204 tra(ji,jj,jk,jpcal) = tra(ji,jj,jk,jpcal) + zprcaca 205 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zgrazpoc - zgrazffep + zfrac 206 tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zmortzgoc - zgrazffeg + zgrapoc2 - zfrac 207 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) - zgrazpof - zgrazfffp + zfracfe 208 tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + ferat3 * zmortzgoc - zgrazfffg & 209 & + zgraztotf * unass2 - zfracfe 196 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zgrazpoc - zgrazffep + zfrac 197 prodpoc(ji,jj,jk) = prodpoc(ji,jj,jk) + zfrac 198 conspoc(ji,jj,jk) = conspoc(ji,jj,jk) - zgrazpoc - zgrazffep 199 tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zmortzgoc - zgrazffeg + zgrapoc2 - zfrac 200 prodgoc(ji,jj,jk) = prodgoc(ji,jj,jk) + zmortzgoc + zgrapoc2 201 consgoc(ji,jj,jk) = consgoc(ji,jj,jk) - zgrazffeg - zfrac 202 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) - zgrazpof - zgrazfffp + zfracfe 203 tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + ferat3 * zmortzgoc - zgrazfffg & 204 & + zgraztotf * unass2 - zfracfe 205 zfracal = trb(ji,jj,jk,jpcal) / (trb(ji,jj,jk,jppoc) + trb(ji,jj,jk,jpgoc) + rtrn ) 206 zgrazcal = (zgrazffeg + zgrazpoc) * (1. - part2) * zfracal 207 ! calcite production 208 zprcaca = xfracal(ji,jj,jk) * zgrazn 209 prodcal(ji,jj,jk) = prodcal(ji,jj,jk) + zprcaca ! prodcal=prodcal(nanophy)+prodcal(microzoo)+prodcal(mesozoo) 210 ! 211 zprcaca = part2 * zprcaca 212 tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zgrazcal - zprcaca 213 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2. * ( zgrazcal + zprcaca ) 214 tra(ji,jj,jk,jpcal) = tra(ji,jj,jk,jpcal) - zgrazcal + zprcaca 210 215 END DO 211 216 END DO … … 231 236 ENDIF 232 237 ! 233 IF( lk_iomput )CALL wrk_dealloc( jpi, jpj, jpk, zgrazing )238 CALL wrk_dealloc( jpi, jpj, jpk, zgrazing ) 234 239 ! 235 240 IF( nn_timing == 1 ) CALL timing_stop('p4z_meso') … … 251 256 !!---------------------------------------------------------------------- 252 257 253 NAMELIST/namp ismes/ part2, grazrat2, resrat2, mzrat2, xprefc, xprefp, xprefz, &258 NAMELIST/namp4zmes/ part2, grazrat2, resrat2, mzrat2, xprefc, xprefp, xprefz, & 254 259 & xprefpoc, xthresh2dia, xthresh2phy, xthresh2zoo, xthresh2poc, & 255 260 & xthresh2, xkgraz2, epsher2, sigma2, unass2, grazflux … … 257 262 258 263 REWIND( numnatp_ref ) ! Namelist nampismes in reference namelist : Pisces mesozooplankton 259 READ ( numnatp_ref, namp ismes, IOSTAT = ios, ERR = 901)260 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp ismes in reference namelist', lwp )264 READ ( numnatp_ref, namp4zmes, IOSTAT = ios, ERR = 901) 265 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp4zmes in reference namelist', lwp ) 261 266 262 267 REWIND( numnatp_cfg ) ! Namelist nampismes in configuration namelist : Pisces mesozooplankton 263 READ ( numnatp_cfg, namp ismes, IOSTAT = ios, ERR = 902 )264 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp ismes in configuration namelist', lwp )265 IF(lwm) WRITE ( numonp, namp ismes )268 READ ( numnatp_cfg, namp4zmes, IOSTAT = ios, ERR = 902 ) 269 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp4zmes in configuration namelist', lwp ) 270 IF(lwm) WRITE ( numonp, namp4zmes ) 266 271 267 272 268 273 IF(lwp) THEN ! control print 269 274 WRITE(numout,*) ' ' 270 WRITE(numout,*) ' Namelist parameters for mesozooplankton, namp ismes'275 WRITE(numout,*) ' Namelist parameters for mesozooplankton, namp4zmes' 271 276 WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' 272 277 WRITE(numout,*) ' part of calcite not dissolved in mesozoo guts part2 =', part2 -
branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmicro.F90
r7068 r7162 15 15 USE sms_pisces ! PISCES Source Minus Sink variables 16 16 USE p4zlim ! Co-limitations 17 USE p4zsink ! vertical flux of particulate matter due to sinking18 USE p4zint ! interpolation and computation of various fields19 17 USE p4zprod ! production 20 18 USE iom ! I/O manager … … 79 77 IF( nn_timing == 1 ) CALL timing_start('p4z_micro') 80 78 ! 81 IF( lk_iomput )CALL wrk_alloc( jpi, jpj, jpk, zgrazing )79 CALL wrk_alloc( jpi, jpj, jpk, zgrazing ) 82 80 ! 83 81 DO jk = 1, jpkm1 … … 122 120 123 121 ! Grazing by microzooplankton 124 IF( lk_iomput )zgrazing(ji,jj,jk) = zgraztot122 zgrazing(ji,jj,jk) = zgraztot 125 123 126 124 ! Various remineralization and excretion terms … … 140 138 tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + zgrarsig 141 139 tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + zgrarem - zgrarsig 140 ! 141 IF( ln_ligand ) tra(ji,jj,jk,jplgw) = tra(ji,jj,jk,jplgw) + (zgrarem - zgrarsig) * ldocz 142 ! 142 143 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - o2ut * zgrarsig 143 144 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + zgrafer 144 145 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zgrapoc 146 prodpoc(ji,jj,jk) = prodpoc(ji,jj,jk) + zgrapoc 145 147 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zgraztotf * unass 146 148 tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zgrarsig … … 159 161 tra(ji,jj,jk,jpdfe) = tra(ji,jj,jk,jpdfe) - zgrazsf 160 162 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zmortz - zgrazm 163 prodpoc(ji,jj,jk) = prodpoc(ji,jj,jk) + zmortz 164 conspoc(ji,jj,jk) = conspoc(ji,jj,jk) - zgrazm 161 165 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + ferat3 * zmortz - zgrazmf 162 166 ! … … 173 177 END DO 174 178 ! 175 IF( lk_iomput .AND. knt == nrdttrc ) THEN 176 CALL wrk_alloc( jpi, jpj, jpk, zw3d ) 177 IF( iom_use( "GRAZ1" ) ) THEN 178 zw3d(:,:,:) = zgrazing(:,:,:) * 1.e+3 * rfact2r * tmask(:,:,:) ! Total grazing of phyto by zooplankton 179 CALL iom_put( "GRAZ1", zw3d ) 179 IF( lk_iomput ) THEN 180 IF( knt == nrdttrc ) THEN 181 CALL wrk_alloc( jpi, jpj, jpk, zw3d ) 182 IF( iom_use( "GRAZ1" ) ) THEN 183 zw3d(:,:,:) = zgrazing(:,:,:) * 1.e+3 * rfact2r * tmask(:,:,:) ! Total grazing of phyto by zooplankton 184 CALL iom_put( "GRAZ1", zw3d ) 185 ENDIF 186 CALL wrk_dealloc( jpi, jpj, jpk, zw3d ) 180 187 ENDIF 181 CALL wrk_dealloc( jpi, jpj, jpk, zw3d )182 188 ENDIF 183 189 ! … … 188 194 ENDIF 189 195 ! 190 IF( lk_iomput )CALL wrk_dealloc( jpi, jpj, jpk, zgrazing )196 CALL wrk_dealloc( jpi, jpj, jpk, zgrazing ) 191 197 ! 192 198 IF( nn_timing == 1 ) CALL timing_stop('p4z_micro') … … 209 215 !!---------------------------------------------------------------------- 210 216 211 NAMELIST/namp iszoo/ part, grazrat, resrat, mzrat, xpref2c, xpref2p, &217 NAMELIST/namp4zzoo/ part, grazrat, resrat, mzrat, xpref2c, xpref2p, & 212 218 & xpref2d, xthreshdia, xthreshphy, xthreshpoc, & 213 219 & xthresh, xkgraz, epsher, sigma1, unass … … 215 221 216 222 REWIND( numnatp_ref ) ! Namelist nampiszoo in reference namelist : Pisces microzooplankton 217 READ ( numnatp_ref, namp iszoo, IOSTAT = ios, ERR = 901)218 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp iszoo in reference namelist', lwp )223 READ ( numnatp_ref, namp4zzoo, IOSTAT = ios, ERR = 901) 224 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp4zzoo in reference namelist', lwp ) 219 225 220 226 REWIND( numnatp_cfg ) ! Namelist nampiszoo in configuration namelist : Pisces microzooplankton 221 READ ( numnatp_cfg, namp iszoo, IOSTAT = ios, ERR = 902 )222 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp iszoo in configuration namelist', lwp )223 IF(lwm) WRITE ( numonp, namp iszoo )227 READ ( numnatp_cfg, namp4zzoo, IOSTAT = ios, ERR = 902 ) 228 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp4zzoo in configuration namelist', lwp ) 229 IF(lwm) WRITE ( numonp, namp4zzoo ) 224 230 225 231 IF(lwp) THEN ! control print 226 232 WRITE(numout,*) ' ' 227 WRITE(numout,*) ' Namelist parameters for microzooplankton, namp iszoo'233 WRITE(numout,*) ' Namelist parameters for microzooplankton, namp4zzoo' 228 234 WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' 229 235 WRITE(numout,*) ' part of calcite not dissolved in microzoo guts part =', part -
branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmort.F90
r7068 r7162 13 13 USE trc ! passive tracers common variables 14 14 USE sms_pisces ! PISCES Source Minus Sink variables 15 USE p4zsink ! vertical flux of particulate matter due to sinking16 15 USE p4zprod ! Primary productivity 16 USE p4zlim ! Phytoplankton limitation terms 17 17 USE prtctl_trc ! print control for debugging 18 18 … … 30 30 REAL(wp), PUBLIC :: mprat2 !: 31 31 32 33 32 !!---------------------------------------------------------------------- 34 33 !! NEMO/TOP 3.3 , NEMO Consortium (2010) … … 69 68 REAL(wp) :: zsizerat, zcompaph 70 69 REAL(wp) :: zfactfe, zfactch, zprcaca, zfracal 71 REAL(wp) :: ztortp , zrespp , zmortp 70 REAL(wp) :: ztortp , zrespp , zmortp 72 71 CHARACTER (len=25) :: charout 73 72 !!--------------------------------------------------------------------- … … 113 112 tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zfracal * zmortp 114 113 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + ( 1. - zfracal ) * zmortp 114 prodpoc(ji,jj,jk) = prodpoc(ji,jj,jk) + ( 1. - zfracal ) * zmortp 115 prodgoc(ji,jj,jk) = prodgoc(ji,jj,jk) + zfracal * zmortp 115 116 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + ( 1. - zfracal ) * zmortp * zfactfe 116 117 tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zfracal * zmortp * zfactfe … … 186 187 tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zrespp2 + 0.5 * ztortp2 187 188 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + 0.5 * ztortp2 189 prodpoc(ji,jj,jk) = prodpoc(ji,jj,jk) + 0.5 * ztortp2 190 prodgoc(ji,jj,jk) = prodgoc(ji,jj,jk) + zrespp2 + 0.5 * ztortp2 188 191 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + 0.5 * ztortp2 * zfactfe 189 192 tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + ( zrespp2 + 0.5 * ztortp2 ) * zfactfe … … 216 219 !!---------------------------------------------------------------------- 217 220 218 NAMELIST/namp ismort/ wchl, wchld, wchldm, mprat, mprat2221 NAMELIST/namp4zmort/ wchl, wchld, wchldm, mprat, mprat2 219 222 INTEGER :: ios ! Local integer output status for namelist read 220 223 221 224 REWIND( numnatp_ref ) ! Namelist nampismort in reference namelist : Pisces phytoplankton 222 READ ( numnatp_ref, namp ismort, IOSTAT = ios, ERR = 901)223 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp ismort in reference namelist', lwp )225 READ ( numnatp_ref, namp4zmort, IOSTAT = ios, ERR = 901) 226 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp4zmort in reference namelist', lwp ) 224 227 225 228 REWIND( numnatp_cfg ) ! Namelist nampismort in configuration namelist : Pisces phytoplankton 226 READ ( numnatp_cfg, namp ismort, IOSTAT = ios, ERR = 902 )227 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp ismort in configuration namelist', lwp )228 IF(lwm) WRITE ( numonp, namp ismort )229 READ ( numnatp_cfg, namp4zmort, IOSTAT = ios, ERR = 902 ) 230 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp4zmort in configuration namelist', lwp ) 231 IF(lwm) WRITE ( numonp, namp4zmort ) 229 232 230 233 IF(lwp) THEN ! control print 231 234 WRITE(numout,*) ' ' 232 WRITE(numout,*) ' Namelist parameters for phytoplankton mortality, namp ismort'235 WRITE(numout,*) ' Namelist parameters for phytoplankton mortality, namp4zmort' 233 236 WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' 234 237 WRITE(numout,*) ' quadratic mortality of phytoplankton wchl =', wchl -
branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zopt.F90
r7068 r7162 37 37 INTEGER :: ntimes_par ! number of time steps in a file 38 38 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: par_varsw !: PAR fraction of shortwave 39 40 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: enano, ediat !: PAR for phyto, nano and diat 41 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: etot_ndcy !: PAR over 24h in case of diurnal cycle 42 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: emoy !: averaged PAR in the mixed layer 43 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: ekb, ekg, ekr !: wavelength (Red-Green-Blue) 39 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: ekb, ekg, ekr !: wavelength (Red-Green-Blue) 44 40 45 41 INTEGER :: nksrp ! levels below which the light cannot penetrate ( depth larger than 391 m) 46 42 47 REAL(wp), DIMENSION(3,61) , PUBLIC:: xkrgb !: tabulated attenuation coefficients for RGB absorption43 REAL(wp), DIMENSION(3,61) :: xkrgb !: tabulated attenuation coefficients for RGB absorption 48 44 49 45 !!---------------------------------------------------------------------- … … 71 67 REAL(wp) :: zc0 , zc1 , zc2, zc3, z1_dep 72 68 REAL(wp), POINTER, DIMENSION(:,: ) :: zdepmoy, zetmp1, zetmp2, zetmp3, zetmp4 69 REAL(wp), POINTER, DIMENSION(:,: ) :: zetmp5 73 70 REAL(wp), POINTER, DIMENSION(:,: ) :: zqsr100, zqsr_corr 74 REAL(wp), POINTER, DIMENSION(:,:,:) :: zpar, ze0, ze1, ze2, ze3 71 REAL(wp), POINTER, DIMENSION(:,:,:) :: zpar, ze0, ze1, ze2, ze3, zchl3d 75 72 !!--------------------------------------------------------------------- 76 73 ! … … 78 75 ! 79 76 ! Allocate temporary workspace 80 CALL wrk_alloc( jpi, jpj, zdepmoy, zetmp1, zetmp2, zetmp3, zetmp4 ) 81 CALL wrk_alloc( jpi, jpj, zqsr100, zqsr_corr ) 82 CALL wrk_alloc( jpi, jpj, jpk, zpar , ze0, ze1, ze2, ze3 ) 77 CALL wrk_alloc( jpi, jpj, zdepmoy, zetmp1, zetmp2, zetmp3, zetmp4 ) 78 CALL wrk_alloc( jpi, jpj, zqsr100, zqsr_corr ) 79 IF( ln_p5z ) CALL wrk_alloc( jpi, jpj, zetmp5 ) 80 CALL wrk_alloc( jpi, jpj, jpk, zpar , ze0, ze1, ze2, ze3, zchl3d ) 83 81 84 82 IF( knt == 1 .AND. ln_varpar ) CALL p4z_opt_sbc( kt ) … … 89 87 ze2(:,:,:) = 0._wp 90 88 ze3(:,:,:) = 0._wp 89 ! 91 90 ! !* attenuation coef. function of Chlorophyll and wavelength (Red-Green-Blue) 92 DO jk = 1, jpkm1 ! -------------------------------------------------------- 91 ! -------------------------------------------------------- 92 zchl3d(:,:,:) = trb(:,:,:,jpnch) + trb(:,:,:,jpdch) 93 IF( ln_p5z ) zchl3d(:,:,:) = zchl3d(:,:,:) + trb(:,:,:,jppch) 94 ! 95 DO jk = 1, jpkm1 93 96 DO jj = 1, jpj 94 97 DO ji = 1, jpi 95 zchl = ( trb(ji,jj,jk,jpnch) + trb(ji,jj,jk,jpdch) + rtrn ) * 1.e698 zchl = ( zchl3d(ji,jj,jk) + rtrn ) * 1.e6 96 99 zchl = MIN( 10. , MAX( 0.05, zchl ) ) 97 100 irgb = NINT( 41 + 20.* LOG10( zchl ) + rtrn ) … … 116 119 ediat (:,:,jk) = 1.6 * ze1(:,:,jk) + 0.69 * ze2(:,:,jk) + 0.7 * ze3(:,:,jk) 117 120 END DO 121 IF( ln_p5z ) THEN 122 DO jk = 1, nksrp 123 epico (:,:,jk) = 2.1 * ze1(:,:,jk) + 0.42 * ze2(:,:,jk) + 0.4 * ze3(:,:,jk) 124 END DO 125 ENDIF 118 126 ! 119 127 zqsr_corr(:,:) = qsr(:,:) / ( 1. - fr_i(:,:) + rtrn ) … … 136 144 ediat(:,:,jk) = 1.6 * ze1(:,:,jk) + 0.69 * ze2(:,:,jk) + 0.7 * ze3(:,:,jk) 137 145 END DO 146 IF( ln_p5z ) THEN 147 DO jk = 1, nksrp 148 epico(:,:,jk) = 2.1 * ze1(:,:,jk) + 0.42 * ze2(:,:,jk) + 0.4 * ze3(:,:,jk) 149 END DO 150 ENDIF 138 151 etot_ndcy(:,:,:) = etot(:,:,:) 139 152 ENDIF … … 151 164 ENDIF 152 165 ! !* Euphotic depth and level 153 neln(:,:) = 1 ! ------------------------ 154 heup(:,:) = 300. 166 neln (:,:) = 1 ! ------------------------ 167 heup (:,:) = gdepw_n(:,:,2) 168 heup_01(:,:) = gdepw_n(:,:,2) 155 169 156 170 DO jk = 2, nksrp … … 162 176 heup(ji,jj) = gdepw_n(ji,jj,jk+1) ! Euphotic layer depth 163 177 ENDIF 178 IF( etot_ndcy(ji,jj,jk) * tmask(ji,jj,jk) >= 0.50 ) THEN 179 heup_01(ji,jj) = gdepw_n(ji,jj,jk+1) ! Euphotic layer depth (light level definition) 180 ENDIF 164 181 END DO 165 182 END DO 166 183 END DO 167 184 ! 168 heup(:,:) = MIN( 300., heup(:,:) ) 185 heup (:,:) = MIN( 300., heup (:,:) ) 186 heup_01(:,:) = MIN( 300., heup_01(:,:) ) 169 187 ! !* mean light over the mixed layer 170 188 zdepmoy(:,:) = 0.e0 ! ------------------------------- … … 205 223 END DO 206 224 ! 225 IF( ln_p5z ) THEN 226 zetmp5 (:,:) = 0.e0 227 DO jk = 1, nksrp 228 DO jj = 1, jpj 229 DO ji = 1, jpi 230 IF( gdepw_n(ji,jj,jk+1) <= hmld(ji,jj) ) THEN 231 z1_dep = 1. / ( zdepmoy(ji,jj) + rtrn ) 232 zetmp5(ji,jj) = zetmp5 (ji,jj) + epico(ji,jj,jk) * e3t_n(ji,jj,jk) ! production 233 epico(ji,jj,jk) = zetmp5(ji,jj) * z1_dep 234 ENDIF 235 END DO 236 END DO 237 END DO 238 ENDIF 207 239 IF( lk_iomput ) THEN 208 240 IF( knt == nrdttrc ) THEN … … 213 245 ENDIF 214 246 ! 215 CALL wrk_dealloc( jpi, jpj, zdepmoy, zetmp1, zetmp2, zetmp3, zetmp4 ) 216 CALL wrk_dealloc( jpi, jpj, zqsr100, zqsr_corr ) 217 CALL wrk_dealloc( jpi, jpj, jpk, zpar , ze0, ze1, ze2, ze3 ) 247 CALL wrk_dealloc( jpi, jpj, zdepmoy, zetmp1, zetmp2, zetmp3, zetmp4 ) 248 CALL wrk_dealloc( jpi, jpj, zqsr100, zqsr_corr ) 249 IF( ln_p5z ) CALL wrk_dealloc( jpi, jpj, zetmp5 ) 250 CALL wrk_dealloc( jpi, jpj, jpk, zpar , ze0, ze1, ze2, ze3, zchl3d ) 218 251 ! 219 252 IF( nn_timing == 1 ) CALL timing_stop('p4z_opt') … … 398 431 enano (:,:,:) = 0._wp 399 432 ediat (:,:,:) = 0._wp 433 IF( ln_p5z ) epico (:,:,:) = 0._wp 400 434 IF( ln_qsr_bio ) etot3 (:,:,:) = 0._wp 401 435 ! … … 409 443 !! *** ROUTINE p4z_opt_alloc *** 410 444 !!---------------------------------------------------------------------- 411 ALLOCATE( ekb(jpi,jpj,jpk) , ekr(jpi,jpj,jpk), ekg(jpi,jpj,jpk), &412 & enano(jpi,jpj,jpk) , ediat(jpi,jpj,jpk),&413 & etot_ndcy(jpi,jpj,jpk), emoy (jpi,jpj,jpk), STAT=p4z_opt_alloc)414 445 ! 446 ALLOCATE( ekb(jpi,jpj,jpk), ekr(jpi,jpj,jpk), & 447 ekg(jpi,jpj,jpk), STAT= p4z_opt_alloc ) 448 ! 415 449 IF( p4z_opt_alloc /= 0 ) CALL ctl_warn('p4z_opt_alloc : failed to allocate arrays.') 416 450 ! -
branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zprod.F90
r7068 r7162 15 15 USE trc ! passive tracers common variables 16 16 USE sms_pisces ! PISCES Source Minus Sink variables 17 USE p4zopt ! optical model18 17 USE p4zlim ! Co-limitations of differents nutrients 19 18 USE prtctl_trc ! print control for debugging … … 29 28 !! * Shared module variables 30 29 LOGICAL , PUBLIC :: ln_newprod !: 31 REAL(wp), PUBLIC :: pislope !:32 REAL(wp), PUBLIC :: pislope 2!:30 REAL(wp), PUBLIC :: pislopen !: 31 REAL(wp), PUBLIC :: pisloped !: 33 32 REAL(wp), PUBLIC :: xadap !: 34 REAL(wp), PUBLIC :: excret !:35 REAL(wp), PUBLIC :: excret 2!:33 REAL(wp), PUBLIC :: excretn !: 34 REAL(wp), PUBLIC :: excretd !: 36 35 REAL(wp), PUBLIC :: bresp !: 37 36 REAL(wp), PUBLIC :: chlcnm !: … … 47 46 48 47 REAL(wp) :: r1_rday !: 1 / rday 49 REAL(wp) :: texcret !: 1 - excret50 REAL(wp) :: texcret 2 !: 1 - excret248 REAL(wp) :: texcretn !: 1 - excretn 49 REAL(wp) :: texcretd !: 1 - excretd 51 50 52 51 !!---------------------------------------------------------------------- … … 71 70 INTEGER :: ji, jj, jk 72 71 REAL(wp) :: zsilfac, znanotot, zdiattot, zconctemp, zconctemp2 73 REAL(wp) :: zratio, zmax, zsilim, ztn, zadap 74 REAL(wp) :: z lim, zsilfac2, zsiborn, zprod, zproreg, zproreg275 REAL(wp) :: zm xltst, zmxlday, zmaxday76 REAL(wp) :: z pislopen , zpislope2n77 REAL(wp) :: zrum, zcodel, zargu, zval 72 REAL(wp) :: zratio, zmax, zsilim, ztn, zadap, zlim, zsilfac2, zsiborn 73 REAL(wp) :: zprod, zproreg, zproreg2, zprochln, zprochld 74 REAL(wp) :: zmaxday, zdocprod, zpislopen, zpisloped 75 REAL(wp) :: zmxltst, zmxlday 76 REAL(wp) :: zrum, zcodel, zargu, zval, zfeup, chlcnm_n, chlcdm_n 78 77 REAL(wp) :: zfact 79 78 CHARACTER (len=25) :: charout 80 REAL(wp), POINTER, DIMENSION(:,: ) :: zmixnano, zmixdiat, zstrn, zw2d 81 REAL(wp), POINTER, DIMENSION(:,:,:) :: zpislopead, zpislopead2, zprdia, zprbio, zprdch, zprnch, zysopt, zw3d 82 REAL(wp), POINTER, DIMENSION(:,:,:) :: zprorca, zprorcad, zprofed, zprofen, zprochln, zprochld, zpronew, zpronewd 79 REAL(wp), POINTER, DIMENSION(:,: ) :: zstrn, zw2d, zmixnano, zmixdiat 80 REAL(wp), POINTER, DIMENSION(:,:,:) :: zpislopeadn, zpislopeadd, zysopt, zw3d 81 REAL(wp), POINTER, DIMENSION(:,:,:) :: zprdia, zprbio, zprdch, zprnch 82 REAL(wp), POINTER, DIMENSION(:,:,:) :: zprorcan, zprorcad, zprofed, zprofen 83 REAL(wp), POINTER, DIMENSION(:,:,:) :: zpronewn, zpronewd 84 REAL(wp), POINTER, DIMENSION(:,:,:) :: zmxl_fac, zmxl_chl 83 85 !!--------------------------------------------------------------------- 84 86 ! … … 86 88 ! 87 89 ! Allocate temporary workspace 88 CALL wrk_alloc( jpi, jpj, zmixnano, zmixdiat, zstrn ) 89 CALL wrk_alloc( jpi, jpj, jpk, zpislopead, zpislopead2, zprdia, zprbio, zprdch, zprnch, zysopt ) 90 CALL wrk_alloc( jpi, jpj, jpk, zprorca, zprorcad, zprofed, zprofen, zprochln, zprochld, zpronew, zpronewd ) 91 ! 92 zprorca (:,:,:) = 0._wp 93 zprorcad(:,:,:) = 0._wp 94 zprofed (:,:,:) = 0._wp 95 zprofen (:,:,:) = 0._wp 96 zprochln(:,:,:) = 0._wp 97 zprochld(:,:,:) = 0._wp 98 zpronew (:,:,:) = 0._wp 99 zpronewd(:,:,:) = 0._wp 100 zprdia (:,:,:) = 0._wp 101 zprbio (:,:,:) = 0._wp 102 zprdch (:,:,:) = 0._wp 103 zprnch (:,:,:) = 0._wp 104 zysopt (:,:,:) = 0._wp 90 CALL wrk_alloc( jpi, jpj, zmixnano, zmixdiat, zstrn ) 91 CALL wrk_alloc( jpi, jpj, jpk, zpislopeadn, zpislopeadd, zprdia, zprbio, zprdch, zprnch, zysopt ) 92 CALL wrk_alloc( jpi, jpj, jpk, zmxl_fac, zmxl_chl ) 93 CALL wrk_alloc( jpi, jpj, jpk, zprorcan, zprorcad, zprofed, zprofen, zpronewn, zpronewd ) 94 ! 95 zprorcan(:,:,:) = 0._wp ; zprorcad(:,:,:) = 0._wp ; zprofed (:,:,:) = 0._wp 96 zprofen (:,:,:) = 0._wp ; zysopt (:,:,:) = 0._wp 97 zpronewn(:,:,:) = 0._wp ; zpronewd(:,:,:) = 0._wp ; zprdia (:,:,:) = 0._wp 98 zprbio (:,:,:) = 0._wp ; zprdch (:,:,:) = 0._wp ; zprnch (:,:,:) = 0._wp 99 zmxl_fac(:,:,:) = 0._wp ; zmxl_chl(:,:,:) = 0._wp 105 100 106 101 ! Computation of the optimal production 107 prmax(:,:,:) = 0. 6_wp * r1_rday * tgfunc(:,:,:)102 prmax(:,:,:) = 0.8_wp * r1_rday * tgfunc(:,:,:) 108 103 109 104 ! compute the day length depending on latitude and the day … … 121 116 END DO 122 117 123 ! Impact of the day duration on phytoplankton growth118 ! Impact of the day duration and light intermittency on phytoplankton growth 124 119 DO jk = 1, jpkm1 125 120 DO jj = 1 ,jpj … … 127 122 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 128 123 zval = MAX( 1., zstrn(ji,jj) ) 129 zval = 1.5 * zval / ( 12. + zval ) 130 zprbio(ji,jj,jk) = prmax(ji,jj,jk) * zval * ( 1. - fr_i(ji,jj) ) 131 zprdia(ji,jj,jk) = zprbio(ji,jj,jk) 124 IF( gdept_n(ji,jj,jk) <= hmld(ji,jj) ) THEN 125 zval = zval * MIN(1., heup_01(ji,jj) / ( hmld(ji,jj) + rtrn )) 126 ENDIF 127 zmxl_chl(ji,jj,jk) = zval / 24. 128 zmxl_fac(ji,jj,jk) = 1.5 * zval / ( 12. + zval ) 132 129 ENDIF 133 130 END DO 134 131 END DO 135 132 END DO 133 134 zprbio(:,:,:) = prmax(:,:,:) * zmxl_fac(:,:,:) 135 zprdia(:,:,:) = zprbio(:,:,:) 136 136 137 137 ! Maximum light intensity 138 138 WHERE( zstrn(:,:) < 1.e0 ) zstrn(:,:) = 24. 139 zstrn(:,:) = 24. / zstrn(:,:) 139 140 ! Computation of the P-I slope for nanos and diatoms 141 DO jk = 1, jpkm1 142 DO jj = 1, jpj 143 DO ji = 1, jpi 144 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 145 ztn = MAX( 0., tsn(ji,jj,jk,jp_tem) - 15. ) 146 zadap = xadap * ztn / ( 2.+ ztn ) 147 zconctemp = MAX( 0.e0 , trb(ji,jj,jk,jpdia) - xsizedia ) 148 zconctemp2 = trb(ji,jj,jk,jpdia) - zconctemp 149 ! 150 zpislopeadn(ji,jj,jk) = pislopen * ( 1.+ zadap * EXP( -0.25 * enano(ji,jj,jk) ) ) & 151 & * trb(ji,jj,jk,jpnch) /( trb(ji,jj,jk,jpphy) * 12. + rtrn) 152 ! 153 zpislopeadd(ji,jj,jk) = (pislopen * zconctemp2 + pisloped * zconctemp) / ( trb(ji,jj,jk,jpdia) + rtrn ) & 154 & * trb(ji,jj,jk,jpdch) /( trb(ji,jj,jk,jpdia) * 12. + rtrn) 155 ENDIF 156 END DO 157 END DO 158 END DO 140 159 141 160 IF( ln_newprod ) THEN … … 143 162 DO jj = 1, jpj 144 163 DO ji = 1, jpi 145 ! Computation of the P-I slope for nanos and diatoms146 164 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 147 ztn = MAX( 0., tsn(ji,jj,jk,jp_tem) - 15. )148 zadap = xadap * ztn / ( 2.+ ztn )149 zconctemp = MAX( 0.e0 , trb(ji,jj,jk,jpdia) - xsizedia )150 zconctemp2 = trb(ji,jj,jk,jpdia) - zconctemp151 znanotot = enano(ji,jj,jk) * zstrn(ji,jj)152 zdiattot = ediat(ji,jj,jk) * zstrn(ji,jj)153 !154 zpislopead (ji,jj,jk) = pislope * ( 1.+ zadap * EXP( -znanotot ) ) &155 & * trb(ji,jj,jk,jpnch) /( trb(ji,jj,jk,jpphy) * 12. + rtrn)156 !157 zpislopead2(ji,jj,jk) = (pislope * zconctemp2 + pislope2 * zconctemp) / ( trb(ji,jj,jk,jpdia) + rtrn ) &158 & * trb(ji,jj,jk,jpdch) /( trb(ji,jj,jk,jpdia) * 12. + rtrn)159 160 165 ! Computation of production function for Carbon 161 166 ! --------------------------------------------- 162 zpislopen = zpislopead (ji,jj,jk) / ( ( r1_rday + bresp * r1_rday ) * rday + rtrn) 163 zpislope2n = zpislopead2(ji,jj,jk) / ( ( r1_rday + bresp * r1_rday ) * rday + rtrn) 164 zprbio(ji,jj,jk) = zprbio(ji,jj,jk) * ( 1.- EXP( -zpislopen * znanotot ) ) 165 zprdia(ji,jj,jk) = zprdia(ji,jj,jk) * ( 1.- EXP( -zpislope2n * zdiattot ) ) 166 167 zpislopen = zpislopeadn(ji,jj,jk) / ( ( r1_rday + bresp * r1_rday ) & 168 & * zmxl_fac(ji,jj,jk) * rday + rtrn) 169 zpisloped = zpislopeadd(ji,jj,jk) / ( ( r1_rday + bresp * r1_rday ) & 170 & * zmxl_fac(ji,jj,jk) * rday + rtrn) 171 zprbio(ji,jj,jk) = zprbio(ji,jj,jk) * ( 1.- EXP( -zpislopen * enano(ji,jj,jk) ) ) 172 zprdia(ji,jj,jk) = zprdia(ji,jj,jk) * ( 1.- EXP( -zpisloped * ediat(ji,jj,jk) ) ) 167 173 ! Computation of production function for Chlorophyll 168 174 !-------------------------------------------------- 169 zmaxday = 1._wp / ( prmax(ji,jj,jk) * rday + rtrn ) 170 zprnch(ji,jj,jk) = prmax(ji,jj,jk) * ( 1.- EXP( -zpislopead (ji,jj,jk) * zmaxday * znanotot ) ) 171 zprdch(ji,jj,jk) = prmax(ji,jj,jk) * ( 1.- EXP( -zpislopead2(ji,jj,jk) * zmaxday * zdiattot ) ) 175 zpislopen = zpislopeadn(ji,jj,jk) / ( prmax(ji,jj,jk) * zmxl_chl(ji,jj,jk) * rday + rtrn ) 176 zpisloped = zpislopeadd(ji,jj,jk) / ( prmax(ji,jj,jk) * zmxl_chl(ji,jj,jk) * rday + rtrn ) 177 zprnch(ji,jj,jk) = prmax(ji,jj,jk) * ( 1.- EXP( -zpislopen * enano(ji,jj,jk) ) ) 178 zprdch(ji,jj,jk) = prmax(ji,jj,jk) * ( 1.- EXP( -zpisloped * ediat(ji,jj,jk) ) ) 172 179 ENDIF 173 180 END DO … … 178 185 DO jj = 1, jpj 179 186 DO ji = 1, jpi 180 181 ! Computation of the P-I slope for nanos and diatoms182 187 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 183 ztn = MAX( 0., tsn(ji,jj,jk,jp_tem) - 15. )184 zadap = ztn / ( 2.+ ztn )185 zconctemp = MAX( 0.e0 , trb(ji,jj,jk,jpdia) - xsizedia )186 zconctemp2 = trb(ji,jj,jk,jpdia) - zconctemp187 znanotot = enano(ji,jj,jk) * zstrn(ji,jj)188 zdiattot = ediat(ji,jj,jk) * zstrn(ji,jj)189 !190 zpislopead (ji,jj,jk) = pislope * ( 1.+ zadap * EXP( -znanotot ) )191 zpislopead2(ji,jj,jk) = (pislope * zconctemp2 + pislope2 * zconctemp) / ( trb(ji,jj,jk,jpdia) + rtrn )192 193 zpislopen = zpislopead(ji,jj,jk) * trb(ji,jj,jk,jpnch) &194 & / ( trb(ji,jj,jk,jpphy) * 12. + rtrn ) &195 & / ( prmax(ji,jj,jk) * rday * xlimphy(ji,jj,jk) + rtrn )196 197 zpislope2n = zpislopead2(ji,jj,jk) * trb(ji,jj,jk,jpdch) &198 & / ( trb(ji,jj,jk,jpdia) * 12. + rtrn ) &199 & / ( prmax(ji,jj,jk) * rday * xlimdia(ji,jj,jk) + rtrn )200 201 188 ! Computation of production function for Carbon 202 189 ! --------------------------------------------- 203 zprbio(ji,jj,jk) = zprbio(ji,jj,jk) * ( 1.- EXP( -zpislopen * znanotot ) ) 204 zprdia(ji,jj,jk) = zprdia(ji,jj,jk) * ( 1.- EXP( -zpislope2n * zdiattot ) ) 205 190 zpislopen = zpislopeadn(ji,jj,jk) / ( zprbio(ji,jj,jk) * rday * xlimphy(ji,jj,jk) + rtrn ) 191 zpisloped = zpislopeadd(ji,jj,jk) / ( zprdia(ji,jj,jk) * rday * xlimdia(ji,jj,jk) + rtrn ) 192 zprbio(ji,jj,jk) = zprbio(ji,jj,jk) * ( 1.- EXP( -zpislopen * enano(ji,jj,jk) ) ) 193 zprdia(ji,jj,jk) = zprdia(ji,jj,jk) * ( 1.- EXP( -zpisloped * ediat(ji,jj,jk) ) ) 206 194 ! Computation of production function for Chlorophyll 207 195 !-------------------------------------------------- 208 zprnch(ji,jj,jk) = prmax(ji,jj,jk) * ( 1.- EXP( -zpislopen * enano(ji,jj,jk) ) ) 209 zprdch(ji,jj,jk) = prmax(ji,jj,jk) * ( 1.- EXP( -zpislope2n * ediat(ji,jj,jk) ) ) 196 zpislopen = zpislopen * zmxl_fac(ji,jj,jk) / ( zmxl_chl(ji,jj,jk) + rtrn ) 197 zpisloped = zpisloped * zmxl_fac(ji,jj,jk) / ( zmxl_chl(ji,jj,jk) + rtrn ) 198 zprnch(ji,jj,jk) = prmax(ji,jj,jk) * ( 1.- EXP( -zpislopen * enano(ji,jj,jk) ) ) 199 zprdch(ji,jj,jk) = prmax(ji,jj,jk) * ( 1.- EXP( -zpisloped * ediat(ji,jj,jk) ) ) 210 200 ENDIF 211 201 END DO … … 213 203 END DO 214 204 ENDIF 215 216 205 217 206 ! Computation of a proxy of the N/C ratio … … 256 245 END DO 257 246 258 ! Computation of the limitation term due to a mixed layer deeper than the euphotic depth 259 DO jj = 1, jpj 260 DO ji = 1, jpi 261 zmxltst = MAX( 0.e0, hmld(ji,jj) - heup(ji,jj) ) 262 zmxlday = zmxltst * zmxltst * r1_rday 263 zmixnano(ji,jj) = 1. - zmxlday / ( 2. + zmxlday ) 264 zmixdiat(ji,jj) = 1. - zmxlday / ( 4. + zmxlday ) 265 END DO 266 END DO 267 268 ! Mixed-layer effect on production 269 DO jk = 1, jpkm1 270 DO jj = 1, jpj 271 DO ji = 1, jpi 272 IF( gdepw_n(ji,jj,jk+1) <= hmld(ji,jj) ) THEN 273 zprbio(ji,jj,jk) = zprbio(ji,jj,jk) * zmixnano(ji,jj) 274 zprdia(ji,jj,jk) = zprdia(ji,jj,jk) * zmixdiat(ji,jj) 275 ENDIF 247 ! Mixed-layer effect on production 248 ! Sea-ice effect on production 249 250 DO jk = 1, jpkm1 251 DO jj = 1, jpj 252 DO ji = 1, jpi 276 253 zprbio(ji,jj,jk) = zprbio(ji,jj,jk) * ( 1. - fr_i(ji,jj) ) 277 254 zprdia(ji,jj,jk) = zprdia(ji,jj,jk) * ( 1. - fr_i(ji,jj) ) … … 285 262 DO ji = 1, jpi 286 263 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 287 ! production terms for nanophyto. 288 zprorca (ji,jj,jk) = zprbio(ji,jj,jk) * xlimphy(ji,jj,jk) * trb(ji,jj,jk,jpphy) * rfact2289 zpronew (ji,jj,jk) = zprorca(ji,jj,jk)* xnanono3(ji,jj,jk) / ( xnanono3(ji,jj,jk) + xnanonh4(ji,jj,jk) + rtrn )264 ! production terms for nanophyto. (C) 265 zprorcan(ji,jj,jk) = zprbio(ji,jj,jk) * xlimphy(ji,jj,jk) * trb(ji,jj,jk,jpphy) * rfact2 266 zpronewn(ji,jj,jk) = zprorcan(ji,jj,jk)* xnanono3(ji,jj,jk) / ( xnanono3(ji,jj,jk) + xnanonh4(ji,jj,jk) + rtrn ) 290 267 ! 291 zratio = trb(ji,jj,jk,jpnfe) / ( trb(ji,jj,jk,jpphy) + rtrn ) 292 zratio = zratio / fecnm 268 zratio = trb(ji,jj,jk,jpnfe) / ( trb(ji,jj,jk,jpphy) * fecnm + rtrn ) 293 269 zmax = MAX( 0., ( 1. - zratio ) / ABS( 1.05 - zratio ) ) 294 zprofen(ji,jj,jk) = fecnm * prmax(ji,jj,jk) &270 zprofen(ji,jj,jk) = fecnm * prmax(ji,jj,jk) * ( 1.0 - fr_i(ji,jj) ) & 295 271 & * ( 4. - 4.5 * xlimnfe(ji,jj,jk) / ( xlimnfe(ji,jj,jk) + 0.5 ) ) & 296 272 & * biron(ji,jj,jk) / ( biron(ji,jj,jk) + concnfe(ji,jj,jk) ) & 297 273 & * zmax * trb(ji,jj,jk,jpphy) * rfact2 298 ! production terms for diatom ees274 ! production terms for diatoms (C) 299 275 zprorcad(ji,jj,jk) = zprdia(ji,jj,jk) * xlimdia(ji,jj,jk) * trb(ji,jj,jk,jpdia) * rfact2 300 276 zpronewd(ji,jj,jk) = zprorcad(ji,jj,jk) * xdiatno3(ji,jj,jk) / ( xdiatno3(ji,jj,jk) + xdiatnh4(ji,jj,jk) + rtrn ) 301 277 ! 302 zratio = trb(ji,jj,jk,jpdfe) / ( trb(ji,jj,jk,jpdia) + rtrn ) 303 zratio = zratio / fecdm 278 zratio = trb(ji,jj,jk,jpdfe) / ( trb(ji,jj,jk,jpdia) * fecdm + rtrn ) 304 279 zmax = MAX( 0., ( 1. - zratio ) / ABS( 1.05 - zratio ) ) 305 zprofed(ji,jj,jk) = fecdm * prmax(ji,jj,jk) &280 zprofed(ji,jj,jk) = fecdm * prmax(ji,jj,jk) * ( 1.0 - fr_i(ji,jj) ) & 306 281 & * ( 4. - 4.5 * xlimdfe(ji,jj,jk) / ( xlimdfe(ji,jj,jk) + 0.5 ) ) & 307 282 & * biron(ji,jj,jk) / ( biron(ji,jj,jk) + concdfe(ji,jj,jk) ) & … … 312 287 END DO 313 288 314 DO jk = 1, jpkm1 315 DO jj = 1, jpj 316 DO ji = 1, jpi 317 IF( gdepw_n(ji,jj,jk+1) <= hmld(ji,jj) ) THEN 318 zprnch(ji,jj,jk) = zprnch(ji,jj,jk) * zmixnano(ji,jj) 319 zprdch(ji,jj,jk) = zprdch(ji,jj,jk) * zmixdiat(ji,jj) 320 ENDIF 289 ! Computation of the chlorophyll production terms 290 DO jk = 1, jpkm1 291 DO jj = 1, jpj 292 DO ji = 1, jpi 321 293 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 322 294 ! production terms for nanophyto. ( chlorophyll ) 323 znanotot = enano(ji,jj,jk) * zstrn(ji,jj) 324 zprod = rday * zprorca(ji,jj,jk) * zprnch(ji,jj,jk) * xlimphy(ji,jj,jk) 325 zprochln(ji,jj,jk) = chlcmin * 12. * zprorca (ji,jj,jk) 326 zprochln(ji,jj,jk) = zprochln(ji,jj,jk) + (chlcnm-chlcmin) * 12. * zprod / & 327 & ( zpislopead(ji,jj,jk) * znanotot +rtrn) 328 ! production terms for diatomees ( chlorophyll ) 329 zdiattot = ediat(ji,jj,jk) * zstrn(ji,jj) 330 zprod = rday * zprorcad(ji,jj,jk) * zprdch(ji,jj,jk) * xlimdia(ji,jj,jk) 331 zprochld(ji,jj,jk) = chlcmin * 12. * zprorcad(ji,jj,jk) 332 zprochld(ji,jj,jk) = zprochld(ji,jj,jk) + (chlcdm-chlcmin) * 12. * zprod / & 333 & ( zpislopead2(ji,jj,jk) * zdiattot +rtrn ) 295 znanotot = enano(ji,jj,jk) / ( zmxl_chl(ji,jj,jk) + rtrn ) 296 zprod = rday * zprorcan(ji,jj,jk) * zprnch(ji,jj,jk) * xlimphy(ji,jj,jk) 297 zprochln = chlcmin * 12. * zprorcan (ji,jj,jk) 298 chlcnm_n = MIN ( chlcnm, ( chlcnm / (1. - 1.14 / 43.4 *tsn(ji,jj,jk,jp_tem))) * (1. - 1.14 / 43.4 * 20.)) 299 zprochln = zprochln + (chlcnm_n-chlcmin) * 12. * zprod / & 300 & ( zpislopeadn(ji,jj,jk) * znanotot +rtrn) 301 ! production terms for diatoms ( chlorophyll ) 302 zdiattot = ediat(ji,jj,jk) / ( zmxl_chl(ji,jj,jk) + rtrn ) 303 zprod = rday * zprorcad(ji,jj,jk) * zprdch(ji,jj,jk) * xlimdia(ji,jj,jk) 304 zprochld = chlcmin * 12. * zprorcad(ji,jj,jk) 305 chlcdm_n = MIN ( chlcdm, ( chlcdm / (1. - 1.14 / 43.4 * tsn(ji,jj,jk,jp_tem))) * (1. - 1.14 / 43.4 * 20.)) 306 zprochld = zprochld + (chlcdm_n-chlcmin) * 12. * zprod / & 307 & ( zpislopeadd(ji,jj,jk) * zdiattot +rtrn ) 308 ! Update the arrays TRA which contain the Chla sources and sinks 309 tra(ji,jj,jk,jpnch) = tra(ji,jj,jk,jpnch) + zprochln * texcretn 310 tra(ji,jj,jk,jpdch) = tra(ji,jj,jk,jpdch) + zprochld * texcretd 334 311 ENDIF 335 312 END DO … … 341 318 DO jj = 1, jpj 342 319 DO ji =1 ,jpi 343 zproreg = zprorca(ji,jj,jk) - zpronew(ji,jj,jk) 344 zproreg2 = zprorcad(ji,jj,jk) - zpronewd(ji,jj,jk) 345 tra(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) - zprorca(ji,jj,jk) - zprorcad(ji,jj,jk) 346 tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) - zpronew(ji,jj,jk) - zpronewd(ji,jj,jk) 347 tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) - zproreg - zproreg2 348 tra(ji,jj,jk,jpphy) = tra(ji,jj,jk,jpphy) + zprorca(ji,jj,jk) * texcret 349 tra(ji,jj,jk,jpnch) = tra(ji,jj,jk,jpnch) + zprochln(ji,jj,jk) * texcret 350 tra(ji,jj,jk,jpnfe) = tra(ji,jj,jk,jpnfe) + zprofen(ji,jj,jk) * texcret 351 tra(ji,jj,jk,jpdia) = tra(ji,jj,jk,jpdia) + zprorcad(ji,jj,jk) * texcret2 352 tra(ji,jj,jk,jpdch) = tra(ji,jj,jk,jpdch) + zprochld(ji,jj,jk) * texcret2 353 tra(ji,jj,jk,jpdfe) = tra(ji,jj,jk,jpdfe) + zprofed(ji,jj,jk) * texcret2 354 tra(ji,jj,jk,jpdsi) = tra(ji,jj,jk,jpdsi) + zprorcad(ji,jj,jk) * zysopt(ji,jj,jk) * texcret2 355 tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + excret2 * zprorcad(ji,jj,jk) + excret * zprorca(ji,jj,jk) 356 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) + o2ut * ( zproreg + zproreg2) & 357 & + ( o2ut + o2nit ) * ( zpronew(ji,jj,jk) + zpronewd(ji,jj,jk) ) 358 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - texcret * zprofen(ji,jj,jk) - texcret2 * zprofed(ji,jj,jk) 359 tra(ji,jj,jk,jpsil) = tra(ji,jj,jk,jpsil) - texcret2 * zprorcad(ji,jj,jk) * zysopt(ji,jj,jk) 360 tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) - zprorca(ji,jj,jk) - zprorcad(ji,jj,jk) 361 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * ( zpronew(ji,jj,jk) + zpronewd(ji,jj,jk) ) & 362 & - rno3 * ( zproreg + zproreg2 ) 363 END DO 320 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 321 zproreg = zprorcan(ji,jj,jk) - zpronewn(ji,jj,jk) 322 zproreg2 = zprorcad(ji,jj,jk) - zpronewd(ji,jj,jk) 323 zdocprod = excretd * zprorcad(ji,jj,jk) + excretn * zprorcan(ji,jj,jk) 324 tra(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) - zprorcan(ji,jj,jk) - zprorcad(ji,jj,jk) 325 tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) - zpronewn(ji,jj,jk) - zpronewd(ji,jj,jk) 326 tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) - zproreg - zproreg2 327 tra(ji,jj,jk,jpphy) = tra(ji,jj,jk,jpphy) + zprorcan(ji,jj,jk) * texcretn 328 tra(ji,jj,jk,jpnfe) = tra(ji,jj,jk,jpnfe) + zprofen(ji,jj,jk) * texcretn 329 tra(ji,jj,jk,jpdia) = tra(ji,jj,jk,jpdia) + zprorcad(ji,jj,jk) * texcretd 330 tra(ji,jj,jk,jpdfe) = tra(ji,jj,jk,jpdfe) + zprofed(ji,jj,jk) * texcretd 331 tra(ji,jj,jk,jpdsi) = tra(ji,jj,jk,jpdsi) + zprorcad(ji,jj,jk) * zysopt(ji,jj,jk) * texcretd 332 tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + zdocprod 333 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) + o2ut * ( zproreg + zproreg2) & 334 & + ( o2ut + o2nit ) * ( zpronewn(ji,jj,jk) + zpronewd(ji,jj,jk) ) 335 ! 336 zfeup = texcretn * zprofen(ji,jj,jk) + texcretd * zprofed(ji,jj,jk) 337 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zfeup 338 tra(ji,jj,jk,jpsil) = tra(ji,jj,jk,jpsil) - texcretd * zprorcad(ji,jj,jk) * zysopt(ji,jj,jk) 339 tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) - zprorcan(ji,jj,jk) - zprorcad(ji,jj,jk) 340 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * ( zpronewn(ji,jj,jk) + zpronewd(ji,jj,jk) ) & 341 & - rno3 * ( zproreg + zproreg2 ) 342 ENDIF 343 END DO 364 344 END DO 365 345 END DO 346 ! 347 IF( ln_ligand ) THEN 348 DO jk = 1, jpkm1 349 DO jj = 1, jpj 350 DO ji =1 ,jpi 351 IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 352 zdocprod = excretd * zprorcad(ji,jj,jk) + excretn * zprorcan(ji,jj,jk) 353 zfeup = texcretn * zprofen(ji,jj,jk) + texcretd * zprofed(ji,jj,jk) 354 tra(ji,jj,jk,jplgw) = tra(ji,jj,jk,jplgw) + zdocprod * ldocp - zfeup * plig(ji,jj,jk) * lthet 355 ENDIF 356 END DO 357 END DO 358 END DO 359 ENDIF 366 360 367 361 368 362 ! Total primary production per year 369 363 IF( iom_use( "tintpp" ) .OR. ( ln_check_mass .AND. kt == nitend .AND. knt == nrdttrc ) ) & 370 & tpp = glob_sum( ( zprorca (:,:,:) + zprorcad(:,:,:) ) * cvol(:,:,:) )364 & tpp = glob_sum( ( zprorcan(:,:,:) + zprorcad(:,:,:) ) * cvol(:,:,:) ) 371 365 372 366 IF( lk_iomput ) THEN … … 376 370 zfact = 1.e+3 * rfact2r ! conversion from mol/l/kt to mol/m3/s 377 371 ! 378 IF( iom_use( "PPPHY " ) .OR. iom_use( "PPPHY2" ) ) THEN379 zw3d(:,:,:) = zprorca 380 CALL iom_put( "PPPHY " , zw3d )372 IF( iom_use( "PPPHYN" ) .OR. iom_use( "PPPHYD" ) ) THEN 373 zw3d(:,:,:) = zprorcan(:,:,:) * zfact * tmask(:,:,:) ! primary production by nanophyto 374 CALL iom_put( "PPPHYN" , zw3d ) 381 375 ! 382 376 zw3d(:,:,:) = zprorcad(:,:,:) * zfact * tmask(:,:,:) ! primary production by diatomes 383 CALL iom_put( "PPPHY 2" , zw3d )377 CALL iom_put( "PPPHYD" , zw3d ) 384 378 ENDIF 385 379 IF( iom_use( "PPNEWN" ) .OR. iom_use( "PPNEWD" ) ) THEN 386 zw3d(:,:,:) = zpronew 380 zw3d(:,:,:) = zpronewn(:,:,:) * zfact * tmask(:,:,:) ! new primary production by nanophyto 387 381 CALL iom_put( "PPNEWN" , zw3d ) 388 382 ! … … 420 414 ENDIF 421 415 IF( iom_use( "TPP" ) ) THEN 422 zw3d(:,:,:) = ( zprorca (:,:,:) + zprorcad(:,:,:) ) * zfact * tmask(:,:,:) ! total primary production416 zw3d(:,:,:) = ( zprorcan(:,:,:) + zprorcad(:,:,:) ) * zfact * tmask(:,:,:) ! total primary production 423 417 CALL iom_put( "TPP" , zw3d ) 424 418 ENDIF 425 419 IF( iom_use( "TPNEW" ) ) THEN 426 zw3d(:,:,:) = ( zpronew (:,:,:) + zpronewd(:,:,:) ) * zfact * tmask(:,:,:) ! total new production420 zw3d(:,:,:) = ( zpronewn(:,:,:) + zpronewd(:,:,:) ) * zfact * tmask(:,:,:) ! total new production 427 421 CALL iom_put( "TPNEW" , zw3d ) 428 422 ENDIF … … 431 425 CALL iom_put( "TPBFE" , zw3d ) 432 426 ENDIF 433 IF( iom_use( "INTPPPHY " ) .OR. iom_use( "INTPPPHY2" ) ) THEN427 IF( iom_use( "INTPPPHYN" ) .OR. iom_use( "INTPPPHYD" ) ) THEN 434 428 zw2d(:,:) = 0. 435 429 DO jk = 1, jpkm1 436 zw2d(:,:) = zw2d(:,:) + zprorca 430 zw2d(:,:) = zw2d(:,:) + zprorcan(:,:,jk) * e3t_n(:,:,jk) * zfact * tmask(:,:,jk) ! vert. integrated primary produc. by nano 437 431 ENDDO 438 CALL iom_put( "INTPPPHY " , zw2d )432 CALL iom_put( "INTPPPHYN" , zw2d ) 439 433 ! 440 434 zw2d(:,:) = 0. … … 442 436 zw2d(:,:) = zw2d(:,:) + zprorcad(:,:,jk) * e3t_n(:,:,jk) * zfact * tmask(:,:,jk) ! vert. integrated primary produc. by diatom 443 437 ENDDO 444 CALL iom_put( "INTPPPHY 2" , zw2d )438 CALL iom_put( "INTPPPHYD" , zw2d ) 445 439 ENDIF 446 440 IF( iom_use( "INTPP" ) ) THEN 447 441 zw2d(:,:) = 0. 448 442 DO jk = 1, jpkm1 449 zw2d(:,:) = zw2d(:,:) + ( zprorca (:,:,jk) + zprorcad(:,:,jk) ) * e3t_n(:,:,jk) * zfact * tmask(:,:,jk) ! vert. integrated pp443 zw2d(:,:) = zw2d(:,:) + ( zprorcan(:,:,jk) + zprorcad(:,:,jk) ) * e3t_n(:,:,jk) * zfact * tmask(:,:,jk) ! vert. integrated pp 450 444 ENDDO 451 445 CALL iom_put( "INTPP" , zw2d ) … … 454 448 zw2d(:,:) = 0. 455 449 DO jk = 1, jpkm1 456 zw2d(:,:) = zw2d(:,:) + ( zpronew (:,:,jk) + zpronewd(:,:,jk) ) * e3t_n(:,:,jk) * zfact * tmask(:,:,jk) ! vert. integrated new prod450 zw2d(:,:) = zw2d(:,:) + ( zpronewn(:,:,jk) + zpronewd(:,:,jk) ) * e3t_n(:,:,jk) * zfact * tmask(:,:,jk) ! vert. integrated new prod 457 451 ENDDO 458 452 CALL iom_put( "INTPNEW" , zw2d ) … … 485 479 ENDIF 486 480 ! 487 CALL wrk_dealloc( jpi, jpj, zmixnano, zmixdiat, zstrn ) 488 CALL wrk_dealloc( jpi, jpj, jpk, zpislopead, zpislopead2, zprdia, zprbio, zprdch, zprnch, zysopt ) 489 CALL wrk_dealloc( jpi, jpj, jpk, zprorca, zprorcad, zprofed, zprofen, zprochln, zprochld, zpronew, zpronewd ) 481 CALL wrk_dealloc( jpi, jpj, zmixnano, zmixdiat, zstrn ) 482 CALL wrk_dealloc( jpi, jpj, jpk, zpislopeadn, zpislopeadd, zprdia, zprbio, zprdch, zprnch, zysopt ) 483 CALL wrk_dealloc( jpi, jpj, jpk, zmxl_fac, zmxl_chl ) 484 CALL wrk_dealloc( jpi, jpj, jpk, zprorcan, zprorcad, zprofed, zprofen, zpronewn, zpronewd ) 490 485 ! 491 486 IF( nn_timing == 1 ) CALL timing_stop('p4z_prod') … … 506 501 !!---------------------------------------------------------------------- 507 502 ! 508 NAMELIST/namp isprod/ pislope, pislope2, xadap, ln_newprod, bresp, excret, excret2, &503 NAMELIST/namp4zprod/ pislopen, pisloped, xadap, ln_newprod, bresp, excretn, excretd, & 509 504 & chlcnm, chlcdm, chlcmin, fecnm, fecdm, grosip 510 505 INTEGER :: ios ! Local integer output status for namelist read … … 512 507 513 508 REWIND( numnatp_ref ) ! Namelist nampisprod in reference namelist : Pisces phytoplankton production 514 READ ( numnatp_ref, namp isprod, IOSTAT = ios, ERR = 901)515 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp isprod in reference namelist', lwp )509 READ ( numnatp_ref, namp4zprod, IOSTAT = ios, ERR = 901) 510 901 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp4zprod in reference namelist', lwp ) 516 511 517 512 REWIND( numnatp_cfg ) ! Namelist nampisprod in configuration namelist : Pisces phytoplankton production 518 READ ( numnatp_cfg, namp isprod, IOSTAT = ios, ERR = 902 )519 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp isprod in configuration namelist', lwp )520 IF(lwm) WRITE ( numonp, namp isprod )513 READ ( numnatp_cfg, namp4zprod, IOSTAT = ios, ERR = 902 ) 514 902 IF( ios /= 0 ) CALL ctl_nam ( ios , 'namp4zprod in configuration namelist', lwp ) 515 IF(lwm) WRITE ( numonp, namp4zprod ) 521 516 522 517 IF(lwp) THEN ! control print 523 518 WRITE(numout,*) ' ' 524 WRITE(numout,*) ' Namelist parameters for phytoplankton growth, namp isprod'519 WRITE(numout,*) ' Namelist parameters for phytoplankton growth, namp4zprod' 525 520 WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' 526 WRITE(numout,*) ' Enable new parame. of production (T/F) ln_newprod =', ln_newprod521 WRITE(numout,*) ' Enable new parame. of production (T/F) ln_newprod =', ln_newprod 527 522 WRITE(numout,*) ' mean Si/C ratio grosip =', grosip 528 WRITE(numout,*) ' P-I slope pislope =', pislope529 WRITE(numout,*) ' Acclimation factor to low light xadap =', xadap530 WRITE(numout,*) ' excretion ratio of nanophytoplankton excret =', excret531 WRITE(numout,*) ' excretion ratio of diatoms excret 2 =', excret2523 WRITE(numout,*) ' P-I slope pislopen =', pislopen 524 WRITE(numout,*) ' Acclimation factor to low light xadap =', xadap 525 WRITE(numout,*) ' excretion ratio of nanophytoplankton excretn =', excretn 526 WRITE(numout,*) ' excretion ratio of diatoms excretd =', excretd 532 527 IF( ln_newprod ) THEN 533 528 WRITE(numout,*) ' basal respiration in phytoplankton bresp =', bresp 534 529 WRITE(numout,*) ' Maximum Chl/C in phytoplankton chlcmin =', chlcmin 535 530 ENDIF 536 WRITE(numout,*) ' P-I slope for diatoms pislope 2 =', pislope2531 WRITE(numout,*) ' P-I slope for diatoms pisloped =', pisloped 537 532 WRITE(numout,*) ' Minimum Chl/C in nanophytoplankton chlcnm =', chlcnm 538 533 WRITE(numout,*) ' Minimum Chl/C in diatoms chlcdm =', chlcdm … … 542 537 ! 543 538 r1_rday = 1._wp / rday 544 texcret = 1._wp - excret545 texcret 2 = 1._wp - excret2539 texcretn = 1._wp - excretn 540 texcretd = 1._wp - excretd 546 541 tpp = 0._wp 547 542 ! … … 558 553 ! 559 554 END FUNCTION p4z_prod_alloc 560 561 555 !!====================================================================== 562 556 END MODULE p4zprod -
branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zrem.F90
r7068 r7162 15 15 USE trc ! passive tracers common variables 16 16 USE sms_pisces ! PISCES Source Minus Sink variables 17 USE p4zopt ! optical model18 17 USE p4zche ! chemical model 19 18 USE p4zprod ! Growth rate of the 2 phyto groups 20 USE p4zmeso ! Sources and sinks of mesozooplankton21 USE p4zint ! interpolation and computation of various fields22 19 USE p4zlim 23 20 USE prtctl_trc ! print control for debugging … … 33 30 34 31 !! * Shared module variables 32 REAL(wp), PUBLIC :: xremikc !: remineralisation rate of DOC 33 REAL(wp), PUBLIC :: xremikn !: remineralisation rate of DON 34 REAL(wp), PUBLIC :: xremikp !: remineralisation rate of DOP 35 35 REAL(wp), PUBLIC :: xremik !: remineralisation rate of POC 36 REAL(wp), PUBLIC :: xremip !: remineralisation rate of DOC37 36 REAL(wp), PUBLIC :: nitrif !: NH4 nitrification rate 38 37 REAL(wp), PUBLIC :: xsirem !: remineralisation rate of POC 39 38 REAL(wp), PUBLIC :: xsiremlab !: fast remineralisation rate of POC 40 39 REAL(wp), PUBLIC :: xsilab !: fraction of labile biogenic silica 41 40 REAL(wp), PUBLIC :: feratb !: Fe/C quota in bacteria 41 REAL(wp), PUBLIC :: xkferb !: Half-saturation constant for bacteria Fe/C 42 42 43 43 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: denitr !: denitrification array 44 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: denitnh4 !: - - - - -45 44 46 45 !!---------------------------------------------------------------------- … … 63 62 ! 64 63 INTEGER :: ji, jj, jk 65 REAL(wp) :: zremi p, zremik, zsiremin64 REAL(wp) :: zremik, zremikc, zremikn, zremikp, zsiremin, zfact 66 65 REAL(wp) :: zsatur, zsatur2, znusil, znusil2, zdep, zdepmin, zfactdep 67 REAL(wp) :: zbactfer, zorem, zorem2, zofer, zolimit 68 REAL(wp) :: zosil, ztem 69 REAL(wp) :: zofer2 70 REAL(wp) :: zonitr, zfact 66 REAL(wp) :: zbactfer, zolimit, zonitr, zrfact2 67 REAL(wp) :: zosil, ztem, zdenitnh4, zolimic, zolimin, zolimip, zdenitrn, zdenitrp 71 68 CHARACTER (len=25) :: charout 72 69 REAL(wp), POINTER, DIMENSION(:,: ) :: ztempbac 73 REAL(wp), POINTER, DIMENSION(:,:,:) :: zdepbac, zolimi, zdepprod, z w3d70 REAL(wp), POINTER, DIMENSION(:,:,:) :: zdepbac, zolimi, zdepprod, zfacsi, zw3d, zfacsib 74 71 !!--------------------------------------------------------------------- 75 72 ! … … 78 75 ! Allocate temporary workspace 79 76 CALL wrk_alloc( jpi, jpj, ztempbac ) 80 CALL wrk_alloc( jpi, jpj, jpk, zdepbac, zdepprod, zolimi )77 CALL wrk_alloc( jpi, jpj, jpk, zdepbac, zdepprod, zolimi, zfacsi, zfacsib ) 81 78 82 79 ! Initialisation of temprary arrys 83 80 zdepprod(:,:,:) = 1._wp 84 81 ztempbac(:,:) = 0._wp 82 zfacsib(:,:,:) = xsilab / ( 1.0 - xsilab ) 83 zfacsi(:,:,:) = xsilab 85 84 86 85 ! Computation of the mean phytoplankton concentration as … … 105 104 END DO 106 105 107 DO jk = 1, jpkm1 108 DO jj = 1, jpj 109 DO ji = 1, jpi 110 ! DOC ammonification. Depends on depth, phytoplankton biomass 111 ! and a limitation term which is supposed to be a parameterization 112 ! of the bacterial activity. 113 zremik = xremik * xstep / 1.e-6 * xlimbac(ji,jj,jk) * zdepbac(ji,jj,jk) 114 zremik = MAX( zremik, 2.74e-4 * xstep ) 115 ! Ammonification in oxic waters with oxygen consumption 116 ! ----------------------------------------------------- 117 zolimit = zremik * ( 1.- nitrfac(ji,jj,jk) ) * trb(ji,jj,jk,jpdoc) 118 zolimi(ji,jj,jk) = MIN( ( trb(ji,jj,jk,jpoxy) - rtrn ) / o2ut, zolimit ) 119 ! Ammonification in suboxic waters with denitrification 120 ! ------------------------------------------------------- 121 denitr(ji,jj,jk) = MIN( ( trb(ji,jj,jk,jpno3) - rtrn ) / rdenit, & 122 & zremik * nitrfac(ji,jj,jk) * trb(ji,jj,jk,jpdoc) ) 123 ! 124 zolimi (ji,jj,jk) = MAX( 0.e0, zolimi (ji,jj,jk) ) 125 denitr (ji,jj,jk) = MAX( 0.e0, denitr (ji,jj,jk) ) 126 ! 127 END DO 128 END DO 129 END DO 106 IF( ln_p4z ) THEN 107 DO jk = 1, jpkm1 108 DO jj = 1, jpj 109 DO ji = 1, jpi 110 ! DOC ammonification. Depends on depth, phytoplankton biomass 111 ! and a limitation term which is supposed to be a parameterization of the bacterial activity. 112 zremik = xremik * xstep / 1.e-6 * xlimbac(ji,jj,jk) * zdepbac(ji,jj,jk) 113 zremik = MAX( zremik, 2.74e-4 * xstep ) 114 ! Ammonification in oxic waters with oxygen consumption 115 ! ----------------------------------------------------- 116 zolimit = zremik * ( 1.- nitrfac(ji,jj,jk) ) * trb(ji,jj,jk,jpdoc) 117 zolimi(ji,jj,jk) = MIN( ( trb(ji,jj,jk,jpoxy) - rtrn ) / o2ut, zolimit ) 118 ! Ammonification in suboxic waters with denitrification 119 ! ------------------------------------------------------- 120 denitr(ji,jj,jk) = MIN( ( trb(ji,jj,jk,jpno3) - rtrn ) / rdenit, & 121 & zremik * nitrfac(ji,jj,jk) * trb(ji,jj,jk,jpdoc) ) 122 ! 123 zolimi (ji,jj,jk) = MAX( 0.e0, zolimi (ji,jj,jk) ) 124 denitr (ji,jj,jk) = MAX( 0.e0, denitr (ji,jj,jk) ) 125 ! 126 tra(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) + zolimi (ji,jj,jk) + denitr(ji,jj,jk) 127 tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + zolimi (ji,jj,jk) + denitr(ji,jj,jk) 128 tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) - denitr (ji,jj,jk) * rdenit 129 tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) - zolimi (ji,jj,jk) - denitr(ji,jj,jk) 130 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - zolimi (ji,jj,jk) * o2ut 131 tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zolimi (ji,jj,jk) + denitr(ji,jj,jk) 132 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * ( zolimi(ji,jj,jk) & 133 & + ( rdenit + 1.) * denitr(ji,jj,jk) ) 134 END DO 135 END DO 136 END DO 137 ELSE 138 DO jk = 1, jpkm1 139 DO jj = 1, jpj 140 DO ji = 1, jpi 141 ! DOC ammonification. Depends on depth, phytoplankton biomass 142 ! and a limitation term which is supposed to be a parameterization of the bacterial activity. 143 ! ----------------------------------------------------------------- 144 zremik = xstep / 1.e-6 * MAX(0.01, xlimbac(ji,jj,jk)) * zdepbac(ji,jj,jk) 145 zremik = MAX( zremik, 2.74e-4 * xstep / xremikc ) 146 147 zremikc = xremikc * zremik 148 zremikn = xremikn / xremikc 149 zremikp = xremikp / xremikc 150 151 ! Ammonification in oxic waters with oxygen consumption 152 ! ----------------------------------------------------- 153 zolimit = zremikc * ( 1.- nitrfac(ji,jj,jk) ) * trb(ji,jj,jk,jpdoc) 154 zolimic = MAX( 0.e0, MIN( ( trb(ji,jj,jk,jpoxy) - rtrn ) / o2ut, zolimit ) ) 155 zolimi(ji,jj,jk) = zolimic 156 zolimin = zremikn * zolimic * trb(ji,jj,jk,jpdon) / ( trb(ji,jj,jk,jpdoc) + rtrn ) 157 zolimip = zremikp * zolimic * trb(ji,jj,jk,jpdop) / ( trb(ji,jj,jk,jpdoc) + rtrn ) 158 159 ! Ammonification in suboxic waters with denitrification 160 ! ------------------------------------------------------- 161 zolimit = zremikc * nitrfac(ji,jj,jk) * trb(ji,jj,jk,jpdoc) 162 denitr(ji,jj,jk) = MIN( ( trb(ji,jj,jk,jpno3) - rtrn ) / rdenit, zolimit ) 163 denitr(ji,jj,jk) = MAX( 0.e0, denitr(ji,jj,jk) ) 164 zdenitrn = zremikn * denitr(ji,jj,jk) * trb(ji,jj,jk,jpdon) / ( trb(ji,jj,jk,jpdoc) + rtrn ) 165 zdenitrp = zremikp * denitr(ji,jj,jk) * trb(ji,jj,jk,jpdop) / ( trb(ji,jj,jk,jpdoc) + rtrn ) 166 167 tra(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) + zolimip + zdenitrp 168 tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + zolimin + zdenitrn 169 tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) - denitr(ji,jj,jk) * rdenit 170 tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) - zolimic - denitr(ji,jj,jk) 171 tra(ji,jj,jk,jpdon) = tra(ji,jj,jk,jpdon) - zolimin - zdenitrn 172 tra(ji,jj,jk,jpdop) = tra(ji,jj,jk,jpdop) - zolimip - zdenitrp 173 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - zolimic * o2ut 174 tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zolimic + denitr(ji,jj,jk) 175 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * ( zolimin + ( rdenit + 1.) * zdenitrn ) 176 END DO 177 END DO 178 END DO 179 ! 180 ENDIF 130 181 131 182 … … 136 187 ! below 2 umol/L. Inhibited at strong light 137 188 ! ---------------------------------------------------------- 138 zonitr =nitrif * xstep * trb(ji,jj,jk,jpnh4) / ( 1.+ emoy(ji,jj,jk) ) * ( 1.- nitrfac(ji,jj,jk) ) 139 denitnh4(ji,jj,jk) = nitrif * xstep * trb(ji,jj,jk,jpnh4) * nitrfac(ji,jj,jk) 189 zonitr = nitrif * xstep * trb(ji,jj,jk,jpnh4) * ( 1.- nitrfac(ji,jj,jk) ) & 190 & / ( 1.+ emoy(ji,jj,jk) ) * ( 1. + fr_i(ji,jj) * emoy(ji,jj,jk) ) 191 zdenitnh4 = nitrif * xstep * trb(ji,jj,jk,jpnh4) * nitrfac(ji,jj,jk) 140 192 ! Update of the tracers trends 141 193 ! ---------------------------- 142 tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) - zonitr - denitnh4(ji,jj,jk)143 tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) + zonitr - rdenita * denitnh4(ji,jj,jk)194 tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) - zonitr - zdenitnh4 195 tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) + zonitr - rdenita * zdenitnh4 144 196 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - o2nit * zonitr 145 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2 * rno3 * zonitr + rno3 * ( rdenita - 1. ) * denitnh4(ji,jj,jk)197 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2 * rno3 * zonitr + rno3 * ( rdenita - 1. ) * zdenitnh4 146 198 END DO 147 199 END DO … … 162 214 ! studies (especially at Papa) have shown this uptake to be significant 163 215 ! ---------------------------------------------------------- 164 zbactfer = 10.e-6* rfact2 * prmax(ji,jj,jk) * xlimbacl(ji,jj,jk) &165 & * trb(ji,jj,jk,jpfer) / ( 2.5E-10+ trb(ji,jj,jk,jpfer) ) &216 zbactfer = feratb * rfact2 * prmax(ji,jj,jk) * xlimbacl(ji,jj,jk) & 217 & * trb(ji,jj,jk,jpfer) / ( xkferb + trb(ji,jj,jk,jpfer) ) & 166 218 & * zdepprod(ji,jj,jk) * zdepbac(ji,jj,jk) 167 219 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zbactfer*0.16 … … 178 230 ENDIF 179 231 232 ! Initialization of the array which contains the labile fraction 233 ! of bSi. Set to a constant in the upper ocean 234 ! --------------------------------------------------------------- 235 180 236 DO jk = 1, jpkm1 181 237 DO jj = 1, jpj 182 238 DO ji = 1, jpi 183 ! POC disaggregation by turbulence and bacterial activity. 184 ! -------------------------------------------------------- 185 zremip = xremip * xstep * tgfunc(ji,jj,jk) * ( 1.- 0.55 * nitrfac(ji,jj,jk) ) 186 187 ! POC disaggregation rate is reduced in anoxic zone as shown by 188 ! sediment traps data. In oxic area, the exponent of the martin s 189 ! law is around -0.87. In anoxic zone, it is around -0.35. This 190 ! means a disaggregation constant about 0.5 the value in oxic zones 191 ! ----------------------------------------------------------------- 192 zorem = zremip * trb(ji,jj,jk,jppoc) 193 zofer = zremip * trb(ji,jj,jk,jpsfe) 194 zorem2 = zremip * trb(ji,jj,jk,jpgoc) 195 zofer2 = zremip * trb(ji,jj,jk,jpbfe) 196 197 ! Update the appropriate tracers trends 198 ! ------------------------------------- 199 200 tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + zorem 201 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + zofer 202 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zorem2 - zorem 203 tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) - zorem2 204 tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zofer2 - zofer 205 tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) - zofer2 206 207 END DO 208 END DO 209 END DO 210 211 IF(ln_ctl) THEN ! print mean trends (used for debugging) 212 WRITE(charout, FMT="('rem3')") 213 CALL prt_ctl_trc_info(charout) 214 CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm) 215 ENDIF 216 217 DO jk = 1, jpkm1 218 DO jj = 1, jpj 219 DO ji = 1, jpi 239 zdep = MAX( hmld(ji,jj), heup_01(ji,jj) ) 240 zsatur = MAX( rtrn, ( sio3eq(ji,jj,jk) - trb(ji,jj,jk,jpsil) ) / ( sio3eq(ji,jj,jk) + rtrn ) ) 241 zsatur2 = ( 1. + tsn(ji,jj,jk,jp_tem) / 400.)**37 242 znusil = 0.225 * ( 1. + tsn(ji,jj,jk,jp_tem) / 15.) * zsatur + 0.775 * zsatur2 * zsatur**9.25 220 243 ! Remineralization rate of BSi depedant on T and saturation 221 244 ! --------------------------------------------------------- 222 zsatur = ( sio3eq(ji,jj,jk) - trb(ji,jj,jk,jpsil) ) / ( sio3eq(ji,jj,jk) + rtrn ) 223 zsatur = MAX( rtrn, zsatur ) 224 zsatur2 = ( 1. + tsn(ji,jj,jk,jp_tem) / 400.)**37 225 znusil = 0.225 * ( 1. + tsn(ji,jj,jk,jp_tem) / 15.) * zsatur + 0.775 * zsatur2 * zsatur**9.25 226 znusil2 = 0.225 * ( 1. + tsn(ji,jj,1,jp_tem) / 15.) + 0.775 * zsatur2 227 228 ! Two classes of BSi are considered : a labile fraction and 229 ! a more refractory one. The ratio between both fractions is 230 ! constant and specified in the namelist. 231 ! ---------------------------------------------------------- 232 zdep = MAX( hmld(ji,jj), heup(ji,jj) ) 233 zdep = MAX( 0., gdept_n(ji,jj,jk) - zdep ) 234 ztem = MAX( tsn(ji,jj,1,jp_tem), 0. ) 235 zfactdep = xsilab * EXP(-( xsiremlab - xsirem ) * znusil2 * zdep / wsbio2 ) * ztem / ( ztem + 10. ) 236 zsiremin = ( xsiremlab * zfactdep + xsirem * ( 1. - zfactdep ) ) * xstep * znusil 245 IF ( gdept_n(ji,jj,jk) > zdep ) THEN 246 zfacsib(ji,jj,jk) = zfacsib(ji,jj,jk-1) * EXP( -0.5 * ( xsiremlab - xsirem ) & 247 & * znusil * e3t_n(ji,jj,jk) / wsbio4(ji,jj,jk) ) 248 zfacsi(ji,jj,jk) = zfacsib(ji,jj,jk) / ( 1.0 + zfacsib(ji,jj,jk) ) 249 zfacsib(ji,jj,jk) = zfacsib(ji,jj,jk) * EXP( -0.5 * ( xsiremlab - xsirem ) & 250 & * znusil * e3t_n(ji,jj,jk) / wsbio4(ji,jj,jk) ) 251 ENDIF 252 zsiremin = ( xsiremlab * zfacsi(ji,jj,jk) + xsirem * ( 1. - zfacsi(ji,jj,jk) ) ) * xstep * znusil 237 253 zosil = zsiremin * trb(ji,jj,jk,jpgsi) 238 254 ! … … 245 261 246 262 IF(ln_ctl) THEN ! print mean trends (used for debugging) 247 WRITE(charout, FMT="('rem 4')")263 WRITE(charout, FMT="('rem3')") 248 264 CALL prt_ctl_trc_info(charout) 249 265 CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm) 250 266 ENDIF 251 252 ! Update the arrays TRA which contain the biological sources and sinks253 ! --------------------------------------------------------------------254 255 DO jk = 1, jpkm1256 tra(:,:,jk,jppo4) = tra(:,:,jk,jppo4) + zolimi (:,:,jk) + denitr(:,:,jk)257 tra(:,:,jk,jpnh4) = tra(:,:,jk,jpnh4) + zolimi (:,:,jk) + denitr(:,:,jk)258 tra(:,:,jk,jpno3) = tra(:,:,jk,jpno3) - denitr (:,:,jk) * rdenit259 tra(:,:,jk,jpdoc) = tra(:,:,jk,jpdoc) - zolimi (:,:,jk) - denitr(:,:,jk)260 tra(:,:,jk,jpoxy) = tra(:,:,jk,jpoxy) - zolimi (:,:,jk) * o2ut261 tra(:,:,jk,jpdic) = tra(:,:,jk,jpdic) + zolimi (:,:,jk) + denitr(:,:,jk)262 tra(:,:,jk,jptal) = tra(:,:,jk,jptal) + rno3 * ( zolimi(:,:,jk) + ( rdenit + 1.) * denitr(:,:,jk) )263 END DO264 267 265 268 IF( knt == nrdttrc ) THEN … … 278 281 CALL wrk_dealloc( jpi, jpj, jpk, zw3d ) 279 282 ENDIF 280 281 IF(ln_ctl) THEN ! print mean trends (used for debugging)282 WRITE(charout, FMT="('rem6')")283 CALL prt_ctl_trc_info(charout)284 CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm)285 ENDIF286 283 ! 287 284 CALL wrk_dealloc( jpi, jpj, ztempbac ) 288 CALL wrk_dealloc( jpi, jpj, jpk, zdepbac, zdepprod, zolimi )285 CALL wrk_dealloc( jpi, jpj, jpk, zdepbac, zdepprod, zolimi, zfacsi, zfacsib ) 289 286 ! 290 287 IF( nn_timing == 1 ) CALL timing_stop('p4z_rem') … … 305 302 !! 306 303 !!---------------------------------------------------------------------- 307 NAMELIST/nampisrem/ xremik, xremip, nitrif, xsirem, xsiremlab, xsilab 304 NAMELIST/nampisrem/ xremik, nitrif, xsirem, xsiremlab, xsilab, feratb, xkferb, & 305 & xremikc, xremikn, xremikp 308 306 INTEGER :: ios ! Local integer output status for namelist read 309 307 … … 321 319 WRITE(numout,*) ' Namelist parameters for remineralization, nampisrem' 322 320 WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' 323 WRITE(numout,*) ' remineralisation rate of POC xremip =', xremip 324 WRITE(numout,*) ' remineralization rate of DOC xremik =', xremik 321 IF( ln_p4z ) THEN 322 WRITE(numout,*) ' remineralization rate of DOC xremik =', xremik 323 ELSE 324 WRITE(numout,*) ' remineralization rate of DOC xremikc =', xremikc 325 WRITE(numout,*) ' remineralization rate of DON xremikn =', xremikn 326 WRITE(numout,*) ' remineralization rate of DOP xremikp =', xremikp 327 ENDIF 325 328 WRITE(numout,*) ' remineralization rate of Si xsirem =', xsirem 326 329 WRITE(numout,*) ' fast remineralization rate of Si xsiremlab =', xsiremlab 327 330 WRITE(numout,*) ' fraction of labile biogenic silica xsilab =', xsilab 328 331 WRITE(numout,*) ' NH4 nitrification rate nitrif =', nitrif 332 WRITE(numout,*) ' Bacterial Fe/C ratio feratb =', feratb 333 WRITE(numout,*) ' Half-saturation constant for bact. Fe/C xkferb =', xkferb 329 334 ENDIF 330 335 ! 331 336 denitr (:,:,:) = 0._wp 332 denitnh4(:,:,:) = 0._wp333 337 ! 334 338 END SUBROUTINE p4z_rem_init … … 339 343 !! *** ROUTINE p4z_rem_alloc *** 340 344 !!---------------------------------------------------------------------- 341 ALLOCATE( denitr(jpi,jpj,jpk), denitnh4(jpi,jpj,jpk),STAT=p4z_rem_alloc )345 ALLOCATE( denitr(jpi,jpj,jpk), STAT=p4z_rem_alloc ) 342 346 ! 343 347 IF( p4z_rem_alloc /= 0 ) CALL ctl_warn('p4z_rem_alloc: failed to allocate arrays') -
branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsbc.F90
r7068 r7162 37 37 REAL(wp), PUBLIC :: concfediaz !: Fe half-saturation Cste for diazotrophs 38 38 REAL(wp) :: hratio !: Fe:3He ratio assumed for vent iron supply 39 REAL(wp), PUBLIC :: fep_rats !: Fep/Fer ratio from sed sources 40 REAL(wp), PUBLIC :: fep_rath !: Fep/Fer ratio from hydro sources 41 39 42 40 43 LOGICAL , PUBLIC :: ll_sbc … … 66 69 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: rivdic, rivalk !: river input fields 67 70 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: rivdin, rivdip !: river input fields 71 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: rivdon, rivdop !: river input fields 72 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: rivdoc !: river input fields 68 73 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: rivdsi !: river input fields 69 74 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: nitdep !: atmospheric N deposition … … 130 135 IF( kt == nit000 .OR. ( kt /= nit000 .AND. ntimes_riv > 1 ) ) THEN 131 136 CALL fld_read( kt, 1, sf_river ) 132 DO jj = 1, jpj 133 DO ji = 1, jpi 134 zcoef = ryyss * e1e2t(ji,jj) * h_rnf(ji,jj) 135 rivalk(ji,jj) = sf_river(jr_dic)%fnow(ji,jj,1) & 136 & * 1.E3 / ( 12. * zcoef + rtrn ) 137 rivdic(ji,jj) = ( sf_river(jr_dic)%fnow(ji,jj,1) + sf_river(jr_doc)%fnow(ji,jj,1) ) & 138 & * 1.E3 / ( 12. * zcoef + rtrn ) 139 rivdin(ji,jj) = ( sf_river(jr_din)%fnow(ji,jj,1) + sf_river(jr_don)%fnow(ji,jj,1) ) & 140 & * 1.E3 / rno3 / ( 14. * zcoef + rtrn ) 141 rivdip(ji,jj) = ( sf_river(jr_dip)%fnow(ji,jj,1) + sf_river(jr_dop)%fnow(ji,jj,1) ) & 142 & * 1.E3 / po4r / ( 31. * zcoef + rtrn ) 143 rivdsi(ji,jj) = sf_river(jr_dsi)%fnow(ji,jj,1) & 144 & * 1.E3 / ( 28.1 * zcoef + rtrn ) 137 IF( ln_p4z ) THEN 138 DO jj = 1, jpj 139 DO ji = 1, jpi 140 zcoef = ryyss * e1e2t(ji,jj) * h_rnf(ji,jj) 141 rivalk(ji,jj) = sf_river(jr_dic)%fnow(ji,jj,1) & 142 & * 1.E3 / ( 12. * zcoef + rtrn ) 143 rivdic(ji,jj) = ( sf_river(jr_dic)%fnow(ji,jj,1) + sf_river(jr_doc)%fnow(ji,jj,1) ) & 144 & * 1.E3 / ( 12. * zcoef + rtrn ) 145 rivdin(ji,jj) = ( sf_river(jr_din)%fnow(ji,jj,1) + sf_river(jr_don)%fnow(ji,jj,1) ) & 146 & * 1.E3 / rno3 / ( 14. * zcoef + rtrn ) 147 rivdip(ji,jj) = ( sf_river(jr_dip)%fnow(ji,jj,1) + sf_river(jr_dop)%fnow(ji,jj,1) ) & 148 & * 1.E3 / po4r / ( 31. * zcoef + rtrn ) 149 rivdsi(ji,jj) = sf_river(jr_dsi)%fnow(ji,jj,1) & 150 & * 1.E3 / ( 28.1 * zcoef + rtrn ) 151 END DO 145 152 END DO 146 END DO 153 ELSE ! ln_p5z 154 DO jj = 1, jpj 155 DO ji = 1, jpi 156 zcoef = ryyss * e1e2t(ji,jj) * h_rnf(ji,jj) 157 rivalk(ji,jj) = sf_river(jr_dic)%fnow(ji,jj,1) & 158 & * 1.E3 / ( 12. * zcoef + rtrn ) 159 rivdic(ji,jj) = ( sf_river(jr_dic)%fnow(ji,jj,1) ) & 160 & * 1.E3 / ( 12. * zcoef + rtrn ) * tmask(ji,jj,1) 161 rivdin(ji,jj) = ( sf_river(jr_din)%fnow(ji,jj,1) ) & 162 & * 1.E3 / rno3 / ( 14. * zcoef + rtrn ) * tmask(ji,jj,1) 163 rivdip(ji,jj) = ( sf_river(jr_dip)%fnow(ji,jj,1) ) & 164 & * 1.E3 / po4r / ( 31. * zcoef + rtrn ) * tmask(ji,jj,1) 165 rivdoc(ji,jj) = ( sf_river(jr_doc)%fnow(ji,jj,1) ) & 166 & * 1.E3 / ( 12. * zcoef + rtrn ) * tmask(ji,jj,1) 167 rivdon(ji,jj) = ( sf_river(jr_don)%fnow(ji,jj,1) ) & 168 & * 1.E3 / rno3 / ( 14. * zcoef + rtrn ) * tmask(ji,jj,1) 169 rivdop(ji,jj) = ( sf_river(jr_dop)%fnow(ji,jj,1) ) & 170 & * 1.E3 / po4r / ( 31. * zcoef + rtrn ) * tmask(ji,jj,1) 171 END DO 172 END DO 173 ENDIF 147 174 ENDIF 148 175 ENDIF … … 201 228 & sn_riverdip, sn_riverdop, sn_riverdsi, sn_ndepo, sn_ironsed, sn_hydrofe, & 202 229 & ln_dust, ln_solub, ln_river, ln_ndepo, ln_ironsed, ln_ironice, ln_hydrofe, & 203 & sedfeinput, dustsolub, icefeinput, wdust, mfrac, nitrfix, diazolight, concfediaz, hratio 230 & sedfeinput, dustsolub, icefeinput, wdust, mfrac, nitrfix, diazolight, concfediaz, & 231 & hratio, fep_rats, fep_rath 204 232 !!---------------------------------------------------------------------- 205 233 ! … … 245 273 WRITE(numout,*) ' fe half-saturation cste for diazotrophs concfediaz = ', concfediaz 246 274 WRITE(numout,*) ' Fe to 3He ratio assumed for vent iron supply hratio = ', hratio 275 IF( ln_ligand ) THEN 276 WRITE(numout,*) ' Fep/Fer ratio from sed sources = ', fep_rats 277 WRITE(numout,*) ' Fep/Fer ratio from sed hydro sources = ', fep_rath 278 ENDIF 247 279 END IF 248 280 … … 330 362 ! 331 363 ALLOCATE( rivdic(jpi,jpj), rivalk(jpi,jpj), rivdin(jpi,jpj), rivdip(jpi,jpj), rivdsi(jpi,jpj) ) 364 IF( ln_p5z ) ALLOCATE( rivdon(jpi,jpj), rivdop(jpi,jpj), rivdoc(jpi,jpj) ) 332 365 ! 333 366 ALLOCATE( sf_river(jpriv), rivinput(jpriv), STAT=ierr1 ) !* allocate and fill sf_river (forcing structure) with sn_river_ -
branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsed.F90
r7068 r7162 14 14 USE trc ! passive tracers common variables 15 15 USE sms_pisces ! PISCES Source Minus Sink variables 16 USE p4zsink ! vertical flux of particulate matter due to sinking17 USE p4zopt ! optical model18 16 USE p4zlim ! Co-limitations of differents nutrients 19 17 USE p4zsbc ! External source of nutrients … … 57 55 REAL(wp) :: zlim, zfact, zfactcal 58 56 REAL(wp) :: zo2, zno3, zflx, zpdenit, z1pdenit, zdenitt, zolimit 59 REAL(wp) :: zsiloss, zcaloss, zws3, zws4, zwsc, zdep, zwstpoc 60 REAL(wp) :: ztrfer, ztrpo4, zwdust, zlight 57 REAL(wp) :: zsiloss, zcaloss, zws3, zws4, zwsc, zdep 58 REAL(wp) :: zwstpoc, zwstpon, zwstpop 59 REAL(wp) :: ztrfer, ztrpo4s, ztrdp, zwdust, zmudia, ztemp 60 REAL(wp) :: xdiano3, xdianh4 61 REAL(wp) :: zwssfep 61 62 ! 62 63 CHARACTER (len=25) :: charout 63 REAL(wp), POINTER, DIMENSION(:,: ) :: z pdep, zsidep, zwork1, zwork2, zwork364 REAL(wp), POINTER, DIMENSION(:,: ) :: zsidep, zwork1, zwork2, zwork3 64 65 REAL(wp), POINTER, DIMENSION(:,: ) :: zdenit2d, zironice, zbureff 65 66 REAL(wp), POINTER, DIMENSION(:,: ) :: zwsbio3, zwsbio4, zwscal 66 REAL(wp), POINTER, DIMENSION(:,:,:) :: zirondep, zsoufer 67 REAL(wp), POINTER, DIMENSION(:,: ) :: zsedcal, zsedsi, zsedc 68 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrpo4, ztrdop, zirondep, zsoufer, zpdep, zlight 69 REAL(wp), POINTER, DIMENSION(:,: ) :: zwsfep 70 67 71 !!--------------------------------------------------------------------- 68 72 ! … … 72 76 ! 73 77 ! Allocate temporary workspace 74 CALL wrk_alloc( jpi, jpj, zdenit2d, zwork1, zwork2, zwork3, zbureff ) 75 CALL wrk_alloc( jpi, jpj, zwsbio3, zwsbio4, zwscal ) 76 CALL wrk_alloc( jpi, jpj, jpk, zsoufer ) 78 CALL wrk_alloc( jpi, jpj, zdenit2d, zwork1, zwork2, zwork3, zbureff ) 79 CALL wrk_alloc( jpi, jpj, zwsbio3, zwsbio4, zwscal ) 80 CALL wrk_alloc( jpi, jpj, zsedcal, zsedsi, zsedc ) 81 CALL wrk_alloc( jpi, jpj, jpk, zlight, zsoufer ) 82 IF( ln_p5z ) CALL wrk_alloc( jpi, jpj, jpk, ztrpo4, ztrdop ) 83 IF( ln_ligand ) CALL wrk_alloc( jpi, jpj, zwsfep ) 84 77 85 78 86 zdenit2d(:,:) = 0.e0 … … 81 89 zwork2 (:,:) = 0.e0 82 90 zwork3 (:,:) = 0.e0 91 zsedsi (:,:) = 0.e0 92 zsedcal (:,:) = 0.e0 93 zsedc (:,:) = 0.e0 94 83 95 84 96 ! Iron input/uptake due to sea ice : Crude parameterization based on Lancelot et al. … … 111 123 IF( ln_dust ) THEN 112 124 ! 113 CALL wrk_alloc( jpi, jpj, z pdep, zsidep )114 CALL wrk_alloc( jpi, jpj, jpk, z irondep )125 CALL wrk_alloc( jpi, jpj, zsidep ) 126 CALL wrk_alloc( jpi, jpj, jpk, zpdep, zirondep ) 115 127 ! ! Iron and Si deposition at the surface 116 128 IF( ln_solub ) THEN … … 119 131 zirondep(:,:,1) = dustsolub * dust(:,:) * mfrac * rfact2 / e3t_n(:,:,1) / 55.85 + 3.e-10 * r1_ryyss 120 132 ENDIF 121 zsidep(:,:) = 8.8 * 0.075 * dust(:,:) * mfrac * rfact2 / e3t_n(:,:,1) / 28.1122 zpdep (:,: ) = 0.1 * 0.021 * dust(:,:) * mfrac * rfact2 / e3t_n(:,:,1) / 31. / po4r133 zsidep(:,:) = 8.8 * 0.075 * dust(:,:) * mfrac * rfact2 / e3t_n(:,:,1) / 28.1 134 zpdep (:,:,1) = 0.1 * 0.021 * dust(:,:) * mfrac * rfact2 / e3t_n(:,:,1) / 31. / po4r 123 135 ! ! Iron solubilization of particles in the water column 124 136 ! ! dust in kg/m2/s ---> 1/55.85 to put in mol/Fe ; wdust in m/j … … 126 138 DO jk = 2, jpkm1 127 139 zirondep(:,:,jk) = dust(:,:) * mfrac * zwdust * rfact2 * EXP( -gdept_n(:,:,jk) / 540. ) 140 zpdep (:,:,jk) = zirondep(:,:,jk) * 0.023 128 141 END DO 129 142 ! ! Iron solubilization of particles in the water column 130 tra(:,:,1,jppo4) = tra(:,:,1,jppo4) + zpdep (:,:)131 143 tra(:,:,1,jpsil) = tra(:,:,1,jpsil) + zsidep (:,:) 144 tra(:,:,:,jppo4) = tra(:,:,:,jppo4) + zpdep (:,:,:) 132 145 tra(:,:,:,jpfer) = tra(:,:,:,jpfer) + zirondep(:,:,:) 133 146 ! … … 140 153 ENDIF 141 154 ENDIF 142 CALL wrk_dealloc( jpi, jpj, z pdep, zsidep )143 CALL wrk_dealloc( jpi, jpj, jpk, z irondep )155 CALL wrk_dealloc( jpi, jpj, zsidep ) 156 CALL wrk_dealloc( jpi, jpj, jpk, zpdep, zirondep ) 144 157 ! 145 158 ENDIF … … 160 173 ENDDO 161 174 ENDDO 175 IF( ln_p5z ) THEN 176 DO jj = 1, jpj 177 DO ji = 1, jpi 178 DO jk = 1, nk_rnf(ji,jj) 179 tra(ji,jj,jk,jpdop) = tra(ji,jj,jk,jpdop) + rivdop(ji,jj) * rfact2 180 tra(ji,jj,jk,jpdon) = tra(ji,jj,jk,jpdon) + rivdon(ji,jj) * rfact2 181 tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + rivdoc(ji,jj) * rfact2 182 ENDDO 183 ENDDO 184 ENDDO 185 ENDIF