30 #ifndef OOMPH_MACROELEMENT_HEADER 31 #define OOMPH_MACROELEMENT_HEADER 36 #include <oomph-lib-config.h> 95 throw OomphLibError(
"Don't call empty constructor for MacroElement!",
96 OOMPH_CURRENT_FUNCTION,
97 OOMPH_EXCEPTION_LOCATION);
124 void output(std::ostream &outfile,
const int& nplot)
133 virtual void output(
const unsigned &
t, std::ostream &outfile,
134 const unsigned& nplot)=0;
154 const unsigned& nplot)=0;
165 std::ostringstream error_message;
166 error_message <<
"assemble_macro_to_eulerian_jacobian(...) not \n" 167 <<
"implemented for this element\n" << std::endl;
170 OOMPH_CURRENT_FUNCTION,
171 OOMPH_EXCEPTION_LOCATION);
183 std::ostringstream error_message;
184 error_message <<
"assemble_macro_to_eulerian_jacobian2(...) not \n" 185 <<
"implemented for this element\n" << std::endl;
188 OOMPH_CURRENT_FUNCTION,
189 OOMPH_EXCEPTION_LOCATION);
289 throw OomphLibError(
"Don't call empty constructor for QMacroElement!",
290 OOMPH_CURRENT_FUNCTION,
291 OOMPH_EXCEPTION_LOCATION);
312 void output(
const unsigned&
t, std::ostream &outfile,
const unsigned& nplot)
315 outfile <<
"ZONE I=" << nplot <<
", J=" << nplot << std::endl;
316 for (
unsigned i=0;
i<nplot;
i++)
318 x[1]=-1.0+2.0*double(
i)/double(nplot-1);
319 for (
unsigned j=0;j<nplot;j++)
321 x[0]=-1.0+2.0*double(j)/double(nplot-1);
323 outfile << f[0] <<
" " << f[1] << std::endl;
331 const unsigned& nplot);
389 throw OomphLibError(
"Don't call empty constructor for QMacroElement!",
390 OOMPH_CURRENT_FUNCTION,
391 OOMPH_EXCEPTION_LOCATION);
413 void output(
const unsigned&
t, std::ostream &outfile,
const unsigned& nplot)
418 outfile <<
"ZONE I=" << nplot <<
", J=" 419 << nplot <<
", k=" << nplot << std::endl;
420 for (
unsigned i=0;
i<nplot;
i++)
422 x[2]=-1.0+2.0*double(
i)/double(nplot-1);
424 for (
unsigned j=0;j<nplot;j++)
426 x[1]=-1.0+2.0*double(j)/double(nplot-1);
428 for (
unsigned k=0;k<nplot;k++)
430 x[0]=-1.0+2.0*double(k)/double(nplot-1);
434 outfile << f[0] <<
" " << f[1]<<
" " << f[2] << std::endl;
444 const unsigned& nplot);
void broken_copy(const std::string &class_name)
Issue error message and terminate execution.
unsigned & macro_element_number()
Access function to the Macro_element_number.
void output(const unsigned &t, std::ostream &outfile, const unsigned &nplot)
Plot: x,y in tecplot format at time level t (t=0: current; t>0: previous)
QMacroElement()
Default constructor (empty and broken)
virtual void assemble_macro_to_eulerian_jacobian(const unsigned &t, const Vector< double > &s, DenseMatrix< double > &jacobian)
the jacobian of the mapping from the macro coordinates to the global coordinates
virtual void output_macro_element_boundaries(std::ostream &outfile, const unsigned &nplot)=0
Output all macro element boundaries as tecplot zones.
QMacroElement(Domain *domain_pt, const unsigned ¯o_element_number)
Constructor: Pass the pointer to the domain and the macro element's number within this domain...
virtual ~MacroElement()
Empty destructor.
QMacroElement(const QMacroElement &dummy)
Broken copy constructor.
void operator=(const QMacroElement &)
Broken assignment operator.
virtual ~QMacroElement()
Empty destructor.
Domain *& domain_pt()
Access function to the Domain_pt.
Domain * Domain_pt
Pointer to domain.
void assemble_macro_to_eulerian_jacobian(const Vector< double > &s, DenseMatrix< double > &jacobian)
Assembles the jacobian of the mapping from the macro coordinates to the global coordinates.
virtual ~QMacroElement()
Empty destructor.
void macro_map(const Vector< double > &s, Vector< double > &r)
The mapping from local to global coordinates at the current time : r(s)
QMacroElement(Domain *domain_pt, const unsigned ¯o_element_number)
Constructor: Pass the pointer to the domain and the macro element's number within this domain...
virtual void assemble_macro_to_eulerian_jacobian2(const unsigned &t, const Vector< double > &s, DenseMatrix< double > &jacobian2)
Assembles the second derivative jacobian of the mapping from the macro coordinates to the global coor...
void broken_assign(const std::string &class_name)
Issue error message and terminate execution.
void output(std::ostream &outfile, const int &nplot)
Plot: x,y (or x,y,z) at current time in tecplot format.
unsigned Macro_element_number
What is the number of the current macro element within its domain.
QMacroElement(const QMacroElement &dummy)
Broken copy constructor.
MacroElement()
Default constructor (empty and broken)
MacroElement(const MacroElement &dummy)
Broken copy constructor.
void operator=(const MacroElement &)
Broken assignment operator.
void assemble_macro_to_eulerian_jacobian2(const Vector< double > &s, DenseMatrix< double > &jacobian2)
Assembles the second derivative jacobian of the mapping from the macro coordinates to the global coor...
void operator=(const QMacroElement &)
Broken assignment operator.
MacroElement(Domain *domain_pt, const unsigned ¯o_element_number)
Constructor: Pass pointer to Domain and the number of the MacroElement within that Domain...
Base class for Domains with curvilinear and/or time-dependent boundaries. Domain boundaries are typic...
void output(const unsigned &t, std::ostream &outfile, const unsigned &nplot)
Plot: x,y in tecplot format at time level t (t=0: current; t>0: previous)
QMacroElement()
Default constructor (empty and broken)