Wiki

Clone wiki

pflotran / Developers / CodeDevelopment / CodeDevelopmentTODO

Process Model

  • Checkpoint / Restart [GEH] (Done)

  • Split up regression for each process model, add surface [BJA]

  • specify simulation mode from input file

    proposed format (BJA)

SIMULATION_MODE
    SUBSURFACE_FLOW (richards|th|general|co2)
    SUBSURFACE_TRANSPORT xxx
    SURFACE_FLOW (flow|th)
    SURFACE_TRANSPORT xxx
END
  • modify input file format for process model approach
  • refine classes for simulation, process model couplers and process models
    • single simulation class. differences for subsurface, surface, subsurface+surface should be handled through the pmc tree.
    • rename pmc to better reflect use (couples pm, time stepper rather than couples different pm) (ProblemCoupler?)
    • Change Synchronize[1|2|3] to better reflect when each is used (pre stepping, pre-next, post-next) or refine synchronization strategy (e.g. GlobalAuxVars / VecScatter approach)
  • move ugdm%scatter_bet_grids, ugdm%scatter_bet_grids_1dof, ugdm%scatter_bet_grids_ndof into surfsubsurface_simulation_type
  • transition remainder of test problems in legacy regression suite to the refactored version

Checkpoint / restart

Checkpoint restart of chemistry is not bit for bit.

Uniform interface for external drivers

We need to clean up the interface for external drivers to access information from the PM based model. Currently, every function call has to do a select class to determine what type of simulation object is present and then access the appropriate realization. See the above discussion on PM class cleanup.

We need something along the lines of:

realization => simulation%get_realization(SURFACE)
discretization => realization%get_discretization()
! do something with grid/mesh
realization%flow_inject_mass(...)

build pflotran by linking libpflotran.a so library can be tested before use by external drivers.

Time steppers

Put infrastructure in place for flexible selection of time steppers (select current BE, high order RK or implicit petsc TS, etc)

PETSc

  • (BJA) Switch to the petsc F90 interfaces (method 3) use statements instead of #including every petsc object into every module.
  • DONE (BJA, 2013-08-26) Requires removing the #include "finclude/petscsys.h" from definitions.h

pflotran_constants / definitions.h

  • Move mode specific constants into the appropriate module.
  • DONE (BJA, 2013-08-26) Replace the definitions.h with a module pflotran_constants.F90, and access through a use statement instead of #include.

Code cleanup

Consider cleaning up code that prevents compiling with things like -finit-real=nan to check for using uninitialized variables.

co2_span_wagner_spline.F90:145.57:

real(kind=selected_real_kind(10)) :: fgtab(nptab+1) !,fgtab2(nptab+1)
1

Error: Automatic array 'fgtab' at (1) cannot have an initializer

Produce Developer Documentation

Write documentation that lowers the learning curve for new developers.

Rename simulation_aux_type

The name of this PETSc Vec-based auxiliary derived type needs to be changed in order to differentiate it from cell-based auxiliary objects.

Updated