In this PR, I used features of Fortran 2003 to create an object-oriented BMI plus a sample implementation.
The BMI is defined as an abstract type, called bmi, where the BMI methods are listed as deferred procedures whose signatures are defined in an abstract interface.
For the sample implementation, I wrapped the same heat diffusion model as in csdms/bmi-f90. Here, the BMI contains a concrete class, bmi_heat, that extends bmi and has an instance of heat_model as an attribute.
I made several sanity tests. In one test, I created two instances of the heat model BMI to check that they didn't interfere with each other.
Added a .bmi folder with metadata.
Set up continuous integration testing with Travis CI (wherein I used conda to install gcc, libgfortran, and cmake!).
In this PR, I used features of Fortran 2003 to create an object-oriented BMI plus a sample implementation.
bmi
, where the BMI methods are listed as deferred procedures whose signatures are defined in an abstract interface.bmi_heat
, that extendsbmi
and has an instance ofheat_model
as an attribute.conda
to installgcc
,libgfortran
, andcmake
!).