1 #ifndef __cahn_hilliard_massout_h 2 #define __cahn_hilliard_massout_h 4 #include <deal.II/algorithms/any_data.h> 5 #include <deal.II/algorithms/operator.h> 6 #include <deal.II/base/config.h> 7 #include <deal.II/base/event.h> 8 #include <deal.II/base/parameter_handler.h> 9 #include <deal.II/base/timer.h> 10 #include <deal.II/dofs/dof_handler.h> 11 #include <deal.II/numerics/data_out.h> 12 #include <deal.II/numerics/solution_transfer.h> 14 #include <amandus/adaptivity.h> 21 template <
class VECTOR,
int dim,
int spacedim = dim>
26 const unsigned int digits = 3);
28 void parse_parameters(ParameterHandler& param);
29 void initialize(
const DoFHandler<dim, spacedim>& dof_handler);
33 this->remesher = remesher;
36 void assemble_mean_operator();
37 void log_mass(
const VECTOR* solution);
38 void write_output(
const AnyData& vectors);
40 virtual OutputOperator<VECTOR>& operator<<(
const AnyData& vectors);
56 template <
class VECTOR,
int dim,
int spacedim>
63 template <
class VECTOR,
int dim,
int spacedim>
65 const unsigned int digits)
66 : filename_base(filename_base)
69 out.set_default_format(DataOutBase::gnuplot);
72 template <
class VECTOR,
int dim,
int spacedim>
76 out.parse_parameters(param);
79 template <
class VECTOR,
int dim,
int spacedim>
83 ConstraintMatrix hanging_node_constraints;
84 DoFTools::make_hanging_node_constraints(*(this->
dof), hanging_node_constraints);
85 hanging_node_constraints.close();
87 MeshWorker::IntegrationInfoBox<dim> info_box;
88 UpdateFlags update_flags = update_values;
89 info_box.add_update_flags_cell(update_flags);
91 this->
dof->get_fe(), StaticMappingQ1<dim, spacedim>::mapping, &(this->
dof->block_info()));
93 MeshWorker::DoFInfo<dim> dofinfo(this->
dof->block_info());
99 MeshWorker::Assembler::ResidualSimple<Vector<double>> assembler;
100 assembler.initialize(hanging_node_constraints);
101 assembler.initialize(out);
105 MeshWorker::integration_loop<dim, dim>(
106 this->
dof->begin_active(), this->
dof->end(), dofinfo, info_box, integrator, assembler);
108 const FiniteElement<dim>& fe_sys = this->
dof->get_fe();
109 ComponentMask cmask(fe_sys.n_components(),
false);
112 DoFTools::extract_dofs(*(this->
dof), cmask,
cdofmask);
115 template <
class VECTOR,
int dim,
int spacedim>
120 for (
unsigned int i = 0; i < this->
cdofmask.size(); ++i)
127 deallog <<
"Mass(" << this->step <<
"): " << mass << std::endl;
130 template <
class VECTOR,
int dim,
int spacedim>
134 Assert((
dof != 0), ExcNotInitialized());
135 out.attach_dof_handler(*
dof);
136 for (
unsigned int i = 0; i < data.size(); ++i)
138 const VECTOR* p = data.try_read_ptr<VECTOR>(i);
141 out.add_data_vector(*p, data.name(i));
144 std::ostringstream streamOut;
146 <<
out.default_suffix();
147 std::ofstream out_filename(streamOut.str().c_str());
149 out.write(out_filename);
153 template <
class VECTOR,
int dim,
int spacedim>
157 deallog <<
"Time(" << this->step <<
"): " <<
timer.wall_time() << std::endl;
165 log_mass(data.try_read_ptr<VECTOR>(0));
168 this->
remesher->operator()(
const_cast<AnyData&
>(data), AnyData());
void initialize(Remesher< VECTOR, dim > *remesher)
Definition: massout.h:31
Vector< double > mean_values
Definition: massout.h:43
DataOut< dim > out
Definition: massout.h:51
void assemble_mean_operator()
Definition: massout.h:81
const unsigned int digits
Definition: massout.h:49
const std::string filename_base
Definition: massout.h:48
virtual OutputOperator< VECTOR > & operator<<(const AnyData &vectors)
Definition: massout.h:154
Remesher< VECTOR, dim > * remesher
Definition: massout.h:46
void log_mass(const VECTOR *solution)
Definition: massout.h:117
void write_output(const AnyData &vectors)
Definition: massout.h:132
SmartPointer< const DoFHandler< dim, spacedim >, MassOutputOperator< VECTOR, dim, spacedim > > dof
Definition: massout.h:45
MassOutputOperator(const std::string filename_base=std::string("output"), const unsigned int digits=3)
Definition: massout.h:64
Timer timer
Definition: massout.h:53
void initialize(const DoFHandler< dim, spacedim > &dof_handler)
Definition: massout.h:58
Definition: integrator.h:599
Base class for remeshing operators.
Definition: adaptivity.h:26
void parse_parameters(ParameterHandler ¶m)
Definition: massout.h:74
std::vector< bool > cdofmask
Definition: massout.h:44