Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add a geospatial extension #20

Draft
wants to merge 23 commits into
base: master
Choose a base branch
from
Draft

Conversation

mdpiper
Copy link
Member

@mdpiper mdpiper commented Feb 7, 2024

This pull request explores how a BMI extension could work in Fortran. It's modeled on @mcflugen's csdms/bmi-example-python#31, with some differences based on the language and the choices I made.

Like the Fortran specification for the core BMI functions, the geospatial BMI extension resides in a separate repository: https://github.com/mdpiper/bmi-geospatial-fortran. The code there defines an abstract type, bmi_geo, that is intended to be overridden by a concrete type in an implementation.

This PR implements bmi_geo through the type bmi_geo_heat. A key feature of a bmi_geo_heat type is that it has a reference to the bmi_heat type that implements the core BMI functions for the heat model.

I included an example program, bmi_geospatial_ex, that demostrates how to call both the core BMI functions and the extension functions for the heat model.

@mdpiper
Copy link
Member Author

mdpiper commented Feb 7, 2024

A UML diagram depicting the relationships between the different types in the example.

bmi-geo-fortran

A key point is that bmi_geo_heat "has a" bmi_heat, and the relationship only goes one way, with the extension being able to access the core BMI but not the other way around.

@mdpiper mdpiper changed the title Add a geosptial extension Add a geospatial extension Feb 7, 2024
@mdpiper
Copy link
Member Author

mdpiper commented Feb 7, 2024

My Fortran is rusty, so I welcome any suggestions for improvement to the code in this PR.

This matchesthe change in 77407c8.

[ci skip]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant