diff --git a/configurations/ispol_bgc_single_cell/namelist.seaice b/configurations/ispol_bgc_single_cell/namelist.seaice new file mode 100644 index 0000000..8d2c3f2 --- /dev/null +++ b/configurations/ispol_bgc_single_cell/namelist.seaice @@ -0,0 +1,514 @@ +&seaice_model + config_dt = 3600.0 + config_calendar_type = 'noleap' + config_start_time = '2004-06-01_00:00:00' + config_stop_time = 'none' + config_run_duration = '01-00-00_00:00:00' + config_num_halos = 2 +/ +&io + config_pio_num_iotasks = 0 + config_pio_stride = 1 + config_write_output_on_startup = false + config_test_case_diag = false + config_test_case_diag_type = 'none' + config_full_abort_write = true +/ +&decomposition + config_block_decomp_file_prefix = 'graphs/graph.info.part.' + config_number_of_blocks = 0 + config_explicit_proc_decomp = false + config_proc_decomp_file_prefix = 'graphs/graph.info.part.' + config_use_halo_exch = true + config_aggregate_halo_exch = false + config_reuse_halo_exch = false + config_load_balance_timers = false +/ +&restart + config_do_restart = false + config_restart_timestamp_name = 'restart_timestamp' + config_do_restart_hbrine = false + config_do_restart_zsalinity = false + config_do_restart_bgc = false + config_do_restart_snow_density = false + config_do_restart_snow_grain_radius = false +/ +&dimensions + config_nCategories = 5 + config_nIceLayers = 7 + config_nSnowLayers = 5 +/ +&initialize + config_earth_radius = 6371229.0 + config_initial_condition_type = 'uniform_1D' + config_initial_ice_area = 1.0 + config_initial_ice_volume = 0.001 + config_initial_snow_volume = 0.0 + config_initial_latitude_north = 70.0 + config_initial_latitude_south = -60.0 + config_initial_velocity_type = 'uniform' + config_initial_uvelocity = 0.0 + config_initial_vvelocity = 0.0 + config_calculate_coriolis = true +/ +&use_sections + config_use_dynamics = true + config_use_velocity_solver = false + config_use_advection = false + config_use_forcing = true + config_use_column_package = true + config_use_prescribed_ice = false + config_use_prescribed_ice_forcing = false +/ +&forcing + config_atmospheric_forcing_type = 'ISPOL' + config_forcing_start_time = '2004-06-01_00:00:00' + config_forcing_cycle_start = '2004-01-01_00:00:00' + config_forcing_cycle_duration = '01-00-00_00:00:00' + config_forcing_precipitation_units = 'mm_per_sec' + config_forcing_sst_type = 'ISPOL' + config_update_ocean_fluxes = false + config_include_pond_freshwater_feedback = false +/ +&testing + config_use_test_ice_shelf = false + config_testing_system_test = false +/ +&velocity_solver + config_dynamics_subcycle_number = 1 + config_rotate_cartesian_grid = true + config_include_metric_terms = true + config_elastic_subcycle_number = 120 + config_strain_scheme = 'variational' + config_constitutive_relation_type = 'evp' + config_stress_divergence_scheme = 'variational' + config_variational_basis = 'wachspress' + config_variational_denominator_type = 'original' + config_wachspress_integration_type = 'dunavant' + config_wachspress_integration_order = 8 + config_average_variational_strain = false + config_calc_velocity_masks = true + config_use_air_stress = true + config_use_ocean_stress = true + config_use_surface_tilt = true + config_geostrophic_surface_tilt = true + config_ocean_stress_type = 'quadratic' + config_use_special_boundaries_velocity = false + config_use_special_boundaries_velocity_masks = false +/ +&advection + config_advection_type = 'incremental_remap' + config_monotonic = true + config_conservation_check = false + config_monotonicity_check = false + config_recover_tracer_means_check = false +/ +&column_package + config_use_column_shortwave = true + config_use_column_vertical_thermodynamics = true + config_use_column_biogeochemistry = true + config_use_column_itd_thermodynamics = true + config_use_column_ridging = true + config_use_column_snow_tracers = false +/ +&column_tracers + config_use_ice_age = true + config_use_first_year_ice = true + config_use_level_ice = true + config_use_cesm_meltponds = false + config_use_level_meltponds = true + config_use_topo_meltponds = false + config_use_aerosols = false + config_use_effective_snow_density = false + config_use_snow_grain_radius = false + config_use_special_boundaries_tracers = false +/ +&biogeochemistry + config_use_brine = true + config_use_vertical_zsalinity = false + config_use_vertical_biochemistry = true + config_use_shortwave_bioabsorption = false + config_use_vertical_tracers = true + config_use_skeletal_biochemistry = false + config_use_nitrate = true + config_use_carbon = true + config_use_chlorophyll = false + config_use_ammonium = true + config_use_silicate = true + config_use_DMS = false + config_use_nonreactive = false + config_use_humics = true + config_use_DON = true + config_use_iron = true + config_use_macromolecules = false + config_use_modal_aerosols = false + config_use_zaerosols = false + config_skeletal_bgc_flux_type = 'Jin2006' + config_scale_initial_vertical_bgc = false + config_biogrid_bottom_molecular_sublayer = 0.006 + config_biogrid_top_molecular_sublayer = 0.006 + config_bio_gravity_drainage_length_scale = 20.0 + config_zsalinity_molecular_sublayer = 0.0 + config_zsalinity_gravity_drainage_scale = 0.028 + config_snow_porosity_at_ice_surface = -0.3 + config_new_ice_fraction_biotracer = 1.0 + config_fraction_biotracer_in_frazil = 0.80 + config_ratio_Si_to_N_diatoms = 1.80 + config_ratio_Si_to_N_small_plankton = 0.00 + config_ratio_Si_to_N_phaeocystis = 0.00 + config_ratio_S_to_N_diatoms = 0.03 + config_ratio_S_to_N_small_plankton = 0.03 + config_ratio_S_to_N_phaeocystis = 0.03 + config_ratio_Fe_to_C_diatoms = 0.0033 + config_ratio_Fe_to_C_small_plankton = 0.0033 + config_ratio_Fe_to_C_phaeocystis = 0.1 + config_ratio_Fe_to_N_diatoms = 0.023 + config_ratio_Fe_to_N_small_plankton = 0.023 + config_ratio_Fe_to_N_phaeocystis = 0.7 + config_ratio_Fe_to_DON = 0.023 + config_ratio_Fe_to_DOC_saccharids = 0.1 + config_ratio_Fe_to_DOC_lipids = 0.033 + config_respiration_fraction_of_growth = 0.05 + config_rapid_mobile_to_stationary_time = 3600.0 + config_long_mobile_to_stationary_time = 7776000.0 + config_algal_maximum_velocity = 0.0000001 + config_ratio_Fe_to_dust = 0.035 + config_solubility_of_Fe_in_dust = 0.005 + config_chla_absorptivity_of_diatoms = 0.03 + config_chla_absorptivity_of_small_plankton = 0.01 + config_chla_absorptivity_of_phaeocystis = 0.05 + config_light_attenuation_diatoms = 0.3 + config_light_attenuation_small_plankton = 0.2 + config_light_attenuation_phaeocystis = 0.17 + config_light_inhibition_diatoms = 0.001 + config_light_inhibition_small_plankton = 0.001 + config_light_inhibition_phaeocystis = 0.04 + config_maximum_growth_rate_diatoms = 1.44 + config_maximum_growth_rate_small_plankton = 0.41 + config_maximum_growth_rate_phaeocystis = 0.63 + config_temperature_growth_diatoms = 0.063 + config_temperature_growth_small_plankton = 0.063 + config_temperature_growth_phaeocystis = 0.063 + config_grazed_fraction_diatoms = 0.19 + config_grazed_fraction_small_plankton = 0.19 + config_grazed_fraction_phaeocystis = 0.19 + config_mortality_diatoms = 0.007 + config_mortality_small_plankton = 0.007 + config_mortality_phaeocystis = 0.007 + config_temperature_mortality_diatoms = 0.03 + config_temperature_mortality_small_plankton = 0.03 + config_temperature_mortality_phaeocystis = 0.03 + config_exudation_diatoms = 0.0 + config_exudation_small_plankton = 0.0 + config_exudation_phaeocystis = 0.0 + config_nitrate_saturation_diatoms = 1.0 + config_nitrate_saturation_small_plankton = 1.0 + config_nitrate_saturation_phaeocystis = 1.0 + config_ammonium_saturation_diatoms = 0.3 + config_ammonium_saturation_small_plankton = 0.3 + config_ammonium_saturation_phaeocystis = 0.3 + config_silicate_saturation_diatoms = 4.0 + config_silicate_saturation_small_plankton = 0.0 + config_silicate_saturation_phaeocystis = 0.0 + config_iron_saturation_diatoms = 1.0 + config_iron_saturation_small_plankton = 0.2 + config_iron_saturation_phaeocystis = 0.1 + config_fraction_spilled_to_DON = 0.6 + config_degredation_of_DON = 0.2 + config_fraction_DON_ammonium = 1.0 + config_fraction_loss_to_saccharids = 0.5 + config_fraction_loss_to_lipids = 0.5 + config_fraction_exudation_to_saccharids = 1.0 + config_fraction_exudation_to_lipids = 1.0 + config_remineralization_saccharids = 0.03 + config_remineralization_lipids = 0.03 + config_maximum_brine_temperature = 0.0 + config_salinity_dependence_of_growth = 1.0 + config_minimum_optical_depth = 0.1 + config_slopped_grazing_fraction = 0.5 + config_excreted_fraction = 0.5 + config_fraction_mortality_to_ammonium = 0.9 + config_fraction_iron_remineralized = 1.0 + config_nitrification_rate = 0.046 + config_desorption_loss_particulate_iron = 3065.0 + config_maximum_loss_fraction = 0.9 + config_maximum_ratio_iron_to_saccharids = 0.2 + config_respiration_loss_to_DMSPd = 0.75 + config_DMSP_to_DMS_conversion_fraction = 0.7 + config_DMSP_to_DMS_conversion_time = 5.0 + config_DMS_oxidation_time = 12.0 + config_mobility_type_diatoms = 0.0 + config_mobility_type_small_plankton = 0.0 + config_mobility_type_phaeocystis = 0.0 + config_mobility_type_nitrate = -1.0 + config_mobility_type_ammonium = 0.0 + config_mobility_type_silicate = -1.0 + config_mobility_type_DMSPp = 0.5 + config_mobility_type_DMSPd = 0.0 + config_mobility_type_humics = 0.0 + config_mobility_type_saccharids = 0.0 + config_mobility_type_lipids = 0.9 + config_mobility_type_inorganic_carbon = -1.0 + config_mobility_type_proteins = 0.0 + config_mobility_type_dissolved_iron = 0.0 + config_mobility_type_particulate_iron = 0.5 + config_mobility_type_black_carbon1 = 0.0 + config_mobility_type_black_carbon2 = 0.0 + config_mobility_type_dust1 = 0.0 + config_mobility_type_dust2 = 0.0 + config_mobility_type_dust3 = 0.0 + config_mobility_type_dust4 = 0.0 + config_ratio_C_to_N_diatoms = 7.0 + config_ratio_C_to_N_small_plankton = 7.0 + config_ratio_C_to_N_phaeocystis = 7.0 + config_ratio_chla_to_N_diatoms = 2.1 + config_ratio_chla_to_N_small_plankton = 1.1 + config_ratio_chla_to_N_phaeocystis = 0.84 + config_scales_absorption_diatoms = 2.0 + config_scales_absorption_small_plankton = 4.0 + config_scales_absorption_phaeocystis = 5.0 + config_ratio_C_to_N_proteins = 5.0 +/ +&shortwave + config_shortwave_type = 'dEdd' + config_albedo_type = 'ccsm3' + config_use_snicar_ad = true + config_visible_ice_albedo = 0.78 + config_infrared_ice_albedo = 0.36 + config_visible_snow_albedo = 0.98 + config_infrared_snow_albedo = 0.70 + config_variable_albedo_thickness_limit = 0.3 + config_ice_shortwave_tuning_parameter = 0.0 + config_pond_shortwave_tuning_parameter = 0.0 + config_snow_shortwave_tuning_parameter = 1.5 + config_temp_change_snow_grain_radius_change = 1.5 + config_max_melting_snow_grain_radius = 1500.0 + config_algae_absorption_coefficient = 0.6 +/ +&snow + config_snow_redistribution_scheme = 'none' + config_fallen_snow_radius = 54.526 + config_use_snow_liquid_ponds = false + config_new_snow_density = 100.0 + config_max_snow_density = 450.0 + config_minimum_wind_compaction = 10.0 + config_wind_compaction_factor = 27.3 + config_max_dry_snow_radius = 2800.0 +/ +&meltponds + config_snow_to_ice_transition_depth = 0.0 + config_pond_refreezing_type = 'hlid' + config_pond_flushing_timescale = 1.0e-3 + config_min_meltwater_retained_fraction = 0.15 + config_max_meltwater_retained_fraction = 1.0 + config_pond_depth_to_fraction_ratio = 0.8 + config_snow_on_pond_ice_tapering_parameter = 0.03 + config_critical_pond_ice_thickness = 0.01 +/ +&thermodynamics + config_thermodynamics_type = 'mushy' + config_heat_conductivity_type = 'bubbly' + config_rapid_mode_channel_radius = 0.5e-3 + config_rapid_model_critical_Ra = 10.0 + config_rapid_mode_aspect_ratio = 1.0 + config_slow_mode_drainage_strength = -5.0e-8 + config_slow_mode_critical_porosity = 0.05 + config_congelation_ice_porosity = 0.85 +/ +&itd + config_itd_conversion_type = 'linear remap' + config_category_bounds_type = 'original' +/ +&ridging + config_ice_strength_formulation = 'Rothrock75' + config_ridging_participation_function = 'exponential' + config_ridging_redistribution_function = 'exponential' + config_ridiging_efolding_scale = 3.0 + config_ratio_ridging_work_to_PE = 17.0 +/ +&atmosphere + config_atmos_boundary_method = 'ccsm3' + config_calc_surface_stresses = true + config_calc_surface_temperature = true + config_use_form_drag = false + config_use_high_frequency_coupling = false + config_boundary_layer_iteration_number = 5 +/ +&ocean + config_use_ocean_mixed_layer = false + config_min_friction_velocity = 0.0005 + config_ocean_heat_transfer_type = 'constant' + config_sea_freezing_temperature_type = 'mushy' + config_ocean_surface_type = 'free' + config_couple_biogeochemistry_fields = false + config_use_data_icebergs = false +/ +&diagnostics + config_check_state = false +/ +&AM_highFrequencyOutput + config_AM_highFrequencyOutput_enable = false + config_AM_highFrequencyOutput_compute_interval = 'output_interval' + config_AM_highFrequencyOutput_output_stream = 'highFrequencyOutput' + config_AM_highFrequencyOutput_compute_on_startup = true + config_AM_highFrequencyOutput_write_on_startup = true +/ +&AM_temperatures + config_AM_temperatures_enable = false + config_AM_temperatures_compute_interval = 'dt' + config_AM_temperatures_output_stream = 'none' + config_AM_temperatures_compute_on_startup = false + config_AM_temperatures_write_on_startup = false +/ +&AM_regionalStatistics + config_AM_regionalStatistics_enable = false + config_AM_regionalStatistics_compute_interval = 'output_interval' + config_AM_regionalStatistics_output_stream = 'regionalStatisticsOutput' + config_AM_regionalStatistics_compute_on_startup = false + config_AM_regionalStatistics_write_on_startup = false + config_AM_regionalStatistics_ice_extent_limit = 0.15 +/ +&AM_ridgingDiagnostics + config_AM_ridgingDiagnostics_enable = false + config_AM_ridgingDiagnostics_compute_interval = 'dt' + config_AM_ridgingDiagnostics_output_stream = 'none' + config_AM_ridgingDiagnostics_compute_on_startup = false + config_AM_ridgingDiagnostics_write_on_startup = false +/ +&AM_conservationCheck + config_AM_conservationCheck_enable = false + config_AM_conservationCheck_compute_interval = 'dt' + config_AM_conservationCheck_output_stream = 'conservationCheckOutput' + config_AM_conservationCheck_compute_on_startup = false + config_AM_conservationCheck_write_on_startup = false + config_AM_conservationCheck_write_to_logfile = true + config_AM_conservationCheck_carbon_failure_abort = false +/ +&AM_geographicalVectors + config_AM_geographicalVectors_enable = false + config_AM_geographicalVectors_compute_interval = 'dt' + config_AM_geographicalVectors_output_stream = 'none' + config_AM_geographicalVectors_compute_on_startup = false + config_AM_geographicalVectors_write_on_startup = false +/ +&AM_loadBalance + config_AM_loadBalance_enable = false + config_AM_loadBalance_compute_interval = 'output_interval' + config_AM_loadBalance_output_stream = 'loadBalanceOutput' + config_AM_loadBalance_compute_on_startup = false + config_AM_loadBalance_write_on_startup = false + config_AM_loadBalance_nProcs = 32 +/ +&AM_maximumIcePresence + config_AM_maximumIcePresence_enable = false + config_AM_maximumIcePresence_compute_interval = 'dt' + config_AM_maximumIcePresence_output_stream = 'maximumIcePresenceOutput' + config_AM_maximumIcePresence_compute_on_startup = false + config_AM_maximumIcePresence_write_on_startup = false + config_AM_maximumIcePresence_start_time = '0000-00-00_00:00:00' +/ +&AM_miscellaneous + config_AM_miscellaneous_enable = false + config_AM_miscellaneous_compute_interval = 'dt' + config_AM_miscellaneous_output_stream = 'none' + config_AM_miscellaneous_compute_on_startup = false + config_AM_miscellaneous_write_on_startup = false +/ +&AM_areaVariables + config_AM_areaVariables_enable = false + config_AM_areaVariables_compute_interval = 'dt' + config_AM_areaVariables_output_stream = 'none' + config_AM_areaVariables_compute_on_startup = false + config_AM_areaVariables_write_on_startup = false +/ +&AM_pondDiagnostics + config_AM_pondDiagnostics_enable = false + config_AM_pondDiagnostics_compute_interval = 'dt' + config_AM_pondDiagnostics_output_stream = 'none' + config_AM_pondDiagnostics_compute_on_startup = false + config_AM_pondDiagnostics_write_on_startup = false +/ +&AM_unitConversion + config_AM_unitConversion_enable = true + config_AM_unitConversion_compute_interval = 'dt' + config_AM_unitConversion_output_stream = 'none' + config_AM_unitConversion_compute_on_startup = false + config_AM_unitConversion_write_on_startup = false +/ +&AM_pointwiseStats + config_AM_pointwiseStats_enable = false + config_AM_pointwiseStats_compute_interval = 'dt' + config_AM_pointwiseStats_output_stream = 'pointwiseStatsOutput' + config_AM_pointwiseStats_compute_on_startup = false + config_AM_pointwiseStats_write_on_startup = false +/ +&AM_iceShelves + config_AM_iceShelves_enable = false + config_AM_iceShelves_compute_interval = 'output_interval' + config_AM_iceShelves_output_stream = 'iceShelvesOutput' + config_AM_iceShelves_compute_on_startup = true + config_AM_iceShelves_write_on_startup = true +/ +&AM_icePresent + config_AM_icePresent_enable = false + config_AM_icePresent_compute_interval = 'dt' + config_AM_icePresent_output_stream = 'none' + config_AM_icePresent_compute_on_startup = false + config_AM_icePresent_write_on_startup = false +/ +&AM_timeSeriesStatsDaily + config_AM_timeSeriesStatsDaily_enable = false + config_AM_timeSeriesStatsDaily_compute_on_startup = false + config_AM_timeSeriesStatsDaily_write_on_startup = false + config_AM_timeSeriesStatsDaily_compute_interval = 'dt' + config_AM_timeSeriesStatsDaily_output_stream = 'timeSeriesStatsDailyOutput' + config_AM_timeSeriesStatsDaily_restart_stream = 'timeSeriesStatsDailyRestart' + config_AM_timeSeriesStatsDaily_operation = 'avg' + config_AM_timeSeriesStatsDaily_reference_times = 'initial_time' + config_AM_timeSeriesStatsDaily_duration_intervals = 'repeat_interval' + config_AM_timeSeriesStatsDaily_repeat_intervals = 'reset_interval' + config_AM_timeSeriesStatsDaily_reset_intervals = '00-00-01_00:00:00' + config_AM_timeSeriesStatsDaily_backward_output_offset = '00-00-01_00:00:00' +/ +&AM_timeSeriesStatsMonthly + config_AM_timeSeriesStatsMonthly_enable = false + config_AM_timeSeriesStatsMonthly_compute_on_startup = false + config_AM_timeSeriesStatsMonthly_write_on_startup = false + config_AM_timeSeriesStatsMonthly_compute_interval = 'dt' + config_AM_timeSeriesStatsMonthly_output_stream = 'timeSeriesStatsMonthlyOutput' + config_AM_timeSeriesStatsMonthly_restart_stream = 'timeSeriesStatsMonthlyRestart' + config_AM_timeSeriesStatsMonthly_operation = 'avg' + config_AM_timeSeriesStatsMonthly_reference_times = 'initial_time' + config_AM_timeSeriesStatsMonthly_duration_intervals = 'repeat_interval' + config_AM_timeSeriesStatsMonthly_repeat_intervals = 'reset_interval' + config_AM_timeSeriesStatsMonthly_reset_intervals = '00-01-00_00:00:00' + config_AM_timeSeriesStatsMonthly_backward_output_offset = '00-01-00_00:00:00' +/ +&AM_timeSeriesStatsClimatology + config_AM_timeSeriesStatsClimatology_enable = false + config_AM_timeSeriesStatsClimatology_compute_on_startup = false + config_AM_timeSeriesStatsClimatology_write_on_startup = false + config_AM_timeSeriesStatsClimatology_compute_interval = '00-00-00_01:00:00' + config_AM_timeSeriesStatsClimatology_output_stream = 'timeSeriesStatsClimatologyOutput' + config_AM_timeSeriesStatsClimatology_restart_stream = 'timeSeriesStatsClimatologyRestart' + config_AM_timeSeriesStatsClimatology_operation = 'avg' + config_AM_timeSeriesStatsClimatology_reference_times = '00-03-01_00:00:00;00-06-01_00:00:00;00-09-01_00:00:00;00-12-01_00:00:00' + config_AM_timeSeriesStatsClimatology_duration_intervals = '00-03-00_00:00:00;00-03-00_00:00:00;00-03-00_00:00:00;00-03-00_00:00:00' + config_AM_timeSeriesStatsClimatology_repeat_intervals = '01-00-00_00:00:00;01-00-00_00:00:00;01-00-00_00:00:00;01-00-00_00:00:00' + config_AM_timeSeriesStatsClimatology_reset_intervals = '1000-00-00_00:00:00;1000-00-00_00:00:00;1000-00-00_00:00:00;1000-00-00_00:00:00' + config_AM_timeSeriesStatsClimatology_backward_output_offset = '00-03-00_00:00:00' +/ +&AM_timeSeriesStatsCustom + config_AM_timeSeriesStatsCustom_enable = false + config_AM_timeSeriesStatsCustom_compute_on_startup = false + config_AM_timeSeriesStatsCustom_write_on_startup = false + config_AM_timeSeriesStatsCustom_compute_interval = '00-00-00_01:00:00' + config_AM_timeSeriesStatsCustom_output_stream = 'timeSeriesStatsCustomOutput' + config_AM_timeSeriesStatsCustom_restart_stream = 'timeSeriesStatsCustomRestart' + config_AM_timeSeriesStatsCustom_operation = 'avg' + config_AM_timeSeriesStatsCustom_reference_times = 'initial_time' + config_AM_timeSeriesStatsCustom_duration_intervals = 'repeat_interval' + config_AM_timeSeriesStatsCustom_repeat_intervals = 'reset_interval' + config_AM_timeSeriesStatsCustom_reset_intervals = '00-00-07_00:00:00' + config_AM_timeSeriesStatsCustom_backward_output_offset = '00-00-01_00:00:00' +/ diff --git a/configurations/ispol_bgc_single_cell/streams.seaice b/configurations/ispol_bgc_single_cell/streams.seaice new file mode 100644 index 0000000..7bf129e --- /dev/null +++ b/configurations/ispol_bgc_single_cell/streams.seaice @@ -0,0 +1,351 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/testcases/single_cell_ispol/plot_testcase.py b/testcases/single_cell_ispol/plot_testcase.py new file mode 100644 index 0000000..380eb85 --- /dev/null +++ b/testcases/single_cell_ispol/plot_testcase.py @@ -0,0 +1,168 @@ +from netCDF4 import Dataset +import matplotlib.pyplot as plt +import numpy as np +#------------------------------------------------------------------------------- + +def plot_testcase(): + + cm = 1/2.54 # centimeters in inches + #plt.rc('font', family="Times") + plt.rc('mathtext',fontset="stix") + SMALL_SIZE = 8 + MEDIUM_SIZE = 8 + BIGGER_SIZE = 8 + plt.rc('font', size=SMALL_SIZE) # controls default text sizes + plt.rc('axes', titlesize=SMALL_SIZE) # fontsize of the axes title + plt.rc('axes', labelsize=MEDIUM_SIZE) # fontsize of the x and y labels + plt.rc('xtick', labelsize=SMALL_SIZE) # fontsize of the tick labels + plt.rc('ytick', labelsize=SMALL_SIZE) # fontsize of the tick labels + plt.rc('legend', fontsize=SMALL_SIZE) # legend fontsize + plt.rc('figure', titlesize=BIGGER_SIZE) # fontsize of the figure title + + fig, axis = plt.subplots(figsize=(8*cm,7*cm)) + + filein = Dataset("./output/output.2004.nc","r") + + iceVolumeCell = filein.variables["iceVolumeCell"][:,0] + snowVolumeCell = filein.variables["snowVolumeCell"][:,0] + surfaceTemperatureCell = filein.variables["surfaceTemperatureCell"][:,0] + + filein.close() + + line1, = axis.plot(surfaceTemperatureCell,color="green",label="surfaceT") + axis.set_ylabel("Temperature (C)") + axis.set_xlabel("Time step") + axis.set_title("MPAS_Seaice ISPOL cell") + + axis2 = axis.twinx() + + line2, = axis2.plot(iceVolumeCell,color="red",label="iceVolume") + line3, = axis2.plot(snowVolumeCell,color="blue",label="snowVolume") + axis2.set_ylabel("Thickness (m)") + axis2.set_ylim(0,None) + + axis2.legend(handles=[line1,line2,line3],loc='lower right') + + plt.tight_layout() + plt.savefig("single_cell_ispol.eps") + plt.savefig("single_cell_ispol.png",dpi=300) + + ### Plot BGC fields + filein = Dataset("./output/output.2004.nc","r") + + interfaceBiologyGrid = filein.variables["interfaceBiologyGrid"][:] + verticalNitrateConcCell = filein.variables["verticalNitrateIceCell"][:,0,:] + verticalAlgaeConcCell = filein.variables["verticalAlgaeIceCell"][:,0,:] + netBrineHeight = filein.variables["netBrineHeight"][:,0] + verticalSilicateConcCell = filein.variables["verticalSilicateIceCell"][:,0,:] + verticalAmmoniumConcCell = filein.variables["verticalAmmoniumIceCell"][:,0,:] + verticalDONConcCell = filein.variables["verticalDONIceCell"][:,0,:] + verticalDOCConcCell = filein.variables["verticalDOCIceCell"][:,0,:] + verticalDICConcCell = filein.variables["verticalDICIceCell"][:,0,:] + verticaldFeConcCell = filein.variables["verticalDissolvedIronIceCell"][:,0,:] + + nTime1 = filein.dimensions["Time"] + nTime = nTime1.size + + nBiogrid1 = filein.dimensions["nBioLayersP1"] + nBioLayersP1 = nBiogrid1.size + filein.close() + + totNitrate = np.linspace(1,nTime,nTime,dtype=float)*0 + totSilicate = np.linspace(1,nTime,nTime,dtype=float)*0 + totAmmonium= np.linspace(1,nTime,nTime,dtype=float)*0 + totAlgalN = np.linspace(1,nTime,nTime,dtype=float)*0 + algae1 = np.linspace(1,nBioLayersP1,nBioLayersP1,dtype=float)*0 + algae2 = np.linspace(1,nBioLayersP1,nBioLayersP1,dtype=float)*0 + totalalgae = np.linspace(1,nBioLayersP1,nBioLayersP1,dtype=float)*0 + + DOC1 = np.linspace(1,nBioLayersP1,nBioLayersP1,dtype=float)*0 + DOC2 = np.linspace(1,nBioLayersP1,nBioLayersP1,dtype=float)*0 + totDOCtmp = np.linspace(1,nBioLayersP1,nBioLayersP1,dtype=float)*0 + totDOC = np.linspace(1,nTime,nTime,dtype=float)*0 + totDON = np.linspace(1,nTime,nTime,dtype=float)*0 + totDIC = np.linspace(1,nTime,nTime,dtype=float)*0 + totdFe = np.linspace(1,nTime,nTime,dtype=float)*0 + + for cnt in range(0,nTime): + bgrid = interfaceBiologyGrid[:] * netBrineHeight[cnt] + totNitrate[cnt] = np.nansum(verticalNitrateConcCell[cnt,:]*bgrid[:]) + totSilicate[cnt] = np.nansum(verticalSilicateConcCell[cnt,:]*bgrid[:]) + totAmmonium[cnt] = np.nansum(verticalAmmoniumConcCell[cnt,:]*bgrid[:]) + algae1[:] = verticalAlgaeConcCell[cnt,0:nBioLayersP1] + algae2[:] = verticalAlgaeConcCell[cnt,nBioLayersP1:2*nBioLayersP1] + DOC1[:] = verticalDOCConcCell[cnt,0:nBioLayersP1] + DOC2[:] = verticalDOCConcCell[cnt,nBioLayersP1:2*nBioLayersP1] + totDOCtmp[:] = DOC1[:] + DOC2[:] + totDOC[cnt] = np.nansum(totDOCtmp[:]*bgrid[:]) + totDON[cnt] = np.nansum(verticalDONConcCell[cnt,:]*bgrid[:]) + totDIC[cnt] = np.nansum(verticalDICConcCell[cnt,:]*bgrid[:]) + totdFe[cnt] = np.nansum(verticaldFeConcCell[cnt,:]*bgrid[:]) + totalgae = algae1[:] + algae2[:] + totAlgalN[cnt] = np.nansum(totalgae[:]*bgrid[:]) + + ### total Algal Nitrogen, total Silicate, total Ammonium, total Nitrate + fig, axis = plt.subplots(figsize=(8*cm,7*cm)) + + line1, = axis.plot(totAlgalN,color="green",label="tot Algal N") + axis.set_ylabel("Algae (mmol N m-2)") + axis.set_xlabel("Time step") + axis.set_title("MPAS_Seaice ISPOL BGC") + + axis2 = axis.twinx() + + line2, = axis2.plot(totNitrate,color="red",label="Nitrate") + line3, = axis2.plot(totSilicate,color="blue",label="Silicate") + line4, = axis2.plot(totAmmonium,color="cyan",label="Ammonium") + axis2.set_ylabel("(mmol m-3)") + axis2.set_ylim(0,None) + + axis2.legend(handles=[line1,line2,line3,line4],loc='upper right') + + plt.tight_layout() + plt.savefig("single_cell_ispol_bgc.eps") + plt.savefig("single_cell_ispol_bgc.png",dpi=300) + + ### total dissolved organic carbon (minus proteins), total dissolved organic nitrogen + fig, axis = plt.subplots(figsize=(8*cm,7*cm)) + + line1, = axis.plot(totDOC,color="green",label="DOC (minus proteins)") + axis.set_ylabel("DOC (mmol C m-2)") + axis.set_xlabel("Time step") + axis.set_title("MPAS_Seaice ISPOL BGC") + + axis2 = axis.twinx() + + line2, = axis2.plot(totDON,color="red",label="DON") + axis2.set_ylabel("DON (mmol N m-2)") + + axis2.legend(handles=[line1,line2],loc='upper right') + + plt.tight_layout() + plt.savefig("single_cell_ispol_DOC_DON.eps") + plt.savefig("single_cell_ispol_DOC_DON.png",dpi=300) + + ### DIC, dissolved iron + fig, axis = plt.subplots(figsize=(8*cm,7*cm)) + + line1, = axis.plot(totDIC,color="green",label="DIC") + axis.set_ylabel("DIC (mmol C m-2)") + axis.set_xlabel("Time step") + axis.set_title("MPAS_Seaice ISPOL BGC") + + axis2 = axis.twinx() + + line2, = axis2.plot(totdFe,color="red",label="dissolve Fe") + axis2.set_ylabel("dFe (mmol Fe m-2)") + + axis2.legend(handles=[line1,line2],loc='lower right') + + plt.tight_layout() + plt.savefig("single_cell_ispol_DIC_dfe.eps") + plt.savefig("single_cell_ispol_DIC_dfe.png",dpi=300) + +#------------------------------------------------------------------------------- + +if __name__ == "__main__": + + plot_testcase() diff --git a/testcases/single_cell_ispol/plot_testcase_forcing.py b/testcases/single_cell_ispol/plot_testcase_forcing.py new file mode 100644 index 0000000..d1169fa --- /dev/null +++ b/testcases/single_cell_ispol/plot_testcase_forcing.py @@ -0,0 +1,226 @@ +from netCDF4 import Dataset +import matplotlib.pyplot as plt +import numpy as np +#------------------------------------------------------------------------------- + +def plot_testcase_forcing(): + + cm = 1/2.54 # centimeters in inches + plt.rc('mathtext',fontset="stix") + SMALL_SIZE = 8 + MEDIUM_SIZE = 8 + BIGGER_SIZE = 8 + plt.rc('font', size=SMALL_SIZE) # controls default text sizes + plt.rc('axes', titlesize=SMALL_SIZE) # fontsize of the axes title + plt.rc('axes', labelsize=MEDIUM_SIZE) # fontsize of the x and y labels + plt.rc('xtick', labelsize=SMALL_SIZE) # fontsize of the tick labels + plt.rc('ytick', labelsize=SMALL_SIZE) # fontsize of the tick labels + plt.rc('legend', fontsize=SMALL_SIZE) # legend fontsize + plt.rc('figure', titlesize=BIGGER_SIZE) # fontsize of the figure title + + ### Air Specific Humidity and Air Temperature + fig, axis = plt.subplots(figsize=(8*cm,7*cm)) + + filein = Dataset("./output/output.2004.nc","r") + + airSpecificHumidity = filein.variables["airSpecificHumidity"][:,0] + airTemperature = filein.variables["airTemperature"][:,0] + + filein.close() + + line1, = axis.plot(airTemperature,color="green",label="air T") + axis.set_ylabel("air T (K)") + axis.set_xlabel("Time step") + axis.set_title("MPAS_Seaice ISPOL forcing") + + axis2 = axis.twinx() + + line2, = axis2.plot(airSpecificHumidity,color="red",label="airSpecificHumidity") + axis2.set_ylabel("Spec. Humidity") + + axis2.legend(handles=[line1,line2],loc='lower left') + + plt.tight_layout() + plt.savefig("single_cell_ispol_airT_humid.eps") + plt.savefig("single_cell_ispol_airT_humid.png",dpi=300) + + ### uAirVelocity vAirVelocity + fig, axis = plt.subplots(figsize=(8*cm,7*cm)) + + filein = Dataset("./output/output.2004.nc","r") + uAirVelocity = filein.variables["uAirVelocity"][:,0] + vAirVelocity = filein.variables["vAirVelocity"][:,0] + + filein.close() + + line1, = axis.plot(vAirVelocity,color="green",label="air v-vel") + axis.set_ylabel("v-vel (m s-1)") + axis.set_xlabel("Time step") + axis.set_title("MPAS_Seaice ISPOL forcing") + + axis2 = axis.twinx() + + line2, = axis2.plot(uAirVelocity,color="red",label="air u-vel") + axis2.set_ylabel("u-vel (m s-1)") + + axis2.legend(handles=[line1,line2],loc='lower left') + + plt.tight_layout() + plt.savefig("single_cell_ispol_u_v_AirVel.eps") + plt.savefig("single_cell_ispol_u_v_AirVel.png",dpi=300) + + ### seaSurfaceTemperature seaSurfaceSalinity + fig, axis = plt.subplots(figsize=(8*cm,7*cm)) + + filein = Dataset("./output/output.2004.nc","r") + seaSurfaceTemperature = filein.variables["seaSurfaceTemperature"][:,0] + seaSurfaceSalinity = filein.variables["seaSurfaceSalinity"][:,0] + + filein.close() + + line1, = axis.plot(seaSurfaceSalinity,color="green",label="SSS") + axis.set_ylabel("sss (ppt)") + axis.set_xlabel("Time step") + axis.set_title("MPAS_Seaice ISPOL forcing") + + axis2 = axis.twinx() + + line2, = axis2.plot(seaSurfaceTemperature,color="red",label="SST") + axis2.set_ylabel("T (C)") + + axis2.legend(handles=[line1,line2],loc='upper right') + + plt.tight_layout() + plt.savefig("single_cell_ispol_sst_sss.eps") + plt.savefig("single_cell_ispol_sst_sss.png",dpi=300) + + ### rainfallRate oceanMixedLayerDepth + fig, axis = plt.subplots(figsize=(8*cm,7*cm)) + + filein = Dataset("./output/output.2004.nc","r") + rainfallRate = filein.variables["rainfallRate"][:,0] + oceanMixedLayerDepth = filein.variables["oceanMixedLayerDepth"][:,0] + + filein.close() + + line1, = axis.plot(oceanMixedLayerDepth,color="green",label="MLD") + axis.set_ylabel("MLD (m)") + axis.set_xlabel("Time step") + axis.set_title("MPAS_Seaice ISPOL forcing") + + axis2 = axis.twinx() + + line2, = axis2.plot(rainfallRate,color="red",label="rainfall") + axis2.set_ylabel("rain (kg m-2 s-1)") + + axis2.legend(handles=[line1,line2],loc='lower left') + + plt.tight_layout() + plt.savefig("single_cell_ispol_mld_rain.eps") + plt.savefig("single_cell_ispol_mld_rain.png",dpi=300) + + ### uOceanVelocity vOceanVelocity + fig, axis = plt.subplots(figsize=(8*cm,7*cm)) + + filein = Dataset("./output/output.2004.nc","r") + uOceanVelocity = filein.variables["uOceanVelocity"][:,0] + vOceanVelocity = filein.variables["vOceanVelocity"][:,0] + + filein.close() + + line1, = axis.plot(vOceanVelocity,color="green",label="ocean v-vel") + axis.set_ylabel("v-vel (m s-1)") + axis.set_xlabel("Time step") + axis.set_title("MPAS_Seaice ISPOL forcing") + + axis2 = axis.twinx() + + line2, = axis2.plot(uOceanVelocity,color="red",label="ocean u-vel") + axis2.set_ylabel("u-vel (m s-1)") + + axis2.legend(handles=[line1,line2],loc='lower left') + + plt.tight_layout() + plt.savefig("single_cell_ispol_u_v_oceanVel.eps") + plt.savefig("single_cell_ispol_u_v_oceanVel.png",dpi=300) + + ### seaSurfaceTiltU seaSurfaceTiltV + fig, axis = plt.subplots(figsize=(8*cm,7*cm)) + + filein = Dataset("./output/output.2004.nc","r") + seaSurfaceTiltU = filein.variables["seaSurfaceTiltU"][:,0] + seaSurfaceTiltV = filein.variables["seaSurfaceTiltV"][:,0] + + filein.close() + + line1, = axis.plot(seaSurfaceTiltV,color="green",label="sea surface tilt (v)") + axis.set_ylabel("v-tilt") + axis.set_xlabel("Time step") + axis.set_title("MPAS_Seaice ISPOL forcing") + + axis2 = axis.twinx() + + line2, = axis2.plot(seaSurfaceTiltU,color="red",label="sea surface tilt (u)") + axis2.set_ylabel("u-tilt") + + axis2.legend(handles=[line1,line2],loc='lower left') + + plt.tight_layout() + plt.savefig("single_cell_ispol_u_v_sstilt.eps") + plt.savefig("single_cell_ispol_u_v_sstilt.png",dpi=300) + + ### oceanNitrateConc oceanSilicateConc + fig, axis = plt.subplots(figsize=(8*cm,7*cm)) + + filein = Dataset("./output/output.2004.nc","r") + oceanNitrateConc = filein.variables["oceanNitrateConc"][:,0] + oceanSilicateConc = filein.variables["oceanSilicateConc"][:,0] + + filein.close() + + line1, = axis.plot(oceanSilicateConc,color="green",label="ocean SiO3") + axis.set_ylabel("mmol Si m-3") + axis.set_xlabel("Time step") + axis.set_title("MPAS_Seaice ISPOL forcing") + + axis2 = axis.twinx() + + line2, = axis2.plot(oceanNitrateConc,color="red",label="ocean NO3") + axis2.set_ylabel("mmol NO3 m-3") + + axis2.legend(handles=[line1,line2],loc='lower left') + + plt.tight_layout() + plt.savefig("single_cell_ispol_ocean_nit_sil.eps") + plt.savefig("single_cell_ispol_ocean_nit_sil.png",dpi=300) + + ### shortwaveDown longwaveDown + fig, axis = plt.subplots(figsize=(8*cm,7*cm)) + + filein = Dataset("./output/output.2004.nc","r") + shortwaveDown = filein.variables["shortwaveDown"][:,0] + longwaveDown = filein.variables["longwaveDown"][:,0] + + filein.close() + + line1, = axis.plot(longwaveDown,color="green",label="longwave down") + axis.set_ylabel("Longwave (W m-2)") + axis.set_xlabel("Time step") + axis.set_title("MPAS_Seaice ISPOL forcing") + + axis2 = axis.twinx() + + line2, = axis2.plot(shortwaveDown,color="red",label="shortwave down") + axis2.set_ylabel("Shortwave (W m-2)") + + axis2.legend(handles=[line1,line2],loc='lower left') + + plt.tight_layout() + plt.savefig("single_cell_ispol_long_shortwave.eps") + plt.savefig("single_cell_ispol_long_shortwave.png",dpi=300) + +#------------------------------------------------------------------------------- + +if __name__ == "__main__": + + plot_testcase_forcing() diff --git a/testcases/single_cell_ispol/run_testcase.py b/testcases/single_cell_ispol/run_testcase.py new file mode 100644 index 0000000..b68fe97 --- /dev/null +++ b/testcases/single_cell_ispol/run_testcase.py @@ -0,0 +1,35 @@ +import os +from plot_testcase import plot_testcase +from plot_testcase_forcing import plot_testcase_forcing + +#------------------------------------------------------------------------------- + +def run_testcase(): + + MPAS_SEAICE_EXECUTABLE = os.environ.get('MPAS_SEAICE_EXECUTABLE') + MPAS_SEAICE_TESTCASES_RUN_COMMAND = os.environ.get('MPAS_SEAICE_TESTCASES_RUN_COMMAND') + if (MPAS_SEAICE_TESTCASES_RUN_COMMAND is None): + MPAS_SEAICE_TESTCASES_RUN_COMMAND = "" + MPAS_SEAICE_DOMAINS_DIR = os.environ.get('MPAS_SEAICE_DOMAINS_DIR') + + # copy namelist and streams file + os.system("cp ../../configurations/ispol_bgc_single_cell/namelist.seaice .") + os.system("cp ../../configurations/ispol_bgc_single_cell/streams.seaice .") + + # forcing + os.system("python %s/domain_sc_-67.9_-54.4/get_domain.py" %(MPAS_SEAICE_DOMAINS_DIR)) + + # run MPAS-Seaice + os.system("%s %s" %(MPAS_SEAICE_TESTCASES_RUN_COMMAND, MPAS_SEAICE_EXECUTABLE)) + + # plot output + plot_testcase() + + # plot forcing + plot_testcase_forcing() + +#------------------------------------------------------------------------------- + +if __name__ == "__main__": + + run_testcase()