15 #ifndef _REALFUNCTION_H_ 16 #define _REALFUNCTION_H_ 18 #include "NamespaceHeader.H" 53 if ((a_loc >= m_loBound) && (a_loc <= m_hiBound))
73 RealVect relativeLoc = a_loc - m_center;
74 if (relativeLoc.vectorLength() <= m_radius)
91 StepRealFunction(Real a_leftval, Real a_rightval, Real a_cutoff,
int a_dir) : m_leftval(a_leftval), m_rightval(a_rightval), m_cutoff(a_cutoff), m_dir(a_dir)
93 Real
operator()(
const RealVect& x){
return ( (x[m_dir]<m_cutoff)?m_leftval:m_rightval);}
107 return m_originValue + (m_gradient * x).sum();
119 : m_origin(a_origin),m_slope(a_slope)
125 D_TERM(x[0]*m_slope[0],+x[1]*m_slope[1],+x[2]*m_slope[2]);
141 const RealVect& a_loBound,
142 const RealVect& a_hiBound)
143 : m_origin(a_origin),m_slope(a_slope),m_loBound(a_loBound), m_hiBound(a_hiBound)
149 if ((x >= m_loBound) && (x <= m_hiBound))
152 D_TERM(x[0]*m_slope[0],+x[1]*m_slope[1],+x[2]*m_slope[2]);
163 RealVect m_symmetryPoint;
166 const RealVect& a_symmetryPoint)
167 : m_origin(a_origin),m_slope(a_slope), m_symmetryPoint(a_symmetryPoint)
173 local_x -= m_symmetryPoint;
174 D_TERM(local_x[0] = abs(local_x[0]);,
175 local_x[1] = abs(local_x[1]);,
176 local_x[2] = abs(local_x[2]);)
179 D_TERM(local_x[0]*m_slope[0],+x[1]*m_slope[1],+x[2]*m_slope[2]);
195 GaussianFunction(RealVect a_center,
const RealVect& a_radius, Real a_mag, Real a_offset=0.0)
196 : m_center(a_center),m_radius(a_radius), m_mag(a_mag), m_offset(a_offset)
204 Real radSqr = D_TERM(loc[0]*loc[0],+loc[1]*loc[1],+loc[2]*loc[2]);
206 Real r = m_mag*exp(-radSqr) + m_offset;
222 : m_center(a_center),m_radius(a_radius), m_mag(a_mag)
230 Real radSqr = loc[0]*loc[0];
232 Real r = m_mag*exp(-radSqr);
249 Vector<Real> m_flowlineF;
258 hid_t file_access = 0;
260 file_access = H5Pcreate (H5P_FILE_ACCESS);
261 H5Pset_fapl_mpio(file_access, Chombo_MPI::comm, MPI_INFO_NULL);
263 file_access = H5P_DEFAULT;
266 hid_t file_id = H5Fopen(a_file.c_str(), H5F_ACC_RDONLY, file_access);
268 hid_t dset_id = H5Dopen(file_id, a_set.c_str());
270 hid_t dset_id = H5Dopen2(file_id, a_set.c_str(),
273 hid_t space_id = H5Dget_space(dset_id);
274 CH_assert( H5Sis_simple(space_id) > 0);
275 CH_assert( H5Sget_simple_extent_ndims(space_id) == 1);
277 status = H5Sget_simple_extent_dims(space_id,&n,&nmax);
279 m_flowlineF.resize(n);
280 status = H5Dread(dset_id, H5T_NATIVE_DOUBLE, H5S_ALL, H5S_ALL, H5P_DEFAULT,&m_flowlineF[0]);
281 CH_assert(status == 0);
283 MPI_Barrier(Chombo_MPI::comm);
285 status = H5Dclose(dset_id);CH_assert(status == 0);
286 status = H5Sclose(space_id);CH_assert(status == 0);
287 status = H5Fclose(file_id);CH_assert(status == 0);
289 MayDay::Error(
"ExtrudedPieceWiseLinearFlowline(std::string a_file, std::string a_set, Real a_dx) requires CH_USE_HDF5");
295 Real x = abs(a_x[0]);
296 int i = int( x / m_dx);
298 if (i + 1 < m_flowlineF.size())
300 Real w = (x-(0.5+Real(i))*m_dx)/m_dx;
301 return m_flowlineF[i]*(1.0-w) + m_flowlineF[i+1]*w;
305 return m_flowlineF[m_flowlineF.size()-1];
315 #include "NamespaceFooter.H" Real operator()(const RealVect &x)
Definition: RealFunction.H:146
Definition: RealFunction.H:98
StepRealFunction(Real a_leftval, Real a_rightval, Real a_cutoff, int a_dir)
Definition: RealFunction.H:91
CompactSupportInclinedPlaneFunction(Real a_origin, const RealVect &a_slope, const RealVect &a_loBound, const RealVect &a_hiBound)
Definition: RealFunction.H:140
CompactSupportConstantRealFunction(Real a_value, RealVect a_loBound, RealVect a_hiBound)
Definition: RealFunction.H:48
GaussianFunctionX(Real a_center, const Real &a_radius, Real a_mag)
Definition: RealFunction.H:221
Real operator()(const RealVect &x)
Definition: RealFunction.H:199
virtual Real operator()(const T &)=0
Definition: RealFunction.H:188
Definition: RealFunction.H:84
Real operator()(const RealVect &a_loc)
Definition: RealFunction.H:70
SymmetricInclinedPlaneFunction(Real a_origin, const RealVect &a_slope, const RealVect &a_symmetryPoint)
Definition: RealFunction.H:165
CircularSupportConstantRealFunction(Real a_value, RealVect a_center, Real a_radius)
Definition: RealFunction.H:68
Real operator()(const RealVect &x)
Definition: RealFunction.H:170
Definition: RealFunction.H:113
Real operator()(const RealVect &a_loc)
Definition: RealFunction.H:50
Definition: RealFunction.H:42
Definition: RealFunction.H:159
Real operator()(const T &)
Definition: RealFunction.H:38
Real operator()(const RealVect &x)
Definition: RealFunction.H:225
Real operator()(const RealVect &x)
Definition: RealFunction.H:122
1D Gaussian hump
Definition: RealFunction.H:215
Definition: RealFunction.H:246
Definition: RealFunction.H:62
virtual ~RealFunction()
Definition: RealFunction.H:25
Definition: RealFunction.H:32
Real operator()(const RealVect &x)
Definition: RealFunction.H:105
GaussianFunction(RealVect a_center, const RealVect &a_radius, Real a_mag, Real a_offset=0.0)
Definition: RealFunction.H:195
Real operator()(const RealVect &a_x)
Definition: RealFunction.H:293
ConstantRealFunction(Real a_value)
Definition: RealFunction.H:36
ExtrudedPieceWiseLinearFlowline(std::string a_file, std::string a_set, Real a_dx)
Definition: RealFunction.H:253
Real operator()(const RealVect &x)
Definition: RealFunction.H:93
Definition: RealFunction.H:133
Definition: RealFunction.H:22
InclinedPlaneFunction(Real a_origin, const RealVect &a_slope)
Definition: RealFunction.H:118