BISICLES AMR ice sheet model  0.9
Public Member Functions | List of all members
PythonInterface::PythonSurfaceFlux Class Reference

Use a python function to evaluate the surface flux. More...

#include <PythonInterface.H>

Inheritance diagram for PythonInterface::PythonSurfaceFlux:
Inheritance graph
[legend]
Collaboration diagram for PythonInterface::PythonSurfaceFlux:
Collaboration graph
[legend]

Public Member Functions

 PythonSurfaceFlux (const std::string &a_pyModule, const std::string &a_pyFunc, std::map< std::string, Real > &a_kwarg)
 Construct a PythonSurfaceFlux from module, function, and kwargs list. More...
 
virtual ~PythonSurfaceFlux ()
 
virtual SurfaceFluxnew_surfaceFlux ()
 factory method: return a pointer to a new SurfaceFlux object More...
 
virtual void surfaceThicknessFlux (LevelData< FArrayBox > &a_flux, const AmrIceBase &a_amrIce, int a_level, Real a_dt)
 define source term for thickness evolution and place it in flux More...
 
- Public Member Functions inherited from SurfaceFlux
virtual ~SurfaceFlux ()
 virtual destructor More...
 
virtual void evaluate (LevelData< FArrayBox > &a_data, const AmrIceBase &a_amrIce, int a_level, Real a_dt)
 Sub-classes of this class turned out to be useful for various data apart from thickness fluxes... More...
 

Additional Inherited Members

- Static Public Member Functions inherited from SurfaceFlux
static SurfaceFluxparse (const char *a_prefix)
 assemble a SurfaceFlux* object from ParmParse inputs More...
 

Detailed Description

Use a python function to evaluate the surface flux.

The user needs to provide a python function foo that takes x,y,thickness,topography as args, plus some kwargs and returns a single scalar (the flux)

def foo(x,y,t,thickness,topography,*kwargs):
...
return flux

Run-time configuration is carried out in SurfaceFlux::parse. If the string A.B.C.type = pythonFlux is found, then the expected form is:

Keywords supported are: gl_proximity, gl_proximity_scale. In each case, BISICLES supplies a known value, serived from the ice sheet state, if a known keyword is supplied

Constructor & Destructor Documentation

◆ PythonSurfaceFlux()

PythonInterface::PythonSurfaceFlux::PythonSurfaceFlux ( const std::string &  a_pyModule,
const std::string &  a_pyFunc,
std::map< std::string, Real > &  a_kwarg 
)

Construct a PythonSurfaceFlux from module, function, and kwargs list.

Parameters
a_pyModulethe python module name
a_pyFuncthe python function name
a_kwarga list of kwarg names

References PythonInterface::InitializePythonFunction(), PythonInterface::InitializePythonModule(), and PythonSurfaceFlux().

Referenced by PythonSurfaceFlux().

◆ ~PythonSurfaceFlux()

PythonInterface::PythonSurfaceFlux::~PythonSurfaceFlux ( )
virtual

Member Function Documentation

◆ new_surfaceFlux()

SurfaceFlux * PythonInterface::PythonSurfaceFlux::new_surfaceFlux ( )
virtual

factory method: return a pointer to a new SurfaceFlux object

Implements SurfaceFlux.

Referenced by SurfaceFlux::parse().

◆ surfaceThicknessFlux()

void PythonInterface::PythonSurfaceFlux::surfaceThicknessFlux ( LevelData< FArrayBox > &  a_flux,
const AmrIceBase a_amrIce,
int  a_level,
Real  a_dt 
)
virtual

define source term for thickness evolution and place it in flux

Parameters
a_fluxoutput flux data
a_amrIcereference to the ice sheet state
a_levelmesh level of a_flux
a_dtcurrent timestep

a_dt is included in case one needs integrals or averages over a timestep. flux should be defined in meters per year in the current implementation.

Implements SurfaceFlux.

References PythonInterface::FillKwargs(), AmrIceBase::geometry(), PythonInterface::PythonEval(), and AmrIceBase::time().


The documentation for this class was generated from the following files: