35 #ifndef AIMS_PRIMALSKETCH_DIFFUSIONSMOOTHER_H 36 #define AIMS_PRIMALSKETCH_DIFFUSIONSMOOTHER_H 52 void check(
int maxiter);
55 if (Delta_t<=0.25)
_dt=Delta_t;
57 std::cerr <<
"Diffusion Smoother : dt must be <= 0.25" 58 << std::endl; exit(EXIT_FAILURE);
62 int maxiter,
bool verbose=
false) = 0;
82 _hasConstantSources( false ) {}
87 int maxiter,
bool verbose=
false);
88 void setConstantSources(
const AimsData<T> &,
const T & background );
89 void removeConstantSources();
93 bool _hasConstantSources;
94 T _constantSourcesBackground;
108 int maxiter,
bool verbose=
false) = 0;
112 _background = background;
123 template<
typename T,
typename N=std::vector<Po
int3df> >
133 int maxiter,
bool verbose=
false);
152 _has_neumann_condition(false) {}
157 int maxiter,
bool verbose=
false);
158 void add_neumann_condition(
const Point3df &p);
164 bool _has_neumann_condition;
165 std::vector<Point3df> _neumann_conditions;
190 int maxiter,
bool verbose=
false);
192 _neumann_value = value;
198 short _neumann_value;
static AimsData< float > laplacian
DiffusionSmoother(float delta_t)
BucketMap< Void > * mask(const BucketMap< Void > &src, const BucketMap< Void > &m, bool intersect=true)
void set_neumann_value(short value)
static AimsData< float > init_laplacian(void)
Heat diffusion with a volume of given datasource (Dirichlet conditions)
virtual AimsData< T > doSmoothing(const AimsData< T > &ima, int maxiter, bool verbose=false)=0
BaseDiffusionSmoother(float delta_t)
BaseMaskedDiffusionSmoother(float delta_t, bool safe=true)
~BaseMaskedDiffusionSmoother()
Base class for Heat diffusion.
MaskedDiffusionSmoother(float delta_t, bool safe=true)
MaskedDiffusionSmoother(float delta_t, bool safe=true)
void SetDt(float Delta_t)
void setMask(AimsData< short > *const mask, short background=0)
~MaskedDiffusionSmoother()
MaskedDiffusionSmoother(float delta_t, bool safe=true)
AimsData< short > * _mask
~MaskedDiffusionSmoother()
~MaskedDiffusionSmoother()