Parent Directory | Revision Log | Revision Graph
Links to HEAD: | (view) (download) (annotate) |
Links to checkpoint65b: | (view) (download) (annotate) |
Sticky Tag: |
adjust a comment
full initialisation of all output arrays
- merging SEAICE_MULTICATEGORY define and undef cases. Now the same code is compiled either way, and is tested in all exps (multidim was only tested in lab_sea ad before). - cosmetic change to prepare for future addition of ITD. no change to results. no defaults change. - by lack of adequate verification experiments, I further used custom versions of global_ocean.cs32x15 to test multicat or not, with pickup or not. All should be correct. - details : - added SEAICE_multDim run time param to be able to switch from single to multi cat. - "ifdef SEAICE_MULTICATEGORY" switches are replaced with "IF (SEAICE_multDim.GT.1) THEN". - "DO IT=1,MULTDIM" is replaced with "DO IT=1,SEAICE_multDim" in seaice_growth.F. For pickups and initializations I kept full loops (did not want to mess with the somewhat funky TICE/TICES pickup logic). - homogeneize seaice_growth names (heffActualP->heffActualMult and latentHeatFluxMaxP->latentHeatFluxMaxMult). - in growth, add extra MULTDIM dimension in all relevant local fields (needed to simplify logic, and get taf to behave). - clean-up growth/solve4temp interface by adding ticeInMult (TSURFin entering solve4etmp) and ticeOutMult (TSURFout leaving solve4temp). update seaice_solve4temp accordingly. - avoid recomputations (added store directives and clear logic of solve4temp input/output).
Prepare adjoint of SITRACER
fix previous modif (avoid division by zero)
remove one divisions by HCUT within a loop, without changing the results
- unified freezing point treatment : the old SEAICE_VARIABLE_FREEZING_POINT is now the default, and the old default constant freezing point is recovered with SEAICE_tempFrz0 = -1.96, SEAICE_dTempFrz_dS = 0., - retire SEAICE_freeze that was the old way of specifycing the constant freezing point. - remove ALLOW_SEAICE_FLOODING brackets; run time switch is already there. - bug fix (thanks to M. Losch) : the sublimation term that was missing is now activated. To reproduce old results that had this bug define SEAICE_DISABLE_SUBLIM. - bug fix (silly me) : flooding sign term (seaice_growth.F r 1.149line 1211) was wrong for SIsal0.NE.0. Changes cs32x15 results (see upcoming checkin for detail). - bug fix (thanks to O. Jahn) : area loss for melting got messed up in seaice_growth r149 for legacy branch (no results change). - introduce SEAICE_CAP_SUBLIM : caps sublimation heat flux in solve4temp (code from I. Fenty). - results did not change except for global_ocean.cs32x15, mostly due to the switch to variable freezing point (see upcoming checkin of results for details).
remove the STOP statement (move to seaice_check.F)
fix previous modif
- remove un-used parameters LAD & MAX_TICE ; add new run-time parameters: useMaykutSatVapPoly (default=F), postSolvTempIter (default=2) and SEAICE_wetAlbTemp (default=-1e-3). Temporary: change default (useMaykutSatVapPoly=T, postSolvTempIter=0) when SEAICE_SOLVE4TEMP_LEGACY is defined or (SEAICE_wetAlbTemp=0., SEAICE_snowThick=0.) if SOLVE4TEMP_LEGACY is undef.
SOLVE4TEMP_LEGACY: - remove LEGACY code for solving for tsurf (A1,A2,A3) but maintain the same algorithm (same choice: useMaykutPolySatVap=T, postSolvTempIter=0); difference in results only due to machine truncation. - remove MAX_TICE (tsurf is always =< TMELT anyway); keep MIN_TICE if using MaykutPolySatVap; keep MIN_LWDOWN. - adapt SEAICE_MODIFY_GROWTH_ADJ code (untested) to non-legacy formulation.
keeping results unchanged: - add 2 future run-time params to select which saturation vapor pressure formula is used and how post-iteration fluxes are set. - Temporary set these 2 params according to option SOLVE4TEMP_LEGACY; - New piece of code (not used) to update surf. atmos. heat flux F_ia using the linearized expression to stay consistent with tsurf finding.
- remove from F_ia (and it's derivative dFiDTs1) the contribution of conductive heat flux F_c , which is added explicitly when updating tsurf as solution of: Fc = Fia + d/dT(Fia - Fc) *delta.tsurf so that now F_ia has a consistent meaning through the entire routine. - add two 2-D arrays (dFia_dTs & dqh_dTs) in prep for next modif.
ifdef SOLVE4TEMP_LEGACY part: - replace hard coded 273.16 (=previous value of celsius2K) by celsius2K - replace hard coded 271.20 (=previous value of celsius2K + default value of SEAICE_freeze) by celsius2K+SEAICE_freeze so that seawater freezing temp is consistent with value in seaice_growth.F
more editing/cleaning with no effect on results: change sign of F_c, +=upward: LEGACY defined: F_c +=up is exactly what B(i,j) was in earlier version; LEGACY undef: consitent with all the F_* (I don't want to be impolite) fluxes which are positive upward (and are now documented).
lots of editing/cleaning with no effect on results: - compress debug print lines (Should not use "print" anyway, since it can be messy when MPI procs cut printed msg of each other) - remove arrays: F_io_net <- moved within #ifdef SEAICE_DEBUG / #endif F_ia_net <- moved within #ifdef SEAICE_DEBUG / #endif - document sign of arg: IcePenetSW; - document arrays (& sign) "F_c" & "F_lh"; - merge the 2 versions (def/undef LEGACY) of albedo and the 2 versions i of short-wave heating part. #undef SEAICE_SOLVE4TEMP_LEGACY : - remove arrays: IcePenetSWFluxFrac (-> single _RL variable penetSWFrac) F_lwd <- reduce number of copies from 3 (LWDOWN,lwdownLoc,F_lwd) to 2 and sign of F_lwd was not documented ; F_swi <- was identical to AbsorbedSWFlux - change sign of AbsorbedSWFlux to reflect what the name means i.e., shortwave radiative flux convergence in seaice+snow - each time "flux convergence" was used, should have been understood as "flux divergence" ; fixed. #define SEAICE_SOLVE4TEMP_LEGACY : - change sign of A2 ; document A1,A2,A3 arrays; - make more clear (dqhice_dTice=0) that derivative of latent-heat flux versus tsurf is ignored (this is a bug).
remove unused variables
allow to compile with exf options ALLOW_ATM_TEMP or ALLOW_DOWNWARD_RADIATION undefined.
the exf-flag EXF_LWDOWN_WITH_EMISSIVITY now gets rid off the hard-wired emissivities of 0.97 associated with lwdownloc until we agree on how to handle this bug properly, but I need a solution now.
make SEAICE_emissivity what the name implies (and not emissivity*BoltzmannConstant), this is just a first step towards sorting out emissivity and long wave radiation
seaice package/sublimation treatment: added a cap on the latent heat flux over sea ice such that the amount of sublimation over one time step cannot exceed the amount of mass in the sea ice and snow. Works for the non-legacy version of seaice_solve4temp. Added diagnostics SImaxLHF, SIactLHF (max and actual latent heat flux) and SIrsSubl (residual freshwater flux following removal of ice and snow) ---------------------------------------------------------------------- Modified Files: seaice_diagnostics_init.F seaice_growth.F seaice_solve4temp.F ----------------------------------------------------------------------
Removed redundant minimum ice thickness check (hice_tmp = max(HICE_ACTUAL, 0.05)) in the evolution branch now that seaice_growth does the regularization (SEAICE_hice_reg). Removing that line doesn't change any verification results.
Minor changes to seaice package. 1) Retired old variables (A22, SEAICE_lhsublim, areaMax, areaMin, hiceMin) and added some new ones (SEAICE_area_reg, SEAICE_hice_reg, SEAICE_area_floor) - Differentiated "regularization variables" from "floor variables" * areaMin became SEAICE_area_reg (old A22) and SEAICE_area_floor * hiceMin became SEAICE_hice_reg (old hiceMin) (with _reg meaning regularization variable) - SEAICE_lhSublim becomes lhSublim, the sum of SEAICE_lhEvap and SEAICE_lhFusion so as to ensure energy conservation when going between phases - A22 was not used anywhere 2) Changed regularization procedure for heffActual and hsnowActual to ensure well-boundedness and smooth adjoint in seaice_growth.F 3) Fixed a bug where seaice_solve4temp would not recognize ice-free grid cells because the old regularization always set heffActual >= 0.05 cm 4) Changed the model so that the default behavior is to put a small (10^-5) "floor" on AREA when HEFF > 0. - went from requiring ALLOW_PRECLUDE_INFINITESIMAL_AREA to be defined to requiring that DISABLE_AREA_FLOOR *not* be defined Modified Files: SEAICE_PARAMS.h seaice_check.F seaice_growth.F seaice_readparms.F seaice_solve4temp.F seaice_summary.F
Start a seaice tracer-like code but for now confinded to ice age
remove SEAICE_ALLOW_TD_IF pieces of code
-avoiding recomputations.
compute and pass sublimation mass flux up to caller (seaice_growth)
- adjoint related changes. 1) bring store directives up to date. 2) allow adjoint approximations (see SEAICEadjMODE). 3) replace a pair of if/then/else with min/max expressions.
explicitly store tsurfloc in seaice_solve4temp.F to avoid unnecessary copying in adjoint code, requires new parameter NMAX_ITER
- replace irritating parameters SEAICE_latentWater/Ice and SEAICE_sensHeat by something more sensible (parameters that are what their name implies) - change some defaults, so that by default exf-parameters are used for things like rhoAir, cpAir,latent/sensible heat parameters
move OPTIONS (formerly locally defined) to SEAICE_OPTIONS.h
vectorize seaice_solve4temp.F - move iterations loops outside of i/j-loops - requires 2D arrays for TB and effConduct - add 2D iceOrNot to replace HICE_ACTUAL.GT.0, as HICE_ACTUAL is modified in this routine - a little bit of clean up, adjusting indentation, etc. - replaced a few TEN**a by exp(a*log(10.)) in new code for better performance and '**TWO' by '**2' (because TWO is a float), replaced ONE, ZERO
set kSrf=1 (variable freezing point)
-fix the USE_ORIGINAL_SBI version (for variable freezing point); -use "celsius2K" in SEAICE_VARIABLE_FREEZING_POINT and in new version (USE_ORIGINAL_SBI undef); -clean-up unused variables;
fix the USE_ORIGINAL_SBI version: was getting NaNs in F_ia_net (because of uninitialise arrays: F_lwd,F_swi,F_lwu,F_sens & F_lh) when using open64+trapuv on aces cluster.
new S/R seaice_solve4temp.F: this is the merged version of Ian Fenty code (seaice_budget_ice_if.F) which enable to recover old standard code (seaice_budget_ice.F) when option USE_ORIGINAL_SBI is defined.
This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, select a symbolic revision name using the selection box, or choose 'Use Text Field' and enter a numeric revision.
ViewVC Help | |
Powered by ViewVC 1.1.22 |