# CABLE
Thank you for submitting a pull request to the CABLE Project.
## Description
This builds the library for AM3 and future ACCESS3 applications. It
requires a rejig of the original library, taking some files out of the
default library and including them only in ESM1.6. The intention was
that the library would only be the science code, but this is not
possible with the current setup.
A summary of things that the science directory depends on, that extends
outside the `science` directory that I've identified:
* The biogeophysics derived types are not defined within the science
directory, as opposed to the CASA derived types which are defined within
the `science` directory. Each of these have different definitions for
each application (offline, ESM1.6, AM3). Logically, there should only be
one definition, but I don't think this will happen any time soon. In the
mean time, including the type modules in
`src/coupled/AM3/control/cable/CM3` in the library should be an
acceptable solution.
* The trickier problems are the namelists and surface types handling.
These are related issues, as the `cable_surface_types_mod` module also
reads the namelist that sets the CABLE surface types. Do the surface
types need to be handled in this way? Is there any foreseeable situation
where anyone would not use the standard CABLE PFT indexing? If we remove
this, it makes things significantly easier. It also does the extra work
of defining a bunch of required JULES variables. I think the best
solution is go back to hard-coded CABLE PFT indices, see [this JULES
PR](https://github.com/ACCESS-NRI/JULES/pull/345).
## Testing
- [x] Are the changes bitwise-compatible with the main branch? If
working on an optional feature, are the results bitwise-compatible when
this feature is off? If yes, copy benchcab output showing successful
completion of the bitwise compatibility tests or equivalent results
below this line.
<!-- readthedocs-preview cable start -->
----
📚 Documentation preview 📚:
https://cable--724.org.readthedocs.build/en/724/
<!-- readthedocs-preview cable end -->