oomph::StefanBoltzmannRadiationBase Class Reference

#include <temporary_stefan_boltzmann_elements.h>

+ Inheritance diagram for oomph::StefanBoltzmannRadiationBase:

Public Member Functions

 StefanBoltzmannRadiationBase ()
 Constructor. More...
 
double *& sigma_pt ()
 Pointer to non-dim Stefan Boltzmann constant. More...
 
double *& theta_0_pt ()
 Pointer to non-dim zero centrigrade offset in Stefan Boltzmann law. More...
 
double sigma ()
 Non-dim Stefan Boltzmann constant (switched off by default) More...
 
double theta_0 ()
 
double contribution_to_stefan_boltzmann_radiation (const Vector< double > &r_illuminated, const Vector< double > &n_illuminated, const Vector< unsigned > &visible_intpts_in_current_element)
 
double contribution_to_stefan_boltzmann_radiation (const Vector< double > &r_illuminated, const Vector< double > &n_illuminated, const Vector< unsigned > &visible_intpts_in_current_element, std::ofstream &outfile)
 
void wipe_stefan_boltzmann_illumination_info ()
 Wipe illumination info. More...
 
void add_stefan_boltzmann_illumination_info (const unsigned &ipt, StefanBoltzmannRadiationBase *illuminating_el_pt, Vector< unsigned > &illuminating_integration_point_index, const bool &add_solid_position_data=true)
 
void output_stefan_boltzmann_radiation (std::ostream &outfile)
 Output Stefan Boltzmann radiation: x,y,in,out,n_x,n_y. More...
 
void output_stefan_boltzmann_radiation_rays (std::ostream &outfile, const unsigned &integration_point=UINT_MAX)
 
double incoming_stefan_boltzmann_radiation (const unsigned &ipt, const Vector< double > &r_illuminated, const Vector< double > &n_illuminated)
 
- Public Member Functions inherited from oomph::FiniteElement
void set_dimension (const unsigned &dim)
 
void set_nodal_dimension (const unsigned &nodal_dim)
 
void set_nnodal_position_type (const unsigned &nposition_type)
 Set the number of types required to interpolate the coordinate. More...
 
void set_n_node (const unsigned &n)
 
int nodal_local_eqn (const unsigned &n, const unsigned &i) const
 
double dJ_eulerian_at_knot (const unsigned &ipt, Shape &psi, DenseMatrix< double > &djacobian_dX) const
 
 FiniteElement ()
 Constructor. More...
 
virtual ~FiniteElement ()
 
 FiniteElement (const FiniteElement &)=delete
 Broken copy constructor. More...
 
virtual bool local_coord_is_valid (const Vector< double > &s)
 Broken assignment operator. More...
 
virtual void move_local_coord_back_into_element (Vector< double > &s) const
 
void get_centre_of_gravity_and_max_radius_in_terms_of_zeta (Vector< double > &cog, double &max_radius) const
 
virtual void local_coordinate_of_node (const unsigned &j, Vector< double > &s) const
 
virtual void local_fraction_of_node (const unsigned &j, Vector< double > &s_fraction)
 
virtual double local_one_d_fraction_of_node (const unsigned &n1d, const unsigned &i)
 
virtual void set_macro_elem_pt (MacroElement *macro_elem_pt)
 
MacroElementmacro_elem_pt ()
 Access function to pointer to macro element. More...
 
void get_x (const Vector< double > &s, Vector< double > &x) const
 
void get_x (const unsigned &t, const Vector< double > &s, Vector< double > &x)
 
virtual void get_x_from_macro_element (const Vector< double > &s, Vector< double > &x) const
 
virtual void get_x_from_macro_element (const unsigned &t, const Vector< double > &s, Vector< double > &x)
 
virtual void set_integration_scheme (Integral *const &integral_pt)
 Set the spatial integration scheme. More...
 
Integral *const & integral_pt () const
 Return the pointer to the integration scheme (const version) More...
 
virtual void shape (const Vector< double > &s, Shape &psi) const =0
 
virtual void shape_at_knot (const unsigned &ipt, Shape &psi) const
 
virtual void dshape_local (const Vector< double > &s, Shape &psi, DShape &dpsids) const
 
virtual void dshape_local_at_knot (const unsigned &ipt, Shape &psi, DShape &dpsids) const
 
virtual void d2shape_local (const Vector< double > &s, Shape &psi, DShape &dpsids, DShape &d2psids) const
 
virtual void d2shape_local_at_knot (const unsigned &ipt, Shape &psi, DShape &dpsids, DShape &d2psids) const
 
void check_J_eulerian_at_knots (bool &passed) const
 
void check_jacobian (const double &jacobian) const
 
double dshape_eulerian (const Vector< double > &s, Shape &psi, DShape &dpsidx) const
 
virtual double dshape_eulerian_at_knot (const unsigned &ipt, Shape &psi, DShape &dpsidx) const
 
virtual double dshape_eulerian_at_knot (const unsigned &ipt, Shape &psi, DShape &dpsi, DenseMatrix< double > &djacobian_dX, RankFourTensor< double > &d_dpsidx_dX) const
 
double d2shape_eulerian (const Vector< double > &s, Shape &psi, DShape &dpsidx, DShape &d2psidx) const
 
virtual double d2shape_eulerian_at_knot (const unsigned &ipt, Shape &psi, DShape &dpsidx, DShape &d2psidx) const
 
virtual void assign_nodal_local_eqn_numbers (const bool &store_local_dof_pt)
 
virtual void describe_local_dofs (std::ostream &out, const std::string &current_string) const
 
virtual void describe_nodal_local_dofs (std::ostream &out, const std::string &current_string) const
 
virtual void assign_all_generic_local_eqn_numbers (const bool &store_local_dof_pt)
 
Node *& node_pt (const unsigned &n)
 Return a pointer to the local node n. More...
 
Node *const & node_pt (const unsigned &n) const
 Return a pointer to the local node n (const version) More...
 
unsigned nnode () const
 Return the number of nodes. More...
 
virtual unsigned nnode_1d () const
 
double raw_nodal_position (const unsigned &n, const unsigned &i) const
 
double raw_nodal_position (const unsigned &t, const unsigned &n, const unsigned &i) const
 
double raw_dnodal_position_dt (const unsigned &n, const unsigned &i) const
 
double raw_dnodal_position_dt (const unsigned &n, const unsigned &j, const unsigned &i) const
 
double raw_nodal_position_gen (const unsigned &n, const unsigned &k, const unsigned &i) const
 
double raw_nodal_position_gen (const unsigned &t, const unsigned &n, const unsigned &k, const unsigned &i) const
 
double raw_dnodal_position_gen_dt (const unsigned &n, const unsigned &k, const unsigned &i) const
 
double raw_dnodal_position_gen_dt (const unsigned &j, const unsigned &n, const unsigned &k, const unsigned &i) const
 
double nodal_position (const unsigned &n, const unsigned &i) const
 
double nodal_position (const unsigned &t, const unsigned &n, const unsigned &i) const
 
double dnodal_position_dt (const unsigned &n, const unsigned &i) const
 Return the i-th component of nodal velocity: dx/dt at local node n. More...
 
double dnodal_position_dt (const unsigned &n, const unsigned &j, const unsigned &i) const
 
double nodal_position_gen (const unsigned &n, const unsigned &k, const unsigned &i) const
 
double nodal_position_gen (const unsigned &t, const unsigned &n, const unsigned &k, const unsigned &i) const
 
double dnodal_position_gen_dt (const unsigned &n, const unsigned &k, const unsigned &i) const
 
double dnodal_position_gen_dt (const unsigned &j, const unsigned &n, const unsigned &k, const unsigned &i) const
 
virtual void get_dresidual_dnodal_coordinates (RankThreeTensor< double > &dresidual_dnodal_coordinates)
 
virtual void disable_ALE ()
 
virtual void enable_ALE ()
 
virtual unsigned required_nvalue (const unsigned &n) const
 
unsigned nnodal_position_type () const
 
bool has_hanging_nodes () const
 
unsigned nodal_dimension () const
 Return the required Eulerian dimension of the nodes in this element. More...
 
virtual unsigned nvertex_node () const
 
virtual Nodevertex_node_pt (const unsigned &j) const
 
virtual Nodeconstruct_node (const unsigned &n)
 
virtual Nodeconstruct_node (const unsigned &n, TimeStepper *const &time_stepper_pt)
 
virtual Nodeconstruct_boundary_node (const unsigned &n)
 
virtual Nodeconstruct_boundary_node (const unsigned &n, TimeStepper *const &time_stepper_pt)
 
int get_node_number (Node *const &node_pt) const
 
virtual Nodeget_node_at_local_coordinate (const Vector< double > &s) const
 
double raw_nodal_value (const unsigned &n, const unsigned &i) const
 
double raw_nodal_value (const unsigned &t, const unsigned &n, const unsigned &i) const
 
double nodal_value (const unsigned &n, const unsigned &i) const
 
double nodal_value (const unsigned &t, const unsigned &n, const unsigned &i) const
 
unsigned dim () const
 
virtual ElementGeometry::ElementGeometry element_geometry () const
 Return the geometry type of the element (either Q or T usually). More...
 
unsigned ngeom_data () const
 
Datageom_data_pt (const unsigned &j)
 
void position (const Vector< double > &zeta, Vector< double > &r) const
 
void position (const unsigned &t, const Vector< double > &zeta, Vector< double > &r) const
 
void dposition_dt (const Vector< double > &zeta, const unsigned &t, Vector< double > &drdt)
 
void interpolated_zeta (const Vector< double > &s, Vector< double > &zeta) const
 
void locate_zeta (const Vector< double > &zeta, GeomObject *&geom_object_pt, Vector< double > &s, const bool &use_coordinate_as_initial_guess=false)
 
virtual void node_update ()
 
virtual void identify_field_data_for_interactions (std::set< std::pair< Data *, unsigned >> &paired_field_data)
 
virtual void identify_geometric_data (std::set< Data * > &geometric_data_pt)
 
virtual double s_min () const
 Min value of local coordinate. More...
 
virtual double s_max () const
 Max. value of local coordinate. More...
 
double size () const
 
virtual double compute_physical_size () const
 
virtual void point_output_data (const Vector< double > &s, Vector< double > &data)
 
void point_output (std::ostream &outfile, const Vector< double > &s)
 
virtual unsigned nplot_points_paraview (const unsigned &nplot) const
 
virtual unsigned nsub_elements_paraview (const unsigned &nplot) const
 
void output_paraview (std::ofstream &file_out, const unsigned &nplot) const
 
virtual void write_paraview_output_offset_information (std::ofstream &file_out, const unsigned &nplot, unsigned &counter) const
 
virtual void write_paraview_type (std::ofstream &file_out, const unsigned &nplot) const
 
virtual void write_paraview_offsets (std::ofstream &file_out, const unsigned &nplot, unsigned &offset_sum) const
 
virtual unsigned nscalar_paraview () const
 
virtual void scalar_value_paraview (std::ofstream &file_out, const unsigned &i, const unsigned &nplot) const
 
virtual void scalar_value_fct_paraview (std::ofstream &file_out, const unsigned &i, const unsigned &nplot, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt) const
 
virtual void scalar_value_fct_paraview (std::ofstream &file_out, const unsigned &i, const unsigned &nplot, const double &time, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt) const
 
virtual std::string scalar_name_paraview (const unsigned &i) const
 
virtual void output (std::ostream &outfile)
 
virtual void output (std::ostream &outfile, const unsigned &n_plot)
 
virtual void output (const unsigned &t, std::ostream &outfile, const unsigned &n_plot) const
 
virtual void output (FILE *file_pt)
 
virtual void output (FILE *file_pt, const unsigned &n_plot)
 
virtual void output_fct (std::ostream &outfile, const unsigned &n_plot, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt)
 Output an exact solution over the element. More...
 
virtual void output_fct (std::ostream &outfile, const unsigned &n_plot, const double &time, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt)
 Output a time-dependent exact solution over the element. More...
 
virtual void output_fct (std::ostream &outfile, const unsigned &n_plot, const double &time, const SolutionFunctorBase &exact_soln) const
 Output a time-dependent exact solution over the element. More...
 
virtual void get_s_plot (const unsigned &i, const unsigned &nplot, Vector< double > &s, const bool &shifted_to_interior=false) const
 
virtual std::string tecplot_zone_string (const unsigned &nplot) const
 
virtual void write_tecplot_zone_footer (std::ostream &outfile, const unsigned &nplot) const
 
virtual void write_tecplot_zone_footer (FILE *file_pt, const unsigned &nplot) const
 
virtual unsigned nplot_points (const unsigned &nplot) const
 
virtual void compute_error (FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, double &error, double &norm)
 Calculate the norm of the error and that of the exact solution. More...
 
virtual void compute_error (FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, double &error, double &norm)
 Calculate the norm of the error and that of the exact solution. More...
 
virtual void compute_error (FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, Vector< double > &error, Vector< double > &norm)
 
virtual void compute_error (FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, Vector< double > &error, Vector< double > &norm)
 
virtual void compute_error (std::ostream &outfile, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, double &error, double &norm)
 
virtual void compute_error (std::ostream &outfile, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, double &error, double &norm)
 
virtual void compute_error (std::ostream &outfile, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, Vector< double > &error, Vector< double > &norm)
 
virtual void compute_error (std::ostream &outfile, FiniteElement::UnsteadyExactSolutionFctPt exact_soln_pt, const double &time, Vector< double > &error, Vector< double > &norm)
 
virtual void compute_abs_error (std::ostream &outfile, FiniteElement::SteadyExactSolutionFctPt exact_soln_pt, double &error)
 
void integrate_fct (FiniteElement::SteadyExactSolutionFctPt integrand_fct_pt, Vector< double > &integral)
 Integrate Vector-valued function over element. More...
 
void integrate_fct (FiniteElement::UnsteadyExactSolutionFctPt integrand_fct_pt, const double &time, Vector< double > &integral)
 Integrate Vector-valued time-dep function over element. More...
 
virtual void build_face_element (const int &face_index, FaceElement *face_element_pt)
 
virtual unsigned self_test ()
 
virtual unsigned get_bulk_node_number (const int &face_index, const unsigned &i) const
 
virtual int face_outer_unit_normal_sign (const int &face_index) const
 Get the sign of the outer unit normal on the face given by face_index. More...
 
virtual unsigned nnode_on_face () const
 
void face_node_number_error_check (const unsigned &i) const
 Range check for face node numbers. More...
 
virtual CoordinateMappingFctPt face_to_bulk_coordinate_fct_pt (const int &face_index) const
 
virtual BulkCoordinateDerivativesFctPt bulk_coordinate_derivatives_fct_pt (const int &face_index) const
 
- Public Member Functions inherited from oomph::GeneralisedElement
 GeneralisedElement ()
 Constructor: Initialise all pointers and all values to zero. More...
 
virtual ~GeneralisedElement ()
 Virtual destructor to clean up any memory allocated by the object. More...
 
 GeneralisedElement (const GeneralisedElement &)=delete
 Broken copy constructor. More...
 
void operator= (const GeneralisedElement &)=delete
 Broken assignment operator. More...
 
Data *& internal_data_pt (const unsigned &i)
 Return a pointer to i-th internal data object. More...
 
Data *const & internal_data_pt (const unsigned &i) const
 Return a pointer to i-th internal data object (const version) More...
 
Data *& external_data_pt (const unsigned &i)
 Return a pointer to i-th external data object. More...
 
Data *const & external_data_pt (const unsigned &i) const
 Return a pointer to i-th external data object (const version) More...
 
unsigned long eqn_number (const unsigned &ieqn_local) const
 
int local_eqn_number (const unsigned long &ieqn_global) const
 
unsigned add_external_data (Data *const &data_pt, const bool &fd=true)
 
bool external_data_fd (const unsigned &i) const
 
void exclude_external_data_fd (const unsigned &i)
 
void include_external_data_fd (const unsigned &i)
 
void flush_external_data ()
 Flush all external data. More...
 
void flush_external_data (Data *const &data_pt)
 Flush the object addressed by data_pt from the external data array. More...
 
unsigned ninternal_data () const
 Return the number of internal data objects. More...
 
unsigned nexternal_data () const
 Return the number of external data objects. More...
 
unsigned ndof () const
 Return the number of equations/dofs in the element. More...
 
void dof_vector (const unsigned &t, Vector< double > &dof)
 Return the vector of dof values at time level t. More...
 
void dof_pt_vector (Vector< double * > &dof_pt)
 Return the vector of pointers to dof values. More...
 
void set_internal_data_time_stepper (const unsigned &i, TimeStepper *const &time_stepper_pt, const bool &preserve_existing_data)
 
void assign_internal_eqn_numbers (unsigned long &global_number, Vector< double * > &Dof_pt)
 
void describe_dofs (std::ostream &out, const std::string &current_string) const
 
void add_internal_value_pt_to_map (std::map< unsigned, double * > &map_of_value_pt)
 
virtual void assign_local_eqn_numbers (const bool &store_local_dof_pt)
 
virtual void complete_setup_of_dependencies ()
 
virtual void get_residuals (Vector< double > &residuals)
 
virtual void get_jacobian (Vector< double > &residuals, DenseMatrix< double > &jacobian)
 
virtual void get_mass_matrix (Vector< double > &residuals, DenseMatrix< double > &mass_matrix)
 
virtual void get_jacobian_and_mass_matrix (Vector< double > &residuals, DenseMatrix< double > &jacobian, DenseMatrix< double > &mass_matrix)
 
virtual void get_dresiduals_dparameter (double *const &parameter_pt, Vector< double > &dres_dparam)
 
virtual void get_djacobian_dparameter (double *const &parameter_pt, Vector< double > &dres_dparam, DenseMatrix< double > &djac_dparam)
 
virtual void get_djacobian_and_dmass_matrix_dparameter (double *const &parameter_pt, Vector< double > &dres_dparam, DenseMatrix< double > &djac_dparam, DenseMatrix< double > &dmass_matrix_dparam)
 
virtual void get_hessian_vector_products (Vector< double > const &Y, DenseMatrix< double > const &C, DenseMatrix< double > &product)
 
virtual void get_inner_products (Vector< std::pair< unsigned, unsigned >> const &history_index, Vector< double > &inner_product)
 
virtual void get_inner_product_vectors (Vector< unsigned > const &history_index, Vector< Vector< double >> &inner_product_vector)
 
virtual void compute_norm (Vector< double > &norm)
 
virtual void compute_norm (double &norm)
 
virtual unsigned ndof_types () const
 
virtual void get_dof_numbers_for_unknowns (std::list< std::pair< unsigned long, unsigned >> &dof_lookup_list) const
 
- Public Member Functions inherited from oomph::GeomObject
 GeomObject ()
 Default constructor. More...
 
 GeomObject (const unsigned &ndim)
 
 GeomObject (const unsigned &nlagrangian, const unsigned &ndim)
 
 GeomObject (const unsigned &nlagrangian, const unsigned &ndim, TimeStepper *time_stepper_pt)
 
 GeomObject (const GeomObject &dummy)=delete
 Broken copy constructor. More...
 
void operator= (const GeomObject &)=delete
 Broken assignment operator. More...
 
virtual ~GeomObject ()
 (Empty) destructor More...
 
unsigned nlagrangian () const
 Access function to # of Lagrangian coordinates. More...
 
unsigned ndim () const
 Access function to # of Eulerian coordinates. More...
 
void set_nlagrangian_and_ndim (const unsigned &n_lagrangian, const unsigned &n_dim)
 Set # of Lagrangian and Eulerian coordinates. More...
 
TimeStepper *& time_stepper_pt ()
 
TimeSteppertime_stepper_pt () const
 
virtual void position (const double &t, const Vector< double > &zeta, Vector< double > &r) const
 
virtual void dposition (const Vector< double > &zeta, DenseMatrix< double > &drdzeta) const
 
virtual void d2position (const Vector< double > &zeta, RankThreeTensor< double > &ddrdzeta) const
 
virtual void d2position (const Vector< double > &zeta, Vector< double > &r, DenseMatrix< double > &drdzeta, RankThreeTensor< double > &ddrdzeta) const
 
- Public Member Functions inherited from oomph::FaceElement
 FaceElement ()
 Constructor: Initialise all appropriate member data. More...
 
virtual ~FaceElement ()
 Empty virtual destructor. More...
 
 FaceElement (const FaceElement &)=delete
 Broken copy constructor. More...
 
const unsignedboundary_number_in_bulk_mesh () const
 Broken assignment operator. More...
 
void set_boundary_number_in_bulk_mesh (const unsigned &b)
 Set function for the boundary number in bulk mesh. More...
 
double zeta_nodal (const unsigned &n, const unsigned &k, const unsigned &i) const
 
double J_eulerian (const Vector< double > &s) const
 
double J_eulerian_at_knot (const unsigned &ipt) const
 
void check_J_eulerian_at_knots (bool &passed) const
 
double interpolated_x (const Vector< double > &s, const unsigned &i) const
 
double interpolated_x (const unsigned &t, const Vector< double > &s, const unsigned &i) const
 
void interpolated_x (const Vector< double > &s, Vector< double > &x) const
 
void interpolated_x (const unsigned &t, const Vector< double > &s, Vector< double > &x) const
 
double interpolated_dxdt (const Vector< double > &s, const unsigned &i, const unsigned &t)
 
void interpolated_dxdt (const Vector< double > &s, const unsigned &t, Vector< double > &dxdt)
 
intnormal_sign ()
 
int normal_sign () const
 
intface_index ()
 
int face_index () const
 
const Vector< double > * tangent_direction_pt () const
 Public access function for the tangent direction pointer. More...
 
void set_tangent_direction (Vector< double > *tangent_direction_pt)
 Set the tangent direction vector. More...
 
void turn_on_warning_for_discontinuous_tangent ()
 
void turn_off_warning_for_discontinuous_tangent ()
 
void continuous_tangent_and_outer_unit_normal (const Vector< double > &s, Vector< Vector< double >> &tang_vec, Vector< double > &unit_normal) const
 
void continuous_tangent_and_outer_unit_normal (const unsigned &ipt, Vector< Vector< double >> &tang_vec, Vector< double > &unit_normal) const
 
void outer_unit_normal (const Vector< double > &s, Vector< double > &unit_normal) const
 Compute outer unit normal at the specified local coordinate. More...
 
void outer_unit_normal (const unsigned &ipt, Vector< double > &unit_normal) const
 Compute outer unit normal at ipt-th integration point. More...
 
FiniteElement *& bulk_element_pt ()
 Pointer to higher-dimensional "bulk" element. More...
 
FiniteElementbulk_element_pt () const
 Pointer to higher-dimensional "bulk" element (const version) More...
 
CoordinateMappingFctPtface_to_bulk_coordinate_fct_pt ()
 
CoordinateMappingFctPt face_to_bulk_coordinate_fct_pt () const
 
