Skip to content

Design note around Carbon Isotopes read in as streams #3546

@ekluzek

Description

@ekluzek

A few design notes on how to bring Carbon Isotopes in the code as streams.

One change is to store the C13/C14 on the model grid (this is an increase in memory, but it scales with processors).

A common pattern for stream handling is to have: Init, Clean, Advance, and Interp methods, so we use that here.

New namelist data:

  • stream_meshfile_atm_c14

  • stream_year_first_c14

  • stream_year_last_c14

  • stream_year_first_c13

  • stream_year_last_c13

Hardcoded options:

  • atm_c14_mapalgo (hardcode this to nn for now)
  • atm_c14_tintalgo (hardcode this to linear for now)
  • atm_c14_taxmode (hardcode this to extend for now)
  • atm_c13_mapalgo (hardcode this to nn for now)
  • atm_c13_tintalgo (hardcode this to linear for now)
  • atm_c13_taxmode (hardcode this to extend for now)

New files:

  • src/cpl/share_esmf/CarbonIsotopeStreamType.F90

  • Description: Carbon isotope stream data for C13 and C14

  • Data:

    • with delta_c13_stream_type, delta_c14_stream_type
    • g_to_ig index array private and local
    • Have the data in here have the same units as the dataset, in the deltac13co2_in_air and Delta14cos_in_air units
  • Methods: (both delta_c13_stream_type and delta_c14_stream_type

    • Init
    • Clean
    • Advance
    • Interp
    • Move the check_units subroutine from CNCIsoAtmTimeSeriesReadMod to here (check both units and info)
  • unit_test_stubs/share_esmf/CarbonIsotopeStreamType.F90

  • Description: Stub version for unit tests

Changes to these files:

  • src/biogeochem/CNCIsoAtmTimeSeriesReadMod.F90
  • Data:
    • Remove: *_time, time_axis_offset, nsectors_c14 data
    • Add delta_c13_stream, delta_c14_stream instances
    • Changes units from deltac13co2 and Deltac14co2 to model units
  • Methods:
    • subroutine C14_init_BombSpike -- most removed -- calls deltac13_stream%Init, delta_c13_stream%Advance

    • subroutine C13_Init_TimeSeries -- most removed -- calls deltac14_stream%Init, delta_c14_stream%Advance

    • subroutine C13TimeSeries -- much removed, call the delta_c13_stream%Advance and delta_c13_stream%Interp methods
      RETURN pointer to deltac13 data(begg:endg)

    • subroutine C14BombSpike -- much removed, call the delta_c14_stream%Advance and delta_c14_stream%Interp methods
      RETURN pointer to deltac14 data(begg:endg)

    • subroutine check_units -- move to CarbonIsotopeStreamType.F90

    • subroutine CIsoAtmReadNML -- (NEW) read in the namelist: carbon_isotope_streams

Changes to:
src/biogeophys/PhotosynthesisMod.F90

  • Methods:
    • subroutine PhotosynthesisTotal -- nsectors_c14 removed, rc14_atm and rc13_atm become gridcell arrays: begg:endg
      • remove the latdeg and sector_c14 determination

Metadata

Metadata

Assignees

Labels

code healthimproving internal code structure to make easier to maintain (sustainability)priority: highHigh priority to fix/merge soon, e.g., because it is a problem in important configurations

Projects

Status

Todo

Relationships

None yet

Development

No branches or pull requests

Issue actions