13 #ifndef _COMPLEXSURFACEFLUX_H_ 14 #define _COMPLEXSURFACEFLUX_H_ 16 #include "LevelData.H" 17 #include "FArrayBox.H" 19 #include "NamespaceHeader.H" 37 int a_level, Real a_dt);
42 const int* a_boxlo,
const int* a_boxhi,
43 const Real* a_dew,
const Real* a_dns,
44 const IntVect& a_offset,
45 const IntVect& a_nGhost,
46 const ProblemDomain& a_domain,
87 MayDay::Error(
"invalid operator");
93 MayDay::Error(
"invalid operator");
121 int a_level, Real a_dt);
133 MayDay::Error(
"invalid operator");
139 MayDay::Error(
"invalid operator");
144 MayDay::Error(
"invalid operator");
183 int a_level, Real a_dt);
196 MayDay::Error(
"invalid operator");
202 MayDay::Error(
"invalid operator");
207 MayDay::Error(
"invalid operator");
228 Real m_startTime, m_endTime;
232 (
const RealVect& a_lo,
233 const RealVect& a_hi,
234 const Real& a_startTime,
235 const Real& a_endTime,
237 : m_lo(a_lo),m_hi(a_hi),m_startTime(a_startTime),m_endTime(a_endTime)
242 pout() <<
"!(m_hi > m_lo), m_lo = " << m_lo <<
" m_hi = " << m_hi << endl;
243 CH_assert( (m_hi > m_lo) );
244 MayDay::Error(
"BoxBoundedFlux:: !(m_hi > m_lo)");
256 int a_level, Real a_dt);
262 MayDay::Error(
"invalid operator");
268 MayDay::Error(
"invalid operator");
273 MayDay::Error(
"invalid operator");
313 int a_level, Real a_dt);
318 void operator=(
const AxbyFlux& a_input)
320 MayDay::Error(
"invalid operator");
326 MayDay::Error(
"invalid operator");
331 MayDay::Error(
"invalid operator");
351 Vector<SurfaceFlux*> m_fluxes;
362 int a_level, Real a_dt);
368 MayDay::Error(
"invalid operator");
374 MayDay::Error(
"invalid operator");
379 MayDay::Error(
"invalid operator");
418 const Vector<Real>& a_ordinates,
419 const Real a_minWaterDepth = -1.0);
427 int a_level, Real a_dt);
439 MayDay::Error(
"invalid operator");
445 MayDay::Error(
"invalid operator");
450 MayDay::Error(
"invalid operator");
489 int a_level, Real a_dt);
496 MayDay::Error(
"invalid operator");
502 MayDay::Error(
"invalid operator");
507 MayDay::Error(
"invalid operator");
551 class FloatingDivUHLocalizedFlux :
public SurfaceFlux 563 FloatingDivUHLocalizedFlux(
SurfaceFlux* a_flux,
const Real& a_mesh_spacing);
565 virtual ~FloatingDivUHLocalizedFlux();
571 int a_level, Real a_dt);
576 void operator=(
const FloatingDivUHLocalizedFlux& a_input)
578 MayDay::Error(
"invalid operator");
582 FloatingDivUHLocalizedFlux(
const FloatingDivUHLocalizedFlux& a_input)
584 MayDay::Error(
"invalid operator");
587 FloatingDivUHLocalizedFlux()
589 MayDay::Error(
"invalid operator");
622 TargetThicknessFlux(
SurfaceFlux* a_target,
const Real& a_timescale);
624 virtual ~TargetThicknessFlux();
630 int a_level, Real a_dt);
635 void operator=(
const TargetThicknessFlux& a_input)
637 MayDay::Error(
"invalid operator");
641 TargetThicknessFlux(
const TargetThicknessFlux& a_input)
643 MayDay::Error(
"invalid operator");
646 TargetThicknessFlux()
648 MayDay::Error(
"invalid operator");
655 #include "NamespaceFooter.H" 656 #endif // multiple-include preventer RefCountedPtr< LevelData< FArrayBox > > m_inputFluxLDF
distributed version of flux
Definition: ComplexSurfaceFlux.H:79
Applies a flux inside a box and (optionally inside a time interval) and zero outside.
Definition: ComplexSurfaceFlux.H:225
class which multiplies two surface fluxes together
Definition: ComplexSurfaceFlux.H:108
FArrayBox m_inputFlux
Definition: ComplexSurfaceFlux.H:64
Provide the flux a*x + b*y, where x,y are fluxes and a,b are scalars.
Definition: ComplexSurfaceFlux.H:290
IntVect m_fluxGhost
Definition: ComplexSurfaceFlux.H:55
~PiecewiseLinearFlux()
Definition: ComplexSurfaceFlux.H:421
virtual ~fortranInterfaceFlux()
Definition: ComplexSurfaceFlux.H:31
virtual SurfaceFlux * new_surfaceFlux()
factory method
Definition: ComplexSurfaceFlux.cpp:311
virtual ~MaskedFlux()
Definition: ComplexSurfaceFlux.H:177
class which takes an input fortran array
Definition: ComplexSurfaceFlux.H:25
fortranInterfaceFlux()
class which takes an input fortran array
Definition: ComplexSurfaceFlux.cpp:302
ProblemDomain m_domain
Definition: ComplexSurfaceFlux.H:58
Applies a different surface flux depending on the mask.
Definition: ComplexSurfaceFlux.H:163
SurfaceFlux * m_groundedIceFlux
Definition: ComplexSurfaceFlux.H:187
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
Definition: ComplexSurfaceFlux.cpp:356
DisjointBoxLayout m_grids
Definition: ComplexSurfaceFlux.H:59
SurfaceFlux * m_floatingIceFlux
Definition: ComplexSurfaceFlux.H:188
SurfaceFlux * m_openSeaFlux
Definition: ComplexSurfaceFlux.H:189
Adds together a list of fluxes.
Definition: ComplexSurfaceFlux.H:348
abstract class defining the surface flux interface
Definition: SurfaceFlux.H:39
SurfaceFlux * m_openLandFlux
Definition: ComplexSurfaceFlux.H:190
Real m_minWaterDepth
Definition: ComplexSurfaceFlux.H:433
virtual SurfaceFlux * new_surfaceFlux()=0
factory method: return a pointer to a new SurfaceFlux object
bool m_verbose
Definition: ComplexSurfaceFlux.H:56
SurfaceFlux * m_flux1
Definition: ComplexSurfaceFlux.H:125
RealVect m_inputFluxDx
Definition: ComplexSurfaceFlux.H:76
SurfaceFlux * m_flux2
Definition: ComplexSurfaceFlux.H:126
FArrayBox m_ccInputFlux
cell-centered input flux
Definition: ComplexSurfaceFlux.H:74
NormalizedFlux NormalizedData
Definition: ComplexSurfaceFlux.H:513
Vector< Real > m_abscissae
Definition: ComplexSurfaceFlux.H:431
bool m_gridsSet
Definition: ComplexSurfaceFlux.H:60
abstract base class for amr ice sheet models (AmrIce, AMRIceControl)
Definition: AmrIceBase.H:21
SurfaceFlux which has a piecewise linear dependence on ice thickness.
Definition: ComplexSurfaceFlux.H:408
virtual ~BoxBoundedFlux()
destructor
Definition: ComplexSurfaceFlux.H:250
Normalizes any flux so that the integrated flux has a specified value.
Definition: ComplexSurfaceFlux.H:469
Vector< Real > m_ordinates
Definition: ComplexSurfaceFlux.H:432
bool m_isValSet
Definition: ComplexSurfaceFlux.H:81
bool m_nodalFlux
true if inputFlux is nodeal
Definition: ComplexSurfaceFlux.H:66
bool gridsSet() const
has setGrids been called?
Definition: ComplexSurfaceFlux.H:51
void setFluxVal(Real *a_data_ptr, const int *a_dimInfo, const int *a_boxlo, const int *a_boxhi, const Real *a_dew, const Real *a_dns, const IntVect &a_offset, const IntVect &a_nGhost, const ProblemDomain &a_domain, const bool a_nodal)
set fortran array-valued surface flux
Definition: ComplexSurfaceFlux.cpp:400