BulkCoordinateDerivativesFctPtbulk_coordinate_derivatives_fct_pt ()
 
BulkCoordinateDerivativesFctPt bulk_coordinate_derivatives_fct_pt () const
 
Vector< doublelocal_coordinate_in_bulk (const Vector< double > &s) const
 
void get_local_coordinate_in_bulk (const Vector< double > &s, Vector< double > &s_bulk) const
 
void get_ds_bulk_ds_face (const Vector< double > &s, DenseMatrix< double > &dsbulk_dsface, unsigned &interior_direction) const
 
unsignedbulk_position_type (const unsigned &i)
 
const unsignedbulk_position_type (const unsigned &i) const
 
void bulk_node_number_resize (const unsigned &i)
 Resize the storage for the bulk node numbers. More...
 
unsignedbulk_node_number (const unsigned &n)
 
const unsignedbulk_node_number (const unsigned &n) const
 
void bulk_position_type_resize (const unsigned &i)
 Resize the storage for bulk_position_type to i entries. More...
 
unsignednbulk_value (const unsigned &n)
 
unsigned nbulk_value (const unsigned &n) const
 
void nbulk_value_resize (const unsigned &i)
 
void resize_nodes (Vector< unsigned > &nadditional_data_values)
 
void output_zeta (std::ostream &outfile, const unsigned &nplot)
 Output boundary coordinate zeta. More...
 
- Public Member Functions inherited from oomph::TemplateFreeUnsteadyHeatBaseFaceElement
 TemplateFreeUnsteadyHeatBaseFaceElement ()
 Constructor. More...
 
virtual ~TemplateFreeUnsteadyHeatBaseFaceElement ()
 Destrutor. More...
 
UnsteadyHeatPrescribedFluxFctPtflux_fct_pt ()
 Access function for the prescribed-flux function pointer. More...
 

Protected Attributes

doubleSigma_pt
 Pointer to non-dim Stefan Boltzmann constant. More...
 
doubleTheta_0_pt
 Pointer to non-dim zero centrigrade offset in Stefan Boltzmann law. More...
 
Vector< Vector< std::pair< StefanBoltzmannRadiationBase *, Vector< unsigned > > > > Stefan_boltzmann_illumination_info
 
- Protected Attributes inherited from oomph::FiniteElement
MacroElementMacro_elem_pt
 Pointer to the element's macro element (NULL by default) More...
 
- Protected Attributes inherited from oomph::GeomObject
unsigned NLagrangian
 Number of Lagrangian (intrinsic) coordinates. More...
 
unsigned Ndim
 Number of Eulerian coordinates. More...
 
TimeStepperGeom_object_time_stepper_pt
 
- Protected Attributes inherited from oomph::FaceElement
unsigned Boundary_number_in_bulk_mesh
 The boundary number in the bulk mesh to which this element is attached. More...
 
FiniteElementBulk_element_pt
 Pointer to the associated higher-dimensional "bulk" element. More...
 
Vector< unsignedBulk_node_number
 
Vector< unsignedNbulk_value
 
Vector< double > * Tangent_direction_pt
 
- Protected Attributes inherited from oomph::TemplateFreeUnsteadyHeatBaseFaceElement
unsigned U_index_ust_heat
 Index at which temperature is stored. More...
 
unsigned Dim
 The spatial dimension of the problem. More...
 
UnsteadyHeatPrescribedFluxFctPt Flux_fct_pt
 Function pointer to the (global) prescribed-flux function. More...
 

Additional Inherited Members

- Public Types inherited from oomph::FiniteElement
typedef void(* SteadyExactSolutionFctPt) (const Vector< double > &, Vector< double > &)
 
typedef void(* UnsteadyExactSolutionFctPt) (const double &, const Vector< double > &, Vector< double > &)
 
- Public Types inherited from oomph::TemplateFreeUnsteadyHeatBaseFaceElement
typedef void(* UnsteadyHeatPrescribedFluxFctPt) (const double &time, const Vector< double > &x, const Vector< double > &n, const double &u, double &flux)
 
- Static Public Attributes inherited from oomph::FiniteElement
static double Tolerance_for_singular_jacobian = 1.0e-16
 Tolerance below which the jacobian is considered singular. More...
 
static bool Accept_negative_jacobian = false
 
static bool Suppress_output_while_checking_for_inverted_elements
 
- Static Public Attributes inherited from oomph::GeneralisedElement
static bool Suppress_warning_about_repeated_internal_data
 
static bool Suppress_warning_about_repeated_external_data = true
 
static double Default_fd_jacobian_step = 1.0e-8
 
- Protected Member Functions inherited from oomph::FiniteElement
virtual void assemble_local_to_eulerian_jacobian (const DShape &dpsids, DenseMatrix< double > &jacobian) const
 
virtual void assemble_local_to_eulerian_jacobian2 (const DShape &d2psids, DenseMatrix< double > &jacobian2) const
 
virtual void assemble_eulerian_base_vectors (const DShape &dpsids, DenseMatrix< double > &interpolated_G) const
 
template<unsigned DIM>
double invert_jacobian (const DenseMatrix< double > &jacobian, DenseMatrix< double > &inverse_jacobian) const
 
virtual double invert_jacobian_mapping (const DenseMatrix< double > &jacobian, DenseMatrix< double > &inverse_jacobian) const
 
virtual double local_to_eulerian_mapping (const DShape &dpsids, DenseMatrix< double > &jacobian, DenseMatrix< double > &inverse_jacobian) const
 
double local_to_eulerian_mapping (const DShape &dpsids, DenseMatrix< double > &inverse_jacobian) const
 
virtual double local_to_eulerian_mapping_diagonal (const DShape &dpsids, DenseMatrix< double > &jacobian, DenseMatrix< double > &inverse_jacobian) const
 
virtual void dJ_eulerian_dnodal_coordinates (const DenseMatrix< double > &jacobian, const DShape &dpsids, DenseMatrix< double > &djacobian_dX) const
 
template<unsigned DIM>
void dJ_eulerian_dnodal_coordinates_templated_helper (const DenseMatrix< double > &jacobian, const DShape &dpsids, DenseMatrix< double > &djacobian_dX) const
 
virtual void d_dshape_eulerian_dnodal_coordinates (const double &det_jacobian, const DenseMatrix< double > &jacobian, const DenseMatrix< double > &djacobian_dX, const DenseMatrix< double > &inverse_jacobian, const DShape &dpsids, RankFourTensor< double > &d_dpsidx_dX) const
 
template<unsigned DIM>
void d_dshape_eulerian_dnodal_coordinates_templated_helper (const double &det_jacobian, const DenseMatrix< double > &jacobian, const DenseMatrix< double > &djacobian_dX, const DenseMatrix< double > &inverse_jacobian, const DShape &dpsids, RankFourTensor< double > &d_dpsidx_dX) const
 
virtual void transform_derivatives (const DenseMatrix< double > &inverse_jacobian, DShape &dbasis) const
 
void transform_derivatives_diagonal (const DenseMatrix< double > &inverse_jacobian, DShape &dbasis) const
 
virtual void transform_second_derivatives (const DenseMatrix< double > &jacobian, const DenseMatrix< double > &inverse_jacobian, const DenseMatrix< double > &jacobian2, DShape &dbasis, DShape &d2basis) const
 
template<unsigned DIM>
void transform_second_derivatives_template (const DenseMatrix< double > &jacobian, const DenseMatrix< double > &inverse_jacobian, const DenseMatrix< double > &jacobian2, DShape &dbasis, DShape &d2basis) const
 
template<unsigned DIM>
void transform_second_derivatives_diagonal (const DenseMatrix< double > &jacobian, const DenseMatrix< double > &inverse_jacobian, const DenseMatrix< double > &jacobian2, DShape &dbasis, DShape &d2basis) const
 
