Changes between Version 61 and Version 62 of ticket/0927_Energy_diag
- Timestamp:
- 2012-06-25T15:18:14+02:00 (12 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
ticket/0927_Energy_diag
v61 v62 12 12 ''' Motivation: ''' output 3D trends of tracers, momentum, kinetic energy and potential energy.[[BR]] ''' Status :''' the extraction of trends terms exists, but not the 3D output of the trends [[BR]] ''' Main tasks :''' [[BR]] 13 13 14 (1) implement the 3D output of tracers and momentum trends using iom_put [[BR]] (2) compute and output the 3D trends of PE and KE [[BR]](3) validatation + documentation [[BR]]14 (1) implement the 3D output of tracers and momentum trends using iom_put [[BR]] (2) compute and output the 3D trends of PE and KE [[BR]] (3) validatation + documentation [[BR]] 15 15 16 16 ''' Science Reviewer:''' NOCS guy? [[BR]] ''' System Reviewer:''' NOCS guy? [[BR]] ''' Deadline:''' spring 2012 [[BR]] ''' Priority:''' high [[BR]] ''' Depends on:''' gurvan disponibilities [[BR]] ''' Principal Investigator : ''' Gurvan Madec and Fabien Roquet (gurvan.madec@locean-ipsl.upmc.fr) [[BR]] [[BR]] … … 24 24 see [https://forge.ipsl.jussieu.fr/nemo/log/branches/2012/dev_r3309_LOCEAN12_Ediag/NEMOGCM/NEMO/OPA_SRC?rev=3316 revision 3316] 25 25 26 ''' trdmod_oce''' module and ''' namtrd namelist'''[[BR]]26 ''' trdmod_oce''' module and ''' namtrd namelist''' [[BR]] 27 27 28 28 logical flags added in namlist namtrd which now controls what is done with the trends. [[BR]] All the types of treatment of a given trend are available at the same time. The memory requirement will only increase due to the time averaged arrays defined in IOM. … … 40 40 Add these new logical in the namelist. '''==>>> CAUTION only in the ORCA2_LIM directory''' [[BR]] NB: here is the new name set in revision number 3318[[BR]] 41 41 42 ''' trdtra'''module[[BR]]42 ''' trdtra''' module[[BR]] 43 43 44 44 Add a systematic mask of the trend.[[BR]] Change the comments to better describe the purpose of this module. Its purpose is: [[BR]] 45 45 46 'TRA' case: to regroup T & S trends and send them to trd_mod, with, in case of advection, transform the incoming advective fluxes into advctive trend (U.grad[T])[[BR]] 'TRC' case: send trend to ted_mod_trc, with, in case of advection, transform the incoming advective fluxes into advective trend [[BR]] all cases : mask the trend (''' ===>>> PROBABLY add in the module a lbc_lnk so that the trend is defined everywhere''')47 48 ''' dynadv_cen2 and _ubs'''modules[[BR]]46 'TRA' case: to regroup T & S trends and send them to trd_mod, with, in case of advection, transform the incoming advective fluxes into advctive trend (U.grad[T])[[BR]] 'TRC' case: send trend to ted_mod_trc, with, in case of advection, transform the incoming advective fluxes into advective trend [[BR]] all cases : mask the trend (''' ===>>> PROBABLY add in the module a lbc_lnk so that the trend is defined everywhere''' ) 47 48 ''' dynadv_cen2 and _ubs''' modules[[BR]] 49 49 50 50 change jpdyn_trd_had into jpdyn_trd_keg. Now in flux form _keg corresponds to the horizontal advection trends and _rvo to the metric terms[[BR]] [[BR]] 51 51 52 ''' dynnxt'''module[[BR]]52 ''' dynnxt''' module[[BR]] 53 53 54 54 add the output using sum of the total dyn trend (except asselin time filter) ("utrd_tot", "vtrd_tot") and of the asselin time filter trend ("utrd_atf", "vtrd_atf") but with a shift by one time step[[BR]] [[BR]] 55 55 56 ''' dynvor, trdvor and trdmod_oce'''modules[[BR]]56 ''' dynvor, trdvor and trdmod_oce''' modules[[BR]] 57 57 58 58 suppress the call to trd_mod in the jpdyn_trd_dat case (computation of beta.V) add add the calculation of beta.V term in 'trdvor' in jpvor_pvo case. And obviously suppress jpdyn_trd_dat from trdmod_oce [[BR]] Also suppress the jpdyn_trd_had case horizontal advection for the dynamics is 'keg' + 'vor' ; in case of flux form, 'had' is put in 'keg' and the metric terms is put in 'vor' [[BR]] there is now only 10 trends on the dynamics instead of 12[[BR]] [[BR]] 59 59 60 ''' trdmod'''module[[BR]]60 ''' trdmod''' module[[BR]] 61 61 62 62 1- introduce the new logical namelist parameters[[BR]] 2- introduce new subroutines : '''trd_budget''' : computation of the domain averaged T,T^2^, PE, KE trends formerly computes in trd_mod routine)[[BR]] ''' trd_3Diom''': output of the 3D trends using IOM [[BR]] [[BR]] 63 63 64 ''' trdicp'''module[[BR]]64 ''' trdicp''' module[[BR]] 65 65 66 66 add in trd_twr routine the computation of the vertical diffusive trend on T & S in case of iso-neutral diffusion (ln_traldf_iso=T). These trends ("ttrd_zdfp", "strd_zdfp") name zdfp for "PURE" vertical diffusion trends are output so that by difference with "zdf" trends we can access to the vertical contribution of the iso-neutral operator [[BR]] [[BR]] 67 67 68 ''' iodef.xml'''file[[BR]]68 ''' iodef.xml''' file[[BR]] 69 69 70 70 add all the trends nick name : '''==>>> CAUTION only in the ORCA2_LIM directory''' [[BR]] [[BR]] … … 73 73 ''' Step II : simplification of the structure ''' 74 74 75 ''' trdicp and trdicp_oce'''modules[[BR]]75 ''' trdicp and trdicp_oce''' modules[[BR]] 76 76 77 77 see [https://forge.ipsl.jussieu.fr/nemo/log/branches/2012/dev_r3309_LOCEAN12_Ediag/NEMOGCM/NEMO/OPA_SRC?rev=3317 revision 3317] … … 79 79 1- suppress trdicp_oce module (put required variables in trdmod_oce parameters)[[BR]] 2- use the jptra_trd_... instead of jpicp_... 3- move trd_budget subroutine from trdmod to trdicp.F90. Suppress trd_icp routine (i.e. trd_2d, trd_3d) as the work is now simply done in trd_budget.[[BR]] 4- rescan all dyn/tra trend indices. add jptra_trd_zdfp for "PURE Kz dissusive trend when ln_traldf_iso=T (see also changes in tranxt where a call to trd_tra is done just before the swap, so that PURE Kz trends can be diagnosed in tra_trd. See also xml file). 5- jptra_trd_nsr and jptra_trd_cdt are 3D trends as their incorporate both surface forcing AND runoff, the later being possibly spread in depth ('''==>>> probably to be changed''')[[BR]] 6- suppress the key_trddyn key trdtra from trdicp[[BR]] 80 80 81 ''' trdtra - trddyn - trdmod - trdvor''' modules : impact on ''' TRA''' , ''' DYN''' , ''' TRD''' and almost all ''' TOP_SRC'''modules[[BR]]81 ''' trdtra - trddyn - trdmod - trdvor''' modules : impact on ''' TRA''' , ''' DYN''' , ''' TRD''' and almost all ''' TOP_SRC''' modules[[BR]] 82 82 83 83 see [https://forge.ipsl.jussieu.fr/nemo/log/branches/2012/dev_r3309_LOCEAN12_Ediag/NEMOGCM/NEMO/OPA_SRC?rev=3318 revision 3318] … … 94 94 ''' Step III : addition of 3D KE diagnostics ''' 95 95 96 ''' trdken'''module[[BR]]96 ''' trdken''' module[[BR]] 97 97 98 98 see [https://forge.ipsl.jussieu.fr/nemo/log/branches/2012/dev_r3309_LOCEAN12_Ediag/NEMOGCM/NEMO/OPA_SRC?rev=3325 revision 3325] … … 109 109 ''' Step IV : addition of 3D PE diagnostics ''' 110 110 111 ''' trdpen'''module[[BR]]111 ''' trdpen''' module[[BR]] 112 112 113 113 see [https://forge.ipsl.jussieu.fr/nemo/log/branches/2012/dev_r3309_LOCEAN12_Ediag/NEMOGCM/NEMO/OPA_SRC?rev=3326 revision 3326] and [https://forge.ipsl.jussieu.fr/nemo/log/branches/2012/dev_r3309_LOCEAN12_Ediag/NEMOGCM/NEMO/OPA_SRC?rev=3327 revision 3327] 0- correct a bug in trdtra and trdken … … 125 125 [[BR]] [[BR]] [[BR]] [[BR]] [[BR]] [[BR]] [[BR]] [[BR]] [[BR]] '''Pending issues''' : 126 126 127 atmospheric pressure gradient trend not taken into account (see dynspg.F90 ''' To be done !!!!''' [[BR]]'''128 129 kpp non-local trend put in zdf trends !!! this will not work ! a additional trend term should be add ''' To be done !!!!''' [[BR]]'''127 atmospheric pressure gradient trend not taken into account (see dynspg.F90 ''' To be done !!!!''' [[BR]] ''' 128 129 kpp non-local trend put in zdf trends !!! this will not work ! a additional trend term should be add ''' To be done !!!!''' [[BR]] ''' 130 130 131 131 problems to be solved: vvl case for tracer sad trends ; flux form case for had (keg) and zad momentum trends[[BR]] … … 138 138 139 139 140 141 140 142 141 143 '''Changes done by Fabien R.''' … … 149 151 In trddyn.F90: 150 152 151 * Added wrk_alloc, wrk_dealloc and lbc_lnk in trd_dyn_iom. 152 153 Remove unused variables ztswu, ztswv. 154 153 * Added wrk_alloc, wrk_dealloc and lbc_lnk in trd_dyn_iom.[[BR]]Remove unused variables ztswu, ztswv. 155 154 * Following norm in the code, utrd_bfr and vtrd_bfr should be filled only when ln_bfrimp=.FALSE. (non implicit bottom friction). 156 * Implicit bottom friction is calculated at the end of each timestep, in dynzdf_imp. 157 158 The diagnostic of bottom friction in the implicit case is saved in separate variable names to avoid confusion: utrd_bfri and vtrd_bfri. 159 160 Similarly, diagnostics of wind stress inputs are provided in 2D fields utrd_tau and vtrd_tau. 155 * Implicit bottom friction is calculated at the end of each timestep, in dynzdf_imp.[[BR]]The diagnostic of bottom friction in the implicit case is saved in separate variable names to avoid confusion: utrd_bfri and vtrd_bfri.[[BR]]Similarly, diagnostics of wind stress inputs are provided in 2D fields utrd_tau and vtrd_tau. 156 157 In tranxt.F90: 158 159 * Important:[[BR]]If ln_dyn_hpg_imp=.TRUE., Brown and Campana effect is added. The pressure gradient term is computed using a linear combination version of T and S at times b, n and a:[[BR]] Tbc=Tb/4+Tn/2+Ta/4[[BR]] Sbc=Sb/4+Sn/2+Sa/4 161 160 162 161 In step.F90: 163 162 164 * Added "IF( .NOT.ln_bfrimp)" before the "CALL dyn_bfr( kstp )" to clarify that dyn_bfr is called only if bottom friction is explicit, as proposed by gm. 163 * Added "IF( .NOT.ln_bfrimp)" before the "CALL dyn_bfr( kstp )" to clarify that dyn_bfr is called only if bottom friction is explicit. 164 * TODO: Diagnostic of BFR should be improved! 165 165 166 166 In trdglo.F90: … … 176 176 * TODO: Once trddyn and trdtra are ready, use them for trdglo computations... 177 177 * In glo_dyn_wri, missing zcof to compute density flux at w-point?! 178 * Conversion is calculated as -g*div(rho*U)/rho0 !! Not sure what the link with -rho*g*w...178 * Conversion is calculated as -g*div(rho*U)/rho0 !! (missing z) 179 179 180 180 In trd_oce.F90 … … 204 204 * Same in l133, l152 and l178. 205 205 * In l183, replaced "ketrd_bfr" by "ketrd_bfri" to avoid confusion with "ketrd_bfr". 206 * Important: contribution from atf is calculated with un and vn, after the y have been updated.[[BR]]A small error is made: the contribution of ATF term at time t is recorded with trends taken at t-1.206 * Important: contribution from atf is calculated with un and vn, after the swap.[[BR]]A small error is made: the contribution of ATF term at time t is recorded with trends taken at t-1. 207 207 * In trd_ken_init, the 3 variables fse3x_n were replaced by their constant value fse3x for the non-vvl case. 208 * Definition of KE ( kinetic_energy in xml) at time t+1/2: KE(t+1/2)=rau0*u(t)*u(t+1)/2, calculated during dynnxt.F90, using ktrd=jpdyn_ken.208 * Definition of KE (KE in xml) at time t+1/2: KE(t+1/2)=rau0*u(t)*u(t+1)/2.[[BR]]Add also subroutine ken_p2k to compute conversion rate.[[BR]]KE and ketrd_convP2K both calculated during dynnxt.F90, using ktrd=jpdyn_ken 209 209 * l. 109: multiplication by rau0 of zke to obtain KE trends in W/m3, and KE in J/m3. 210 210 * remove r1_2_rau0 variable, which is no more used. 211 * Add subroutine ken_conv_P2K to compute conversion rate.212 211 213 212 In dynspg_flt: 214 213 215 214 * Add a diagnostic of the explicit and implicit (due to filter) contributions to SPG. 216 * ssh imp: diagnostic of the ssh modification due to filter.215 * ssh_flt: diagnostic of the ssh modification due to filter. 217 216 218 217 In dynnxt.F90 219 218 220 219 * computation of z1_2dt must be put before the IF( ln_dyn_trd ) block (l. 194 and 195) 221 * Add call to ken_conv_P2K (+USE trdken) and save conv rate in ketrd_convP2K (l. 200)222 220 223 221 In eosbn2.F90 … … 242 240 * renamed petrd_for as petrd_nsr for consistency with trd_oce (l. 107) 243 241 * remove lines on petrd_sad in CASE jptra_atf in trd_pen: petrd_sad cannot be called 2 times. Furthermore, contribution of asselin filter on ssh must be diagnosed in ssh_nxt, not in tra_nxt!! 244 * Remove '( nn_eos == 0 .OR. nn_eos == 3 ) .AND. ' in the condition to call pen_ddt_ddsin trd_pen (l. 79). These two coefficients are updates at each timestep whatever the eos (very quick anyway for the linear case!)245 * Add 'CALL iom_put( " potential_energy", zpe )' in trd_pen, just after the call to pen_ddt_dds.242 * Remove '( nn_eos == 0 .OR. nn_eos == 3 ) .AND. ' in the condition to call eos_pen in trd_pen (l. 79). These two coefficients are updates at each timestep whatever the eos (very quick anyway for the linear case!) 243 * Add 'CALL iom_put( "PEanom", zpe )' in trd_pen, just after the call to pen_ddt_dds. 246 244 * Replace ptrdx by ptrdy and remove multiplication by fsde3w to compute pe trends in trd_pen (l. 88-89) 247 245 … … 260 258 * In Chap_TRA, 261 259 * update part 5.8 on equation of state to include reference to Vallis2006+JM95 true formulation 262 * In Chap_DYN, correction of title 6.1.2, and references 260 * In Chap_DYN, 261 * correction of title 6.1.2, and references 262 * Changes on Asselin description 263 * In Chap_STP, modification on Asselin description 263 264 264 265 ----