What Tracer Tendencies will MARBL Compute?

This is an important question, because the GCM will need to provide the current state for each tracer at each timestep (including initial conditions at the beginning of the run). MARBL provides a stand-alone test in $MARBL/tests/regression_tests/requested_tracers that shows how the MARBL library passes this information to the GCM. For example, running

$ ./requested_tracers.py

Provides a list of the tracers in the base ecosystem module. The test output is below:

-----------------
Requested tracers
-----------------

1. PO4
2. NO3
3. SiO3
4. NH4
5. Fe
6. Lig
7. O2
8. DIC
9. DIC_ALT_CO2
10. ALK
11. ALK_ALT_CO2
12. DOC
13. DON
14. DOP
15. DOPr
16. DONr
17. DOCr
18. zooC
19. spChl
20. spC
21. spP
22. spFe
23. spCaCO3
24. diatChl
25. diatC
26. diatP
27. diatFe
28. diatSi
29. diazChl
30. diazC
31. diazP
32. diazFe

Tracer Metadata Available from the MARBL Interface

The details are found in $MARBL/tests/driver_src/marbl.F90:

call driver_status_log%log_header('Requested tracers', subname)
do n=1, size(marbl_instance%tracer_metadata)
  write(log_message, "(I0, 2A)") n, '. ',                               &
    trim(marbl_instance%tracer_metadata(n)%short_name)
  call driver_status_log%log_noerror(log_message, subname)
end do

The marbl_interface_class contains an object tracer_metadata, the length of which is equal to the number of tracers MARBL is computing tendencies of. The tracer_metadata_type contains metadata for each tracer:

type, public :: marbl_tracer_metadata_type
   character(len=char_len) :: short_name
   character(len=char_len) :: long_name
   character(len=char_len) :: units
   character(len=char_len) :: tend_units
   character(len=char_len) :: flux_units
   logical                 :: lfull_depth_tavg
   character(len=char_len) :: tracer_module_name
end type marbl_tracer_metadata_type

The short_name and long_name are both unique to the tracer, and either can be used to inform the GCM which tracer each index refers to.

Example: Accessing Tracer Metadata in POP

Details are on the implementation page