virtual void fill_in_jacobian_from_nodal_by_fd (Vector< double > &residuals, DenseMatrix< double > &jacobian)
 
void fill_in_jacobian_from_nodal_by_fd (DenseMatrix< double > &jacobian)
 
virtual void update_before_nodal_fd ()
 
virtual void reset_after_nodal_fd ()
 
virtual void update_in_nodal_fd (const unsigned &i)
 
virtual void reset_in_nodal_fd (const unsigned &i)
 
void fill_in_contribution_to_jacobian (Vector< double > &residuals, DenseMatrix< double > &jacobian)
 
template<>
double invert_jacobian (const DenseMatrix< double > &jacobian, DenseMatrix< double > &inverse_jacobian) const
 Zero-d specialisation of function to calculate inverse of jacobian mapping. More...
 
template<>
double invert_jacobian (const DenseMatrix< double > &jacobian, DenseMatrix< double > &inverse_jacobian) const
 One-d specialisation of function to calculate inverse of jacobian mapping. More...
 
template<>
double invert_jacobian (const DenseMatrix< double > &jacobian, DenseMatrix< double > &inverse_jacobian) const
 Two-d specialisation of function to calculate inverse of jacobian mapping. More...
 
template<>
double invert_jacobian (const DenseMatrix< double > &jacobian, DenseMatrix< double > &inverse_jacobian) const
 
template<>
void dJ_eulerian_dnodal_coordinates_templated_helper (const DenseMatrix< double > &jacobian, const DShape &dpsids, DenseMatrix< double > &djacobian_dX) const
 
template<>
void dJ_eulerian_dnodal_coordinates_templated_helper (const DenseMatrix< double > &jacobian, const DShape &dpsids, DenseMatrix< double > &djacobian_dX) const
 
template<>
void dJ_eulerian_dnodal_coordinates_templated_helper (const DenseMatrix< double > &jacobian, const DShape &dpsids, DenseMatrix< double > &djacobian_dX) const
 
template<>
void dJ_eulerian_dnodal_coordinates_templated_helper (const DenseMatrix< double > &jacobian, const DShape &dpsids, DenseMatrix< double > &djacobian_dX) const
 
template<>
void d_dshape_eulerian_dnodal_coordinates_templated_helper (const double &det_jacobian, const DenseMatrix< double > &jacobian, const DenseMatrix< double > &djacobian_dX, const DenseMatrix< double > &inverse_jacobian, const DShape &dpsids, RankFourTensor< double > &d_dpsidx_dX) const
 
template<>
void d_dshape_eulerian_dnodal_coordinates_templated_helper (const double &det_jacobian, const DenseMatrix< double > &jacobian, const DenseMatrix< double > &djacobian_dX, const DenseMatrix< double > &inverse_jacobian, const DShape &dpsids, RankFourTensor< double > &d_dpsidx_dX) const
 
template<>
void d_dshape_eulerian_dnodal_coordinates_templated_helper (const double &det_jacobian, const DenseMatrix< double > &jacobian, const DenseMatrix< double > &djacobian_dX, const DenseMatrix< double > &inverse_jacobian, const DShape &dpsids, RankFourTensor< double > &d_dpsidx_dX) const
 
template<>
void d_dshape_eulerian_dnodal_coordinates_templated_helper (const double &det_jacobian, const DenseMatrix< double > &jacobian, const DenseMatrix< double > &djacobian_dX, const DenseMatrix< double > &inverse_jacobian, const DShape &dpsids, RankFourTensor< double > &d_dpsidx_dX) const
 
template<>
void transform_second_derivatives_template (const DenseMatrix< double > &jacobian, const DenseMatrix< double > &inverse_jacobian, const DenseMatrix< double > &jacobian2, DShape &dbasis, DShape &d2basis) const
 
template<>
void transform_second_derivatives_template (const DenseMatrix< double > &jacobian, const DenseMatrix< double > &inverse_jacobian, const DenseMatrix< double > &jacobian2, DShape &dbasis, DShape &d2basis) const
 
template<>
void transform_second_derivatives_diagonal (const DenseMatrix< double > &jacobian, const DenseMatrix< double > &inverse_jacobian, const DenseMatrix< double > &jacobian2, DShape &dbasis, DShape &d2basis) const
 
template<>
void transform_second_derivatives_diagonal (const DenseMatrix< double > &jacobian, const DenseMatrix< double > &inverse_jacobian, const DenseMatrix< double > &jacobian2, DShape &dbasis, DShape &d2basis) const
 
- Protected Member Functions inherited from oomph::GeneralisedElement
unsigned add_internal_data (Data *const &data_pt, const bool &fd=true)
 
bool internal_data_fd (const unsigned &i) const
 
void exclude_internal_data_fd (const unsigned &i)
 
void include_internal_data_fd (const unsigned &i)
 
void clear_global_eqn_numbers ()
 
void add_global_eqn_numbers (std::deque< unsigned long > const &global_eqn_numbers, std::deque< double * > const &global_dof_pt)
 
virtual void assign_internal_and_external_local_eqn_numbers (const bool &store_local_dof_pt)
 
virtual void assign_additional_local_eqn_numbers ()
 
int internal_local_eqn (const unsigned &i, const unsigned &j) const
 
int external_local_eqn (const unsigned &i, const unsigned &j)
 
virtual void fill_in_contribution_to_residuals (Vector< double > &residuals)
 
void fill_in_jacobian_from_internal_by_fd (Vector< double > &residuals, DenseMatrix< double > &jacobian, const bool &fd_all_data=false)
 
void fill_in_jacobian_from_internal_by_fd (DenseMatrix< double > &jacobian, const bool &fd_all_data=false)
 
void fill_in_jacobian_from_external_by_fd (Vector< double > &residuals, DenseMatrix< double > &jacobian, const bool &fd_all_data=false)
 
void fill_in_jacobian_from_external_by_fd (DenseMatrix< double > &jacobian, const bool &fd_all_data=false)
 
virtual void update_before_internal_fd ()
 
virtual void reset_after_internal_fd ()
 
virtual void update_in_internal_fd (const unsigned &i)
 
virtual void reset_in_internal_fd (const unsigned &i)
 
virtual void update_before_external_fd ()
 
virtual void reset_after_external_fd ()
 
virtual void update_in_external_fd (const unsigned &i)
 
virtual void reset_in_external_fd (const unsigned &i)
 
virtual void fill_in_contribution_to_mass_matrix (Vector< double > &residuals, DenseMatrix< double > &mass_matrix)
 
virtual void fill_in_contribution_to_jacobian_and_mass_matrix (Vector< double > &residuals, DenseMatrix< double > &jacobian, DenseMatrix< double > &mass_matrix)
 
virtual void fill_in_contribution_to_dresiduals_dparameter (double *const &parameter_pt, Vector< double > &dres_dparam)
 
virtual void fill_in_contribution_to_djacobian_dparameter (double *const &parameter_pt, Vector< double > &dres_dparam, DenseMatrix< double > &djac_dparam)
 
virtual void fill_in_contribution_to_djacobian_and_dmass_matrix_dparameter (double *const &parameter_pt, Vector< double > &dres_dparam, DenseMatrix< double > &djac_dparam, DenseMatrix< double > &dmass_matrix_dparam)
 
virtual void fill_in_contribution_to_hessian_vector_products (Vector< double > const &Y, DenseMatrix< double > const &C, DenseMatrix< double > &product)
 
virtual void fill_in_contribution_to_inner_products (Vector< std::pair< unsigned, unsigned >> const &history_index, Vector< double > &inner_product)
 
virtual void fill_in_contribution_to_inner_product_vectors (Vector< unsigned > const &history_index, Vector< Vector< double >> &inner_product_vector)
 
