ERF
Energy Research and Forecasting: An Atmospheric Modeling Code
IntersectionCIF< F1, F2 > Class Template Reference

#include <ERF_EBIF.H>

Collaboration diagram for IntersectionCIF< F1, F2 >:

Public Member Functions

 IntersectionCIF (const F1 &f1, const F2 &f2)
 
 ~IntersectionCIF ()=default
 
 IntersectionCIF (const IntersectionCIF &rhs)=default
 
 IntersectionCIF (IntersectionCIF &&rhs) noexcept=default
 
IntersectionCIFoperator= (const IntersectionCIF &rhs)=default
 
IntersectionCIFoperator= (IntersectionCIF &&rhs) noexcept=default
 
bool is_active () const
 
amrex::Real operator() (const amrex::RealArray &p) const
 

Private Attributes

F1 m_f1
 
F2 m_f2
 
bool f1_active
 
bool f2_active
 

Constructor & Destructor Documentation

◆ IntersectionCIF() [1/3]

template<class F1 , class F2 >
IntersectionCIF< F1, F2 >::IntersectionCIF ( const F1 &  f1,
const F2 &  f2 
)
inline
176  : m_f1(f1)
177  , m_f2(f2)
178  , f1_active(f1.is_acive())
179  , f2_active(f2.is_active())
180  {
181  AMREX_ALWAYS_ASSERT_WITH_MESSAGE(f1.is_active() || f2.is_active(),
182  "You must specify at least one active implicit function.");
183  }
F1 m_f1
Definition: ERF_EBIF.H:210
bool f2_active
Definition: ERF_EBIF.H:213
bool f1_active
Definition: ERF_EBIF.H:212
F2 m_f2
Definition: ERF_EBIF.H:211

◆ ~IntersectionCIF()

template<class F1 , class F2 >
IntersectionCIF< F1, F2 >::~IntersectionCIF ( )
default

◆ IntersectionCIF() [2/3]

template<class F1 , class F2 >
IntersectionCIF< F1, F2 >::IntersectionCIF ( const IntersectionCIF< F1, F2 > &  rhs)
default

◆ IntersectionCIF() [3/3]

template<class F1 , class F2 >
IntersectionCIF< F1, F2 >::IntersectionCIF ( IntersectionCIF< F1, F2 > &&  rhs)
defaultnoexcept

Member Function Documentation

◆ is_active()

template<class F1 , class F2 >
bool IntersectionCIF< F1, F2 >::is_active ( ) const
inline
194  {
195  return true;
196  }

◆ operator()()

template<class F1 , class F2 >
amrex::Real IntersectionCIF< F1, F2 >::operator() ( const amrex::RealArray &  p) const
inline
199  {
200 
201  if(!f1_active)
202  return m_f2(p);
203  if(!f2_active)
204  return m_f1(p);
205 
206  return std::min(m_f1(p), m_f2(p));
207  }

◆ operator=() [1/2]

template<class F1 , class F2 >
IntersectionCIF& IntersectionCIF< F1, F2 >::operator= ( const IntersectionCIF< F1, F2 > &  rhs)
default

◆ operator=() [2/2]

template<class F1 , class F2 >
IntersectionCIF& IntersectionCIF< F1, F2 >::operator= ( IntersectionCIF< F1, F2 > &&  rhs)
defaultnoexcept

Member Data Documentation

◆ f1_active

template<class F1 , class F2 >
bool IntersectionCIF< F1, F2 >::f1_active
private

◆ f2_active

template<class F1 , class F2 >
bool IntersectionCIF< F1, F2 >::f2_active
private

◆ m_f1

template<class F1 , class F2 >
F1 IntersectionCIF< F1, F2 >::m_f1
private

◆ m_f2

template<class F1 , class F2 >
F2 IntersectionCIF< F1, F2 >::m_f2
private

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