https://groups.google.com/forum/#!topic/mom-users/GhmoD6IYvxM On Mon, Jun 8, 2015 at 4:42 PM, Elizabeth Maroon wrote: I've been trying to spin up a coupled MOM5 simulation with the CM2M_coarse_BLING.output from the MOM test data repository, but the state that evolves has some problems. [..deep water starts forming in the North Pacific...AMOC completely shuts off...] I've been trying to figure out more about this coarse configuration. I originally started using it because it allows me to complete fully-coupled simulation on our local computers and to test out ideas relatively quickly. Is this configuration the same as the one used in Galbraith et al (2011) [http://journals.ametsoc.org/doi/abs/10.1175/2011JCLI3919.1] (CM2Mc) or a different one? The ocean model used in that paper did not seem to have a problem with north Pacific deep water. If the test case I've been using is not CM2Mc, is the CM2Mc configuration available anywhere? On Sun, Jun 14, 2015 at 3:53 PM, Eric Galbraith wrote: As far as I know, the CM2M_coarse_BLING model included in the repository is an updated version of what we called CM2Mc in the 2011 paper, and should be well suited for your interests. So, glad to hear you're trying to use it! However, the problem you describe sounds odd for a pre-industrial control run with CM2Mc. I have run many simulations with the model (using the MOM5 codebase, and my own namelists), and although it's possible to turn off the AMOC and turn on a PMOC as you described by hosing the North Atlantic with freshwater, I have never seen it happen otherwise. Normally the pre-industrial simulation looks pretty good - the North Pacific Intermediate Water tends to be a bit too strongly ventilated, but the AMOC chugs along at about 18 Sv. It's possible that one of the boundary condition files is inappropriate, or that something got mixed up in a namelist. If you'd like, you can download the following files, which should be all (most?) of the pieces required to run my most recent version: http://earth.cs.mcgill.ca/mom5_fv.tar http://earth.cs.mcgill.ca/CM2Mc.boundaryFiles.tar http://earth.cs.mcgill.ca/fms.tar http://earth.cs.mcgill.ca/siena_blingv2_y1_131014.cpio http://earth.cs.mcgill.ca/CM2Mc_v1p5_control The first tar file should contain all of the source code (Siena release) and the compile script. The second and third contain all of the required boundary condition files (and maybe some extras). The fourth is the initial conditions file. The last is the runscript. Perhaps you could try comparing the namelist settings directly, and see if there are any differences in the boundary condition files? The namelists might differ a bit, but the boundary condition files should be identical, I think, with the exception of the BLING files (these are for the biogeochemical module, which you probably aren't interested in, and which I've changed quite a bit). On Mon, Aug 17, 2015 at 5:24 PM, Elizabeth Maroon wrote: I wanted to let you know that I was able to produce a CM2Mc with a reasonable AMOC (and no PMOC) thanks to your help. There were many namelist differences in many modules, especially in the ice model and a couple in the ocean vertical tidal mixing module (as you correctly foresaw). I changed all of the namelist parameters that looked physically-relevant (rather than parameters that affect things like frequency of diagnostic-writing) to the ones that were default in your configuration. I also used your initial conditions (the defaults online had no orography in fv_rst.res.nc). I ran CM2Mc for more than 500 years and there was no hint of anything strange in the Pacific, so for my uses, this model will work great now. I've tried to backtrack to determine which module was the most at-fault in producing the weird climotology, but I haven't had much luck. I've run the model for 50 years with all of the working-parameters except with either the old tidal mixing parameters or ice model parameters. With the original parameters that I started with, it would only take 20-30 years before the Pacific would sink substantially, but in these runs with all the new parameters (except a few chosen ones), there was only deep sinking in the Atlantic. Figuring out which parameters are at fault is not a priority of mine (given other academic constraints), but if I have more time, I'd run your IC with all of the old parameters to determine if the new IC were instrumental in getting a stable configuration or if it was something in the namelists. For anyone in the future who has these issues, I've included at the bottom of this message the changes I made to the default CM2Mc namelists from the MOM5 data repository. --- Namelists changes --- &ice_model_nml cm2_bugs = .false. nsteps_dyn=72 nsteps_adv=1 num_part = 6 spec_ice=.false. wd_turn = 0.0 ice_bulk_salin = 0.005 alb_sno = 0.85 !!!DIFFERENT alb_ice = 0.65 !!!DIFFERENT t_range_melt = 1.0 !!!DIFFERENT heat_rough_ice=1.0e-4 !!!DIFFERENT mom_rough_ice=1.0e-4 !!!DIFFERENT slp2ocean = .false. ! apply sea level pressure to ocean surface h_lo_lim = 1.e-10 !!!DIFFERENT channel_viscosity = 5.e5 !!!DIFFERENT &ocean_bbc_nml uresidual=0.05 cdbot=2.0e-3 !!!DIFFERENT cdbot_roughness_length=.false. cdbot_hi=5.0e-3 cdbot_lo=1.0e-3 cdbot_law_of_wall=.false. use_geothermal_heating=.true. &ocean_nphysics_util_nml smax=0.01 swidth=0.001 aredi=800.0 agm=600.0 aredi_equal_agm=.false. drhodz_mom4p1=.true. drhodz_smooth_horz=.false. drhodz_smooth_vert=.false. tracer_mix_micom=.false. vel_micom=0.0 agm_closure=.true. agm_closure_scaling=0.1 !!!DIFFERENT agm_closure_min=200.0 agm_closure_max=1400.0 agm_closure_length_fixed=.false. agm_closure_length_rossby=.false. agm_closure_length_bczone=.false. agm_closure_baroclinic=.true. agm_closure_length=50.e3 agm_closure_buoy_freq=.004 agm_closure_upper_depth=100.0 agm_closure_lower_depth=2000.0 rossby_radius_max=100e3 rossby_radius_min=15e3 &ocean_rivermix_nml use_this_module=.true. debug_this_module=.false. calving_insertion_thickness=40.0 !!!DIFFERENT runoff_insertion_thickness=40.0 !!!DIFFERENT river_insertion_thickness=40.0 river_diffusion_thickness=0.0 river_diffusivity=0.0 river_diffuse_salt=.false. river_diffuse_temp=.false. &ocean_shortwave_gfdl_nml use_this_module=.true. debug_this_module=.false. read_chl=.true. ! set to false to use BLING interactive Chl zmax_pen=200.0 enforce_sw_frac=.true. override_f_vis=.false. sw_morel_fixed_depths=.false. !!!DIFFERENT optics_morel_antoine=.false. optics_manizza=.true. &ocean_submesoscale_nml use_this_module=.true. debug_this_module=.false. use_hblt_equal_mld=.true. min_kblt=4 smooth_hblt=.false. limit_psi=.true. limit_psi_velocity_scale=0.50 !!!DIFFERENT front_length_deform_radius=.true. front_length_const=5.e3 &ocean_vert_tidal_nml use_this_module=.true. use_wave_dissipation=.true. use_drag_dissipation=.true. read_wave_dissipation=.false. fixed_wave_dissipation=.false. read_tide_speed=.true. read_roughness=.true. reading_roughness_amp=.true. reading_roughness_length=.false. roughness_scale=30e3 tide_speed_data_on_t_grid=.true. drhodz_min=1e-12 mixing_efficiency_n2depend=.true. max_wave_diffusivity=100.0e-4 wave_energy_flux_max=0.10 decay_scale=300.0 shelf_depth_cutoff=500.0 !!!DIFFERENT background_diffusivity=5.e-6 !!!DIFFERENT background_viscosity=1.e-4 On Aug 18, 2015, 8:06:45 PM Elizabeth Maroon wrote: Actually, the impact of orography on ocean circulation is what I'm trying to understand with this model, and it has been very cool so far. When I was first having these problems with the original default, the first thing I did was add orography into the fv_rst.res.nc, for the same reasons that you mentioned. This simulation still produced deep water in the Pacific, so it can't just be the orography, either something else in the IC or some combination of the changed namelist parameters is involved. I'm still suspicious of the t_range_melt parameter in the ice_model module -- in all the simulations with the old parameters, the sea ice would expand out beyond the Bering Strait very quickly. The t_range_melt parameter was originally 10x larger than what it was in your configuration, and after looking at how the parameter is used to set ice albedo, I wondered if having a larger t_range_melt would keep sea ice brighter for longer, giving it a stronger sea ice albedo feedback and cooling the Arctic substantially in both basins. Though my experiment that set t_range_melt back to the 10x larger value didn't produce the same expansion of sea ice or greater Pacific convection, so... I'm really not sure what was the cause of all this. On Jan 28, 2016, 3:11:47 AM Elizabeth Maroon wrote: I was hoping one of you might be able to answer another question that I have about the coarse CM2MC configuration. I used the namelist parameters that you'd previously provided me with, and the PMOC bias is gone. However, I've now recently noticed that there is a huge sea ice bias in the North Pacific (sea ice extends down to 45N and to the east of the dateline). I looked at your 2011 paper on the model and noticed that this is the same region where there is a large surface temperature bias from the observations. I was wondering if you had also noticed any large sea ice bias in your control simulations? On Jan 28, 2016, 3:24:22 PM Eric Galbraith answered: Glad to hear the PMOC has gone! But yes, I was never able to get rid of that persistent North Pacific sea ice bias. My impression was that it is a result of a cloud bias, based on some analysis I did a long time ago, but there may be more to it than that. I remember talking to Isaac Held about it one time, an atmospheric model guru at GFDL, and (if I recall correctly) he basically said that building a coupled model is hard. Note that if you are using the realistic sea ice snow albedo value (alb_sno = 0.85), as I am, it probably makes it worse. The sea ice thickness in my control simulation is attached here. The sea ice UNDERestimate in the Southern Ocean is probably worse, if that makes you feel better..? I'm not sure how these compare with the biases in the latest ESM2M versions. On Mar 25, 2016, 5:52:00 AM Elizabeth Maroon wrote: Please forgive the delayed response. I've been hurrying to write a dissertation. Thank you both for the exact advice that I needed. Eric, I am relieved that the sea ice bias is not restricted to my version of the model. Reducing the snow on sea ice albedo improved the bias in the North Pacific, I turned it down to 0.75. It's still got way too much March sea ice, but it's roughly 40% better. I've attached a quick figure of March sea ice extent (blue = obs, red = old snow ice albedo, yellow = modifications) for anyone curious. I haven't focused much on what's going on in the Antarctic, so I'm hoping the sea ice bias there doesn't later turn out to be important. On Mar 28, 2016, 3:07:08 PM Eric Galbraith wrote: Glad to hear it's all worked out well! I think a value of 0.75 for the snow albedo is pretty low - I had been using 0.80 as my 'low' value. But I'm no expert, and the bias does look smaller. I suspect your Antarctic ice will be very small, but hopefully this won't be a problem for your purposes ------------------------ Jul 5 2019 wget http://earth.cs.mcgill.ca/mom5_fv.tar wget http://earth.cs.mcgill.ca/CM2Mc.boundaryFiles.tar wget http://earth.cs.mcgill.ca/fms.tar wget http://earth.cs.mcgill.ca/siena_blingv2_y1_131014.cpio wget http://earth.cs.mcgill.ca/CM2Mc_v1p5_control mkdir exp/CM2Mc cd CM2Mc mkdir INPUT cp -p CM2Mc_v1p5_control x.csh edit it to extract data_table diag_table field_table input.nml extract CM2Mc.boundaryFiles.tar and siena_blingv2_y1_131014.cpio into INPUT extract mom5_fv.tar , this yields subdirectory mom5_fv diff -ub CM2M_coarse_BLING/input.nml CM2Mc/input.nml --- CM2M_coarse_BLING/input.nml 2019-01-21 10:27:58.356316680 +0100 +++ CM2Mc/input.nml 2019-07-05 16:02:44.722846000 +0200 @@ -76,6 +76,10 @@ physics_window = 0,0 / + &bgrid_core_driver_nml + layout = 1,20 +/ + &cg_drag_nml cg_drag_freq = 1800, cg_drag_offset = 0, @@ -239,9 +245,10 @@ nlev = 24 ncnst = 4 change_time = .true. - n_split = 9 + n_split = 13 pnats = 0 consv_te = 0.70 + layout=1,20 a_div=1. b_div=1. / @@ -259,21 +266,30 @@ do_readstdn2otfs = .false. / - &generic_bling_nml - do_14c=.true. - do_carbon=.true. - do_carbon_pre=.false. - do_po4_pre=.true. - bury_caco3=.false. -/ - &generic_tracer_nml do_generic_tracer=.true. do_generic_BLING=.true. + do_generic_BLINGv0=.true. do_generic_CFC=.false. do_generic_TOPAZ=.false. / + &generic_bling_nml + use_sgs_sed =.true. + do_extras =.true. + do_13c =.true. + do_14c =.true. + do_15n =.true. + do_carbon =.true. + do_carbon_pre =.false. + do_nut_sources =.false. + do_nut_pre =.true. + do_o2_pre =.true. + do_pyc_rho =.false. + do_silicate =.true. + bury_caco3 =.false. +/ + &ice_albedo_nml t_range = 10. / @@ -281,14 +297,18 @@ &ice_model_nml nsteps_dyn=72 nsteps_adv=1 - num_part=6 + num_part = 6 + wd_turn = 0.0 spec_ice=.false. - ice_bulk_salin=0.005 - alb_sno=0.80 - t_range_melt=10.0 - heat_rough_ice=5.0e-4 - mom_rough_ice=5.0e-4 - wd_turn=0.0 + ice_bulk_salin = 0.005 + alb_sno = 0.85 + alb_ice = 0.65 + t_range_melt = 1.0 + cm2_bugs = .false. + do_icebergs = .false. + add_diurnal_sw = .false. + h_lo_lim = 1.e-10 + channel_viscosity=5.e5 / &land_properties_nml @@ -370,27 +390,28 @@ &ocean_barotropic_nml debug_this_module=.false. + zero_tendency=.false. barotropic_time_stepping_A=.true. barotropic_time_stepping_B=.false. - pred_corr_gamma=0.20 + pred_corr_gamma=.20 smooth_eta_t_laplacian=.false. smooth_pbot_t_laplacian=.false. smooth_eta_t_biharmonic=.true. smooth_pbot_t_biharmonic=.true. smooth_eta_diag_laplacian=.true. - vel_micom_lap_diag=1.0 + vel_micom_bih=0.01 vel_micom_lap=.05 - vel_micom_bih=.01 + vel_micom_lap_diag=1.0 truncate_eta=.false. eta_max=8.0 verbose_truncate=.true. frac_crit_cell_height=0.20 - diag_step=12 + diag_step=2920 / &ocean_bbc_nml uresidual=0.05 - cdbot=1.0e-3 + cdbot=2.0e-3 cdbot_roughness_length=.false. cdbot_hi=5.0e-3 cdbot_lo=1.0e-3 @@ -444,39 +465,19 @@ &ocean_form_drag_nml use_this_module=.false. - cprime_aiki=.60 - use_form_drag_gbatch=.true. - use_form_drag_aiki=.true. - form_drag_gbatch_surf_layer=.false. - visc_cbu_form_drag_max=1.0 - N_squared_min=1e-10 - form_drag_gbatch_f2overN2=.true. - form_drag_aiki_scale_by_gm=.false. - form_drag_aiki_scale_by_gradH=.true. - form_drag_aiki_gradH_power=2.0 - form_drag_aiki_gradH_max=.025 / &ocean_frazil_nml use_this_module=.true. + debug_this_module=.false. freezing_temp_simple=.true. frazil_only_in_surface=.true. / &ocean_grids_nml - debug_this_module=.true. -/ - &ocean_ibgc_nml - do_ideal=.true. - do_po4=.true. - do_po4f=.true. - do_bgc_felim=.false. - do_gasses=.true. - do_carbon_comp=.true. - do_radiocarbon=.true. - do_isio4=.true. - do_no3_iso=.true. + debug_this_module=.false. + read_rho0_profile=.false. / &ocean_increment_eta_nml @@ -588,7 +590,7 @@ tracer_mix_micom=.false. vel_micom=0.0 agm_closure=.true. - agm_closure_scaling=0.12 + agm_closure_scaling=0.1 agm_closure_min=200.0 agm_closure_max=1400.0 agm_closure_length_fixed=.false. @@ -639,6 +641,9 @@ &ocean_rivermix_nml use_this_module=.true. debug_this_module=.false. + discharge_combine_runoff_calve=.true. + calving_insertion_thickness=40.0 + runoff_insertion_thickness=40.0 river_insertion_thickness=40.0 river_diffusion_thickness=0.0 river_diffusivity=0.0 @@ -682,11 +687,10 @@ &ocean_shortwave_gfdl_nml use_this_module=.true. debug_this_module=.false. - read_chl=.true. ! set to false to use BLING interactive Chl zmax_pen=200.0 + read_chl=.false. enforce_sw_frac=.true. override_f_vis=.false. - sw_morel_fixed_depths=.true. optics_morel_antoine=.false. optics_manizza=.true. / @@ -699,6 +703,7 @@ use_this_module=.true. use_shortwave_gfdl=.true. use_shortwave_csiro=.false. + use_shortwave_jerlov=.false. / &ocean_sigma_transport_nml @@ -740,9 +745,10 @@ min_kblt=4 smooth_hblt=.false. limit_psi=.true. - limit_psi_velocity_scale=0.10 + limit_psi_velocity_scale=0.50 front_length_deform_radius=.true. - front_length_const=5.e3 + front_length_const=5e3 + submeso_limit_flux=.true. / &ocean_tempsalt_nml @@ -782,12 +788,14 @@ &ocean_tracer_advect_nml debug_this_module=.false. advect_sweby_all=.false. + limit_with_upwind=.false. / &ocean_tracer_diag_nml - tracer_conserve_days=1.0 - diag_step=4 + tracer_conserve_days=30.0 + diag_step=2920 do_bitwise_exact_sum=.false. + smooth_mld=.true. / &ocean_tracer_nml @@ -795,11 +803,10 @@ zero_tendency=.false. remap_depth_to_s_init=.false. zero_tracer_source=.false. - limit_age_tracer=.true. - age_tracer_max_init=0.0 tmask_limit_ts_same=.true. frazil_heating_before_vphysics=.false. frazil_heating_after_vphysics=.true. + age_tracer_max_init=1.e4 / &ocean_velocity_advect_nml @@ -868,6 +875,7 @@ dfkph_00=1.15 sfkph_00=4.5e-5 zfkph_00=2500.0e2 + quebec_2009_10_bug=.false. / &ocean_vert_pp_nml @@ -891,9 +899,10 @@ max_wave_diffusivity=100.0e-4 wave_energy_flux_max=0.10 decay_scale=300.0 - shelf_depth_cutoff=300.0 - background_diffusivity=1.e-5 + shelf_depth_cutoff=500.0 + background_diffusivity=5.e-6 background_viscosity=1.e-4 + use_legacy_methods=.false. / &ocean_xlandinsert_nml @@ -951,18 +960,16 @@ all_step_diagnostics = .true., zenith_spec = 'diurnally_varying', use_co2_tracer_field = .false. - using_restart_file = .false. / &radiative_gases_nml verbose = 3 gas_printout_freq = 240 - time_varying_co2 = .false., + co2_data_source = 'namelist', + co2_base_value = 2.70E-04, co2_variation_type = 'linear', - co2_dataset_entry = 1860,1,1,0,0,0, - co2_specification_type = 'time_series' - co2_data_source = 'input' + co2_specification_type = 'base_and_trend' time_varying_ch4 = .false., ch4_variation_type = 'linear' @@ -1002,7 +1009,7 @@ / &ras_nml - rasal0 = 0.75 + rasal0 = 0.75, aratio = 1.0, modify_pbl=.true. rn_frac_bot = 0.5, --------------- Looking again, I find that the AM2 code has a variable in fv_arrays.F90: real, allocatable :: phis(:,:) ! Surface geopotential (g*Z_surf) which appears to be a ``crypted'' version of surface orography. Also, phis/9.81 is written as variable z_surf 'surface height' in [m] to the diagnostic output. This phis is saved to / read from the restart file fv_rst.res.nc in Variable Surface_geopotential' . In the CM2M_coarse_BLING example setup, no such restart file is given, thus the variable phis stays at constant zero. In the test cases ESM2M_pi-control_C2 and CM2.1p1 , fv_rst.res.nc resp. fv_rst.res (raw binary version of the restart file) including that orography information are given, but not for the CM2M_coarse_BLING. It is not yet entirely clear to me how to initialize the variable phis with realistic orography in case of AM2 cold start. The FMS coupler has a module to read orography from navy_topography.data.nc and regrid it to the actual model grid. This is used by the AM2 atmosphere to compute roughness from from subgrid orography deviation. It is definitly not used for orography height. Now, nudged by Willem, looking through code once more, it might be that phis is initialized from a file named surf.res or surf.res.nc , if that is present. And if preprocessor-#defines are set suitably. And despite the name component ``res'' , this is not a restart file but an initial condition. I guess it was removed from the CM2M_coarse_BLING example setup accidentaly, because its name matches in the set of restart files... Sigh. One possibility would be to extract the orography from the fv_rst.res.nc file that Eric Galbraith provided in above-cited Forum discussion, and add it to provide cold start initial condition to the CM2M_coarse_BLING. -------- subroutine atmosphere_init call fv_init( sec ) call fv_restart( days, seconds ) end subroutine atmosphere_init subroutine fv_pack::fv_init(ndt) cold_start = (.not.file_exist('INPUT/fv_rst.res') ... call set_fv_geom end subroutine fv_init subroutine fv_pack::set_fv_geom compute lonb, latb end subroutine fv_pack subroutine fv_restart if (cold_start) then call get_instance_filename('INPUT/surf.res',restart_name ) read(phis) if (max(phis) > 0) mountain = true call init_dry_atm(mountain, kappa, grav, rdgas) else restart_name ='INPUT/fv_rst.res' call read_fv_rst(im, jm, km, ncnst, restart_name, days, seconds, restart_format) endif end subroutine fv_restart subroutine read_fv_rst call read_data ( restart_name, 'Surface_geopotential', phis(ids:ide,jcs:jce), domain = fv_domain) call read_data ( restart_name, 'U', u(ids:ide,jds:jde,:) , domain = fv_domain) call read_data ( restart_name, 'V', v(ids:ide,jds:jde,:), domain = fv_domain) call read_data ( restart_name, 'T', pt(ids:ide,jds:jde,:), domain = fv_domain) call read_data ( restart_name, 'DELP', delp(ids:ide,jcs:jce,:), domain = fv_domain) end subroutine read_fv_rst --------------- flag = get_topog_mean ( blon, blat, zmean ) ! ! The longitude (in radians) at grid box boundaries. ! ! ! The latitude (in radians) at grid box boundaries. ! ! ! The mean surface height (meters). ! The size of this field must be size(blon)-1 by size(blat)-1. ! --------------- Try to create such a binary input file ``surf.res'' from the Surface_geopotential in above downloaded fv_rst.res.nc . In fv_restart.F90, SURFACE_GEOPOTENTIAL is initialized as surface height * grav. In constants.F90 we find real, public, parameter :: GRAV = 9.80 Thus we need to divide Surface_geopotential by 9.80 to get the original surface height back: echo -n xxxx > surf.res ferret use fv_rst.res.nc list/append/file=surf.res-stream/format="stream" Surface_geopotential/9.80 quit cat surf.res-stream >> surf.res To read this file, the CM2 code must _not_ be run with F_UFMTENDIAN=big Doing a cold start with this surf.res produces a fv_rst.res.nc in which Surface_geopotential is identical to the one from the above-downloaded fv_rst.res.nc . ---------- Jul 9 2019 copied work/CM2M_coarse_BLING/ to work/CM2M_coarse_BLING+topo/ and copied surf.res to its INPUT/ subdirectory. ---------- Mon Sep 23 12:26:27 CEST 2019 copied the surf.res to CM2M_coarse_BLING/INPUT ------------------- Jan 24 16:10 2020 https://earthsystemdynamics.org/models/cm2mc-simulation-library/equilibrium-simulations/ The GFDL Earth system model CM2Mc was run to quasi-equilibrium under a broad range of external forcings, as described by Galbraith and deLavergne (2018). The purpose of these simulations was to map out the expectations of a modern climate model -- of the sort used for conducting future climate change scenarios -- under conditions that have occurred in the geologically-recent past. These simulations were described by Galbraith and de Lavergne (Climate Dynamics, 2018). Changes in ocean carbon storage among the simulations were also explored by Eggleston and Galbraith (Biogeosciences). However, these descriptions only scratch the surface -- the output could be used to explore general mechanisms within the climate system, as well as their interactions with global biogeochemistry. The results could also be tested against new paleoclimate observations, to identify aspects of the simulations that are consistent, as well as to identify model biases and shortcomings when confronted with reality. Galbraith, Eric and de Lavergne, Casimir: Response of a comprehensive climate model to a broad range of external forcings: relevance for deep ocean ventilation and the development of late Cenozoic ice ages. Climate Dynamics volume 52, pages 653--679 (2019) https://doi.org/10.1007/s00382-018-4157-8 https://link.springer.com/article/10.1007/s00382-018-4157-8 Published: 09 March 2018 http://earth.cs.mcgill.ca/eslibrary/runscripts.tar http://earth.cs.mcgill.ca/eslibrary/finalcentury.atmos_ts.tar http://earth.cs.mcgill.ca/eslibrary/finalcentury.atmos_avg.tar Output files are provided for the final century of each simulation. Two types of files are included: timeseries (_ts, annual averages of each variable during each year of the century) and climatologies (_avg, monthly averages of each variable during all years of the century). Note the _avg climatologies are not available for the 147L... or 180L... simulations. ------------ Wed Jul 15 16:41:47 CEST 2020 wget http://earth.cs.mcgill.ca/eslibrary/mom5_fv_130917.tar wget http://earth.cs.mcgill.ca/eslibrary/compile_mom5_fv.csh mkdir mom5_fv_130917 mv compile_mom5_fv.csh mom5_fv_130917 This is just identical to the files downloaded on Jul 5 2019 -------------- Thu Aug 27 09:51:57 CEST 2020 In our runs of CM2M_coarse_BLING, we notice strange things like negative O2 concentrations. Download their published result data to countercheck that. http://earth.cs.mcgill.ca/eslibrary/finalcentury.bling_ts.tar (149G) http://earth.cs.mcgill.ca/eslibrary/finalcentury.blingv0_ts.tar (53G) http://earth.cs.mcgill.ca/eslibrary/finalcentury.ocean_ts.tar (127G) I now also downloaded the published BLINGv0 output accompanying the Galbraith et al 2019 paper from http://earth.cs.mcgill.ca/eslibrary/finalcentury.blingv0_ts.tar to /p/projects/climber3/petri/POEM/exp/CM2Mc/finalcentury.blingv0_ts/, and they also have negative o2 concentrations, although not such clearly negative trend as we see in our output. On https://earthsystemdynamics.org/models/bling/ they provide a short history of BLING development. ------------------- Tue Sep 1 16:40:19 CEST 2020 Matthias and Willem not only noticed the strange BLING values, but also strange Pacific Overturning behaviour. To tackle that, we now try out the namelist changes described by Elizabeth Maroon, see above. work/CM2M_coarse_BLING-EM -> PMOC much improved, AMOC, slightly improved. BLING results still bad, e.g. global average oxygen and dic show monotic falling negative values. Looking further it appears that in the BLING code in the ``official'' MOM5 release, the BLING tracers got a _b appended to their names, probably to avoid conflicts with other tracer packages. However, in atmosphere code, field_table and data_table, the names of the corresponding tracers resp. gas fluxes do not have such _b suffix. Thus, it appears that the gases experience no counter-pressure at the sea surface and simply ``bubble out'' of the ocean into nirvana. Counter-experiments: - renaming the BLING tracer to o2_b to o2 in the code - renaming the o2 flux in the the data table to o2_b flux Both result in positive, slightly growing concentrations in the ocean, although Matthias reports that it is too large by a factor of 1000. Just deactivating BLING does not change overturning. ----------------- Mon Sep 21 10:02:45 CEST 2020 In the field table of Eric Galbraith et al (see above) there are some cross-land mixxing entries around Java, which are not in the ``official'' distribution. Try those -> work/CM2M_coarse_BLING-EM2 ----------------- On 22.09.20 19:31, Eric Galbraith wrote: > Hi Willem! > > Sorry to hear you're having trouble! I am not familiar with what has happened with the official GFDL release over the years - are there any other names listed in the code? Niki Zadeh perhaps? If so you might ask them. I haven't run the model myself in 5 or 6 years now (I'm doing global fishing and hunter gatherer models now). > > I think I originally used _b to indicate BLING tracers (vs. TOPAZ tracers, which had no such suffix). > > If you are running out of O2 and DIC specifically, I'd guess it's because you have an inconsistency in your air-sea boundary conditions. Perhaps the model is looking for the atmospheric pO2 and pCO2 with _b suffixes, and your boundary conditions are providing these without suffixes? Or vice versa? As I recall, there is no error for missing atmospheric pressures - it just sets the atmosphere to zero, which should cause rapid outgassing. > > Attached is a version from the 2012 Siena codebase, in case it's helpful to take a peek at (though there may be many inconsistencies with the rest of the code you are using). > > Eric Galbraith > Professor > Earth and Planetary Science > McGill University > 3450 University Street, Montreal Canada > H3A 0E8 > > 514-398-3677 > eric.galbraith@mcgill.ca > https://earthsystemdynamics.org >> On Sep 22, 2020, at 5:07 AM, Willem Huiskamp wrote: >> >> Hi Eric, >> >> Hope you're doing well during this crazy year. Our group here at PIK has recently been trying to run a modified version of CM2Mc and found some strange issues. Running the official release from GFDL, we noticed that the BLING model has two sets of many biogeochemical tracers - ones with _b appended to them, and those without. When running 'out of the box', our model gradually drained of all DIC and oxygen, which was remedied by either changing tracer names in the code itself, or changing flux definitions in the coupler/ data_table. >> >> I was wondering if you could clarify why these extra tracers exist and if you have an example codebase where this conflict is cleanly resolved, as the GFDL release seems to still contain many issues in addition to these. -> mom5_fv_130917/src/ocean_shared/generic_tracers/generic_BLING-EG.F90 ---------------- Thu Oct 1 15:05:23 CEST 2020 Got this code mom5_fv_130917 to compile. Had to apply a patch to diag_util.F90 to avoid crash while writing uninitialized axis info to diag_field_log (in the ocean grid structure, the axis ids for u_at_depth and v_at_depth are never initizialized) --- ../../src/shared/diag_manager/diag_util.F90 (revision 844) +++ ../../src/shared/diag_manager/diag_util.F90 (revision 845) @@ -644,7 +644,11 @@ axes_list='' DO i = 1, SIZE(axes) + if (axes(i) > 0) then CALL get_diag_axis_name(axes(i),axis_name) + else + axis_name = '?' + endif IF ( TRIM(axes_list) /= '' ) axes_list = TRIM(axes_list)//',' axes_list = TRIM(axes_list)//TRIM(axis_name) END DO In the generic_BLINGv0.F90, the tracer names have suffix _v0 to prevent conflicts with the same tracers in the generic_BLING.F90 (v2) However, in INPUT/ocean_blingv0.res.nc the tracer names do not have that suffix, which makes the model crash during init. FATAL from PE 23: do14c_v0 is not initialized as an ideal passive tracer, it is not initialized as constant, and it does not exist in the file INPUT/ocean_blingv0.res.ncAll tracers must have initialization specified. There is no default. Sigh. cd work/CM2Mc/INPUT rm ocean_blingv0.res.nc ncrename \ -v do14c\,do14c_v0 \ -v di14c\,di14c_v0 \ -v htotal\,htotal_v0 \ -v co3_ion\,co3_ion_v0 \ -v dic\,dic_v0 \ -v alk\,alk_v0 \ -v irr_mem\,irr_mem_v0 \ -v biomass_p\,biomass_p_v0 \ -v chl\,chl_v0 \ -v po4_pre\,po4_pre_v0 \ -v po4\,po4_v0 \ -v o2\,o2_v0 \ -v dop\,dop_v0 \ -v fed\,fed_v0 \ ../../../exp/CM2Mc/INPUT/ocean_blingv0.res.nc ocean_blingv0.res.nc -------------- Oct 7 2019 15:24 With the -EM2 parameterisation, we get too much sea-ice, especially in the north pacific. And it is too cold, especially around Arctica. Next try: Set the ice_model parameters back to non-EM values (from the "official" GFDL distribution) -> -EM3 Further: Following Erics suggestions in his mail from 22.09.20 19:31 (see above), modified the ``official'' generic_BLING.F90 by removing all the _b suffixes from all tracer names. Also many tracer names in the file INPUT/ocean_bling.res.nc needed renaming accordingly. ncrename -v dic_b\,dic \ -v alk_b\,alk \ -v po4_b\,po4 \ -v o2_b\,o2 \ -v dop_b\,dop \ -v fed_b\,fed \ -v htotal_b\,htotal \ -v co3_ion_b\,co3_ion \ -v irr_mem_b\,irr_mem \ exp/CM2M_coarse_BLING/INPUT/ocean_bling.res.nc -> work/CM2M_coarse_BLING-EM3/ -------------- - generic_BLING.F90: One Bug fix which affects POEM results. A first test showed that this indeed has a significant effect on the O2 concentration, but hardly on the other BLING tracers. @@ -3109,7 +3109,7 @@ grid_tmask(i,j,1) sc_no_term = sqrt(660.0 / (sc_o2 + epsln)) - o2_alpha(i,j) = o2_saturation * sc_no_term * bling%Rho_0 + o2_alpha(i,j) = o2_saturation * sc_no_term o2_csurf(i,j) = o2_field(i,j,1,tau) * sc_no_term * bling%Rho_0 !nnz: MOM has rho(i,j,1,tau) enddo; enddo #mclaret commented on Dec 27, 2016 # #Just wanted to report a bug in the current version of BLING that affects the oxygen air-sea flux exchanges. Line 3112 # #o2_alpha(i,j) = o2_saturation * sc_no_term * bling%Rho_0 # #should be # #o2_alpha(i,j) = o2_saturation * sc_no_term. # #This is so because o2_saturation is already in units of mol/m3, as opposed to o2_field which is in units of mol/kg. # # #mclaret pushed a commit to mclaret/mom that referenced this issue on Dec 27, 2016 #bug fix in generic_BLING mom-ocean#162 # #nichannah pushed a commit that referenced this issue on Jan 27, 2017 #Merge pull request #163 from mclaret/blingbug -> work/CM2M_coarse_BLING-EM3-issue162 > Stefan Petri writes: >> I have run the code version with the mentioned fix, results are in >> /p/projects/climber3/petri/POEM/work/CM2M_coarse_BLING-EM3-issue162/history/ On 2021-09-30 15:16, Matthias Hofmann wrote: > O2 concentrations of the INPUT and RESULT files have the correct order > of magnitude. On 2021-09-30 22:18, Markus Drueke wrote: > Yes, thank you very much for checking. That means, I could also use the new implementation from my piControl spinup? Starting 1700 with the new LU dataset. On 2021-10-01 14:24, Stefan Petri wrote: > OK, Markus has the _b name fix is already in > /p/projects/amazonas/drueke/POEM/src/ocean_shared/generic_tracers/ > and in the corrsponding restart files :-) > Thus its now just the one-line patch for issue 162 -------------- Tue Aug 31 14:13:00 CEST 2021 For some time we were puzzled about how to generate a grid description for AM2/CM2 . New insight: It appears that for the AM2/CM2 atmosphere grids, make_hgrid is used with type --from_file, and the input file is created from the latb/lat/lonb/lon values that are computed in set_fv_geom(). In the CM2M_coarse_BLING case, those values match exactly. In x direction, this a nice regular grid. In y-direction, it is mostly regular, But the grid rows at north- and south-pole are smaller. Added some lines to fv_pack.F90 to print out the relevant grid information which can then be used as input for make_hgrid. (But I have not committed that code modification to svn/git yet) ----------- Mon Sep 26 11:44:28 CEST 2022 Note: In the data_table there are entries to read SIC, SIT, SST for the sea-ice module from INPUT/sst_ice_clim.nc . However, with this configuration, the sst_ice_clim.nc data is used only for cold-starting the sea-ice model. If a restart file exists, that data is used instead.