- Protected Member Functions inherited from oomph::FaceElement
void add_additional_values (const Vector< unsigned > &nadditional_values, const unsigned &id)
 
- Protected Member Functions inherited from oomph::TemplateFreeUnsteadyHeatBaseFaceElement
virtual void get_flux (const unsigned &ipt, const double &time, const Vector< double > &x, const Vector< double > &n, const double &u, double &flux)
 
- Static Protected Attributes inherited from oomph::FiniteElement
static const unsigned Default_Initial_Nvalue = 0
 Default value for the number of values at a node. More...
 
static const double Node_location_tolerance = 1.0e-14
 
static const unsigned N2deriv [] = {0, 1, 3, 6}
 
- Static Protected Attributes inherited from oomph::GeneralisedElement
static DenseMatrix< doubleDummy_matrix
 
static std::deque< double * > Dof_pt_deque
 

Detailed Description

////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////// Template-free base class for elements that are illuminated by (and illuminate) other Stefan Boltzmann elements

Constructor & Destructor Documentation

◆ StefanBoltzmannRadiationBase()

oomph::StefanBoltzmannRadiationBase::StefanBoltzmannRadiationBase ( )
inline

Constructor.

1138  {
1139  // Pointer to non-dim Stefan Boltzmann constant
1140  Sigma_pt=0;
1141 
1142  // Pointer to non-dim zero centrigrade offset in Stefan Boltzmann law
1143  Theta_0_pt=0;
1144 
1145  // Make space for Stefan Boltzmann illumination info
1146  unsigned n_intpt = integral_pt()->nweight();
1147  Stefan_boltzmann_illumination_info.resize(n_intpt);
1148  }
Integral *const & integral_pt() const
Return the pointer to the integration scheme (const version)
Definition: elements.h:1963
virtual unsigned nweight() const =0
Return the number of integration points of the scheme.
Vector< Vector< std::pair< StefanBoltzmannRadiationBase *, Vector< unsigned > > > > Stefan_boltzmann_illumination_info
Definition: temporary_stefan_boltzmann_elements.h:1361
double * Theta_0_pt
Pointer to non-dim zero centrigrade offset in Stefan Boltzmann law.
Definition: temporary_stefan_boltzmann_elements.h:1347
double * Sigma_pt
Pointer to non-dim Stefan Boltzmann constant.
Definition: temporary_stefan_boltzmann_elements.h:1344

References oomph::FiniteElement::integral_pt(), oomph::Integral::nweight(), Sigma_pt, Stefan_boltzmann_illumination_info, and Theta_0_pt.

Member Function Documentation

◆ add_stefan_boltzmann_illumination_info()

void oomph::StefanBoltzmannRadiationBase::add_stefan_boltzmann_illumination_info ( const unsigned ipt,
StefanBoltzmannRadiationBase illuminating_el_pt,
Vector< unsigned > &  illuminating_integration_point_index,
const bool add_solid_position_data = true 
)
inline

Set illumination info: For integration point, ipt, we store all pairs identifying illuminating elements (via pointer to element and indices of illuminating integration points): Stefan_boltzmann_illumination_info[ipt].size() = number of illuminating elements Stefan_boltzmann_illumination_info[ipt][e].first = pointer to e-th illuminating element Stefan_boltzmann_illumination_info[ipt][e].second = vector containing indices of integration points in e-th illuminating element that are visible from current element's ipt'th integration point. Optional boolean add_solid_position_data (default: true) adds nodal position data if the nodes are solid nodes.

1252  {
1253 #ifdef PARANOID
1254  unsigned n=Stefan_boltzmann_illumination_info[ipt].size();
1255  for (unsigned e=0;e<n;e++)
1256  {
1257  if (Stefan_boltzmann_illumination_info[ipt][e].first==illuminating_el_pt)
1258  {
1259  throw OomphLibError(
1260  "Element has already been added!",
1263  }
1264  }
1265 #endif
1266 
1267  Stefan_boltzmann_illumination_info[ipt].push_back(
1268  std::make_pair(illuminating_el_pt,illuminating_integration_point_index));
1269 
1270  // Add nodal Data of illuminating elements as external data
1271  unsigned nnod=illuminating_el_pt->nnode();
1272  for (unsigned j=0;j<nnod;j++)
1273  {
1274  Node* ext_node_pt=illuminating_el_pt->node_pt(j);
1275  bool own=false;
1276  for (unsigned jj=0;jj<nnod;jj++)
1277  {
1278  if (node_pt(jj)==ext_node_pt)
1279  {
1280  own=true;
1281  break;
1282  }
1283  }
1284  if (!own)
1285  {
1286  add_external_data(ext_node_pt);
1287  if (add_solid_position_data)
1288  {
1289  SolidNode* solid_node_pt=dynamic_cast<SolidNode*>(ext_node_pt);
1290  if (solid_node_pt!=0)
1291  {
1292  add_external_data(solid_node_pt->variable_position_pt());
1293  }
1294  }
1295  }
1296  }
1297 
1298  }
const unsigned n
Definition: CG3DPackingUnitTest.cpp:11
Array< double, 1, 3 > e(1./3., 0.5, 2.)
Node *& node_pt(const unsigned &n)
Return a pointer to the local node n.
Definition: elements.h:2175
unsigned add_external_data(Data *const &data_pt, const bool &fd=true)
Definition: elements.cc:307
#define OOMPH_EXCEPTION_LOCATION
Definition: oomph_definitions.h:61
#define OOMPH_CURRENT_FUNCTION
Definition: oomph_definitions.h:86
std::ptrdiff_t j
Definition: tut_arithmetic_redux_minmax.cpp:2

References oomph::GeneralisedElement::add_external_data(), e(), j, n, oomph::FiniteElement::nnode(), oomph::FiniteElement::node_pt(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, Stefan_boltzmann_illumination_info, and oomph::SolidNode::variable_position_pt().

Referenced by oomph::StefanBoltzmannHelper::setup_stefan_boltzmann_visibility().

◆ contribution_to_stefan_boltzmann_radiation() [1/2]

double oomph::StefanBoltzmannRadiationBase::contribution_to_stefan_boltzmann_radiation ( const Vector< double > &  r_illuminated,
const Vector< double > &  n_illuminated,
const Vector< unsigned > &  visible_intpts_in_current_element 
)
inline

Compute the element's contribution to Stefan Boltzmann radiation onto point at r_illuminated with local outer unit normal n_illuminated, using the integration points (in current element) contained in visible_intpts_in_current_element.

1203  {
1204  // Dummy file
1205  std::ofstream outfile;
1207  r_illuminated,
1208  n_illuminated,
1209  visible_intpts_in_current_element,
1210  outfile);
1211  }
double contribution_to_stefan_boltzmann_radiation(const Vector< double > &r_illuminated, const Vector< double > &n_illuminated, const Vector< unsigned > &visible_intpts_in_current_element)
Definition: temporary_stefan_boltzmann_elements.h:1199

Referenced by incoming_stefan_boltzmann_radiation().

◆ contribution_to_stefan_boltzmann_radiation() [2/2]

double oomph::StefanBoltzmannRadiationBase::contribution_to_stefan_boltzmann_radiation ( const Vector< double > &  r_illuminated,
const Vector< double > &  n_illuminated,
const Vector< unsigned > &  visible_intpts_in_current_element,
std::ofstream &  outfile 
)

Compute the element's contribution to Stefan Boltzmann radiation onto point at r_illuminated with local outer unit normal n_illuminated, using the integration points (in current element) contained in visible_intpts_in_current_element; output in outfile

Compute the element's contribution to Stefan Boltzmann radiation onto point at r_illuminated with local outer unit normal n_illuminated, using the integration points (in current element) contained in visible_intpts_in_current_element.

1379 {
1380 
1381  if (outfile.is_open())
1382  {
1383  outfile << "ZONE\n";
1384  outfile << r_illuminated[0] << " "
1385  << r_illuminated[1] << "0 0\n";
1386  }
1387 
1388  // Initialise
1389  double contribution=0.0;
1390 
1391  //Find out how many nodes there are
1392  unsigned n_node = nnode();
1393 
1394  //Set up memory for the shape functions
1395  Shape psi(n_node);
1396  DShape dpsids(n_node,1);
1397 
1398  // Loop over contributing integration points
1399  unsigned nint=visible_intpts_in_current_element.size();
1400  for (unsigned ii=0;ii<nint;ii++)
1401  {
1402  // Get integration point
1403  unsigned ipt=visible_intpts_in_current_element[ii];
1404 
1405  //Only need to call the local derivatives
1406  dshape_local_at_knot(ipt,psi,dpsids);
1407 
1408  //Get the integral weight
1409  double w = integral_pt()->weight(ipt);
1410 
1411  //Calculate the coords and tangent vector
1412  Vector<double> r_illuminating(2,0.0);
1413  Vector<double> interpolated_dxds(2,0.0);
1414  double interpolated_u=0;
1415 
1416  //Loop over nodes
1417  for(unsigned l=0;l<n_node;l++)
1418  {
1419  // Add to temperature
1420  interpolated_u+=
1421  node_pt(l)->value(U_index_ust_heat)*psi[l];
1422 
1423  //Loop over directions
1424  for(unsigned i=0;i<2;i++)
1425  {
1426  //ALH: Commented out because this is the memory error
1427  //s[i]=this->integral_pt()->knot(ipt,i);
1428  r_illuminating[i] += nodal_position(l,i)*psi(l);
1429  interpolated_dxds[i] += nodal_position(l,i)*dpsids(l,0);
1430  }
1431  }
1432 
1433  // Vector from illuminated to illuminated point
1434  Vector<double> ray(2);
1435  ray[0]=r_illuminating[0]-r_illuminated[0];
1436  ray[1]=r_illuminating[1]-r_illuminated[1];
1437 
1438 
1439  // Get inverse length
1440  double inv_length=1.0/sqrt(ray[0]*ray[0]+ray[1]*ray[1]);
1441 
1442  // e_phi (phi measured in mathematically negative sense
1443  // from vertically above illuminated point -- 'cos that's
1444  // what it is in my sketch..
1445  Vector<double> e_phi(2);
1446  e_phi[0]= inv_length*ray[1];
1447  e_phi[1]=-inv_length*ray[0];
1448 
1449  // Angles
1450  double cos_phi=inv_length*(n_illuminated[0]*ray[0]+
1451  n_illuminated[1]*ray[1]);
1452 
1453  // INTEGRAL IS:
1454  // \int sigma T^4 1/2 \cos \varphi d \varphi =
1455  // where
1456  // d\varphi=1/|{\bf R}| \partial {\bf R}/\partial s \cdot {\bf e}_\varphi ds
1457 
1458  double integrand=
1459  this->sigma()*pow((interpolated_u+this->theta_0()),4)*
1460  0.5*cos_phi*std::fabs(inv_length*(interpolated_dxds[0]*e_phi[0]+
1461  interpolated_dxds[1]*e_phi[1]));
1462 
1463 
1464  // Add it in...
1465  contribution+=integrand*w;
1466 
1467  if (outfile.is_open())
1468  {
1469  outfile << r_illuminating[0] << " "
1470  << r_illuminating[1] << " "
1471  << cos_phi << " "
1472  << integrand << " "
1473  << "\n";
1474  }
1475  }
1476 
1477  return contribution;
1478 }
AnnoyingScalar sqrt(const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:134
int i
Definition: BiCGSTAB_step_by_step.cpp:9
RowVector3d w
Definition: Matrix_resize_int.cpp:3
virtual void dshape_local_at_knot(const unsigned &ipt, Shape &psi, DShape &dpsids) const
Definition: elements.cc:3239
unsigned nnode() const
Return the number of nodes.
Definition: elements.h:2210
double nodal_position(const unsigned &n, const unsigned &i) const
Definition: elements.h:2317
virtual double weight(const unsigned &i) const =0
Return weight of i-th integration point.
double value(const unsigned &i) const
Definition: nodes.cc:2408
double sigma()
Non-dim Stefan Boltzmann constant (switched off by default)
Definition: temporary_stefan_boltzmann_elements.h:1157
double theta_0()
Definition: temporary_stefan_boltzmann_elements.h:1172
unsigned U_index_ust_heat
Index at which temperature is stored.
Definition: heat_transfer_and_melt_elements.h:179
EIGEN_STRONG_INLINE EIGEN_DEVICE_FUNC bfloat16 pow(const bfloat16 &a, const bfloat16 &b)
Definition: BFloat16.h:625
Real fabs(const Real &a)
Definition: boostmultiprec.cpp:117

References oomph::FiniteElement::dshape_local_at_knot(), boost::multiprecision::fabs(), i, oomph::FiniteElement::integral_pt(), oomph::FiniteElement::nnode(), oomph::FiniteElement::nodal_position(), oomph::FiniteElement::node_pt(), Eigen::bfloat16_impl::pow(), sigma(), sqrt(), theta_0(), oomph::TemplateFreeUnsteadyHeatBaseFaceElement::U_index_ust_heat, oomph::Node::value(), w, and oomph::Integral::weight().

◆ incoming_stefan_boltzmann_radiation()

double oomph::StefanBoltzmannRadiationBase::incoming_stefan_boltzmann_radiation ( const unsigned ipt,
const Vector< double > &  r_illuminated,
const Vector< double > &  n_illuminated 
)
inline

Compute the incoming Stefan Boltzmann radiation onto integration point ipt – input externally pre-computed Eulerian coordinate of illuminated integration point, r_illuminated, and outer unit normal to that point, n_illuminated.

Number of contributing (illuminating) elements

1317  {
1318  // Initialise flux
1319  double flux=0.0;
1320 
1322  unsigned n_contrib=Stefan_boltzmann_illumination_info[ipt].size();
1323  for (unsigned e=0;e<n_contrib;e++)
1324  {
1325  // Pointer to contributing (illuminating) element
1328 
1329  // Indices of illuminating integration points that contribute
1330  Vector<unsigned> visible_integration_points=
1332 
1333  // Add contribution
1334  flux+=el_pt->contribution_to_stefan_boltzmann_radiation
1335  (r_illuminated,n_illuminated,visible_integration_points);
1336  }
1337 
1338  return flux;
1339  }
StefanBoltzmannRadiationBase()
Constructor.
Definition: temporary_stefan_boltzmann_elements.h:1137
void flux(const double &time, const Vector< double > &x, double &flux)
Get flux applied along boundary x=0.
Definition: pretend_melt.cc:59

References contribution_to_stefan_boltzmann_radiation(), e(), ProblemParameters::flux(), and Stefan_boltzmann_illumination_info.

Referenced by StefanBoltzmannProblem< ELEMENT >::doc_solution(), oomph::StefanBoltzmannUnsteadyHeatFluxElement< ELEMENT >::get_flux(), and oomph::StefanBoltzmannUnsteadyHeatFluxElement< ELEMENT >::output_stefan_boltzmann_radiation().

◆ output_stefan_boltzmann_radiation()

void oomph::StefanBoltzmannRadiationBase::output_stefan_boltzmann_radiation ( std::ostream &  outfile)

Output Stefan Boltzmann radiation: x,y,in,out,n_x,n_y.

◆ output_stefan_boltzmann_radiation_rays()

void oomph::StefanBoltzmannRadiationBase::output_stefan_boltzmann_radiation_rays ( std::ostream &  outfile,
const unsigned integration_point = UINT_MAX 
)

Output Stefan Boltzmann radiation: Plots rays from illuminated integration point to illuminating ones (and back).

Output Stefan Boltzmann radiation. Plots rays from illuminated integration point to illuminating ones (and back).

1489 {
1490 
1491  // Vector to illuminated/ing Gauss points
1492  Vector<double> r_illuminated(2);
1493  Vector<double> s_illuminated(1);
1494  Vector<double> unit_normal_illuminated(2);
1495  Vector<double> r_illuminating(2);
1496  Vector<double> s_illuminating(1);
1497  Vector<double> unit_normal_illuminating(2);
1498 
1499  unsigned ipt_lo=0;
1500  unsigned ipt_hi=this->integral_pt()->nweight()-1;
1501  if (integration_point!=UINT_MAX)
1502  {
1503  ipt_lo=integration_point;
1504  ipt_hi=integration_point;
1505  }
1506 
1507  // Loop over integration points
1508  for (unsigned ipt=ipt_lo;ipt<=ipt_hi;ipt++)
1509  {
1510  // Local coordinate of integration point
1511  s_illuminated[0]=this->integral_pt()->knot(ipt,0);
1512 
1513  // Get coordinate of illuminated integration point
1514  this->interpolated_x(s_illuminated,r_illuminated);
1515 
1516  // Plot illuminted point
1517  outfile << "ZONE\n";
1518  outfile << r_illuminated[0] << " " << r_illuminated[1] << "\n";
1519 
1520  // Number of illuminating elements
1521  unsigned n_illuminating=Stefan_boltzmann_illumination_info[ipt].size();
1522  for (unsigned i2=0;i2<n_illuminating;i2++)
1523  {
1524  // Get pointer to illuminating element
1525  FiniteElement* el_pt=
1526  (//dynamic_cast<FiniteElement*>(
1527  Stefan_boltzmann_illumination_info[ipt][i2].first);
1528 
1529  // Illuminating Gauss points in illuminating element
1530  unsigned n_pts=(Stefan_boltzmann_illumination_info[ipt][i2].second).size();
1531  for (unsigned ipt2=0;ipt2<n_pts;ipt2++)
1532  {
1533  // Illuminating integration point
1534  unsigned ipt_illum=
1535  (Stefan_boltzmann_illumination_info[ipt][i2].second)[ipt2];
1536 
1537  // Get local coordinate of that integration point
1538  s_illuminating[0]=el_pt->integral_pt()->knot(ipt_illum,0);
1539 
1540  // Get coordinate of illuminating integration point
1541  el_pt->interpolated_x(s_illuminating,r_illuminating);
1542 
1543  // Plot ray to illuminting point and back
1544  outfile << r_illuminating[0] << " " << r_illuminating[1] << "\n";
1545  outfile << r_illuminated[0] << " " << r_illuminated[1] << "\n";
1546  }
1547  }
1548  }
1549 }
double size() const
Definition: elements.cc:4290
virtual double interpolated_x(const Vector< double > &s, const unsigned &i) const
Return FE interpolated coordinate x[i] at local coordinate s.
Definition: elements.cc:3962
FiniteElement()
Constructor.
Definition: elements.h:1782
virtual double knot(const unsigned &i, const unsigned &j) const =0
Return local coordinate s[j] of i-th integration point.

References oomph::FiniteElement::integral_pt(), oomph::FiniteElement::interpolated_x(), oomph::Integral::knot(), oomph::Integral::nweight(), oomph::FiniteElement::size(), and Stefan_boltzmann_illumination_info.

Referenced by StefanBoltzmannProblem< ELEMENT >::doc_solution().

◆ sigma()

double oomph::StefanBoltzmannRadiationBase::sigma ( )
inline

Non-dim Stefan Boltzmann constant (switched off by default)

1158  {
1159  if (Sigma_pt==0)
1160  {
1161  return 0.0;
1162  }
1163  else
1164  {
1165  return *Sigma_pt;
1166  }
1167  }

References Sigma_pt.

Referenced by contribution_to_stefan_boltzmann_radiation(), oomph::StefanBoltzmannUnsteadyHeatFluxElement< ELEMENT >::get_flux(), and oomph::StefanBoltzmannUnsteadyHeatFluxElement< ELEMENT >::output_stefan_boltzmann_radiation().

◆ sigma_pt()

double*& oomph::StefanBoltzmannRadiationBase::sigma_pt ( )
inline

◆ theta_0()

double oomph::StefanBoltzmannRadiationBase::theta_0 ( )
inline

Non-dim zero centrigrade offset in Stefan Boltzmann law (must be set if effect is enabled i.e. if non-default non-dim Stefan Boltzmann constant has been set)

1173  {
1174  if (Sigma_pt==0)
1175  {
1176  return 0.0;
1177  }
1178  else
1179  {
1180  if (Theta_0_pt==0)
1181  {
1182  throw OomphLibError("Non-dim zero-centrigrade offset not set",
1185  }
1186  else
1187  {
1188  return *Theta_0_pt;
1189  }
1190  }
1191  }

References OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, Sigma_pt, and Theta_0_pt.

Referenced by contribution_to_stefan_boltzmann_radiation(), oomph::StefanBoltzmannUnsteadyHeatFluxElement< ELEMENT >::get_flux(), and oomph::StefanBoltzmannUnsteadyHeatFluxElement< ELEMENT >::output_stefan_boltzmann_radiation().

◆ theta_0_pt()

double*& oomph::StefanBoltzmannRadiationBase::theta_0_pt ( )
inline

◆ wipe_stefan_boltzmann_illumination_info()

void oomph::StefanBoltzmannRadiationBase::wipe_stefan_boltzmann_illumination_info ( )
inline

Wipe illumination info.

1226  {
1227  unsigned nint=Stefan_boltzmann_illumination_info.size();
1228  for (unsigned ipt=0;ipt<nint;ipt++)
1229  {
1231  }
1232  }

References Stefan_boltzmann_illumination_info.

Referenced by oomph::StefanBoltzmannHelper::setup_stefan_boltzmann_visibility().

Member Data Documentation

◆ Sigma_pt

double* oomph::StefanBoltzmannRadiationBase::Sigma_pt
protected

Pointer to non-dim Stefan Boltzmann constant.

Referenced by sigma(), sigma_pt(), StefanBoltzmannRadiationBase(), and theta_0().

◆ Stefan_boltzmann_illumination_info

Vector<Vector<std::pair<StefanBoltzmannRadiationBase*,Vector<unsigned> > > > oomph::StefanBoltzmannRadiationBase::Stefan_boltzmann_illumination_info
protected

Illumination info: For each integration point, ipt, we store all pairs identifying illuminating elements (via pointer to element and illumnating integration points):

Stefan_boltzmann_illumination_info[ipt].size() = number of illuminating elements Stefan_boltzmann_illumination_info[ipt][e].first = pointer to e-th illuminating element Stefan_boltzmann_illumination_info[ipt][e].second = vector containing index of integration points in e-th illuminating element that are visible from current element's ipt'th integration point.

Referenced by add_stefan_boltzmann_illumination_info(), incoming_stefan_boltzmann_radiation(), output_stefan_boltzmann_radiation_rays(), oomph::StefanBoltzmannUnsteadyHeatFluxElement< ELEMENT >::set_integration_scheme(), StefanBoltzmannRadiationBase(), and wipe_stefan_boltzmann_illumination_info().

◆ Theta_0_pt

double* oomph::StefanBoltzmannRadiationBase::Theta_0_pt
protected

Pointer to non-dim zero centrigrade offset in Stefan Boltzmann law.

Referenced by StefanBoltzmannRadiationBase(), theta_0(), and theta_0_pt().


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