World Builder  1.1.0-pre
A geodynamic initial conditions generator
WorldBuilder::Features::Plume Class Referencefinal

#include <plume.h>

Inheritance diagram for WorldBuilder::Features::Plume:
Collaboration diagram for WorldBuilder::Features::Plume:

Public Member Functions

 Plume (WorldBuilder::World *world)
 
 ~Plume () override final
 
void parse_entries (Parameters &prm) override final
 
void properties (const Point< 3 > &position_in_cartesian_coordinates, const Objects::NaturalCoordinate &position_in_natural_coordinates, const double depth, const std::vector< std::array< unsigned int, 3 >> &properties, const double gravity, const std::vector< size_t > &entry_in_output, std::vector< double > &output) const override final
 
- Public Member Functions inherited from WorldBuilder::Features::Interface
 Interface ()
 
virtual ~Interface ()
 
void get_coordinates (const std::string &name, Parameters &prm, const CoordinateSystem coordinate_system)
 
std::string get_name () const
 
virtual Objects::PlaneDistances distance_to_feature_plane (const Point< 3 > &position_in_cartesian_coordinates, const Objects::NaturalCoordinate &position_in_natural_coordinates, const double depth) const
 

Static Public Member Functions

static void declare_entries (Parameters &prm, const std::string &parent_name="", const std::vector< std::string > &required_entries={})
 
static void make_snippet (Parameters &prm)
 
- Static Public Member Functions inherited from WorldBuilder::Features::Interface
static void declare_entries (Parameters &prm, const std::string &parent_name, const std::vector< std::string > &required_entries)
 
static void registerType (const std::string &name, void(*)(Parameters &, const std::string &, const std::vector< std::string > &required_entries), void(*make_snippet)(Parameters &), ObjectFactory *factory)
 
static std::unique_ptr< Interfacecreate (const std::string &name, WorldBuilder::World *world)
 

Private Attributes

std::vector< std::unique_ptr< Features::PlumeModels::Temperature::Interface > > temperature_models
 
std::vector< std::unique_ptr< Features::PlumeModels::Composition::Interface > > composition_models
 
std::vector< std::unique_ptr< Features::PlumeModels::Velocity::Interface > > velocity_models
 
std::vector< std::unique_ptr< Features::PlumeModels::Grains::Interface > > grains_models
 
double min_depth
 
double max_depth
 
std::vector< double > depths
 
std::vector< double > semi_major_axis_lengths
 
std::vector< double > eccentricities
 
std::vector< double > rotation_angles
 

Additional Inherited Members

- Protected Attributes inherited from WorldBuilder::Features::Interface
WorldBuilder::Worldworld
 
std::string name
 
size_t tag_index
 
WorldBuilder::Utilities::InterpolationType interpolation_type
 
std::size_t original_number_of_coordinates
 
std::vector< Point< 2 > > coordinates
 
WorldBuilder::Objects::BezierCurve bezier_curve
 
std::string temperature_submodule_name
 
std::string composition_submodule_name
 

Detailed Description

This class represents a plume and can implement submodules for temperature and composition. These submodules determine what the returned temperature or composition of the temperature and composition functions of this class will be.

Definition at line 61 of file plume.h.

Constructor & Destructor Documentation

◆ Plume()

WorldBuilder::Features::Plume::Plume ( WorldBuilder::World world)

constructor

Definition at line 47 of file plume.cc.

Here is the call graph for this function:

◆ ~Plume()

WorldBuilder::Features::Plume::~Plume ( )
finaloverridedefault

Destructor

Here is the caller graph for this function:

Member Function Documentation

◆ declare_entries()

void WorldBuilder::Features::Plume::declare_entries ( Parameters prm,
const std::string &  parent_name = "",
const std::vector< std::string > &  required_entries = {} 
)
static

declare and read in the world builder file into the parameters class

Definition at line 79 of file plume.cc.

Here is the call graph for this function:

◆ make_snippet()

void WorldBuilder::Features::Plume::make_snippet ( Parameters prm)
static

Produce a JSON snippet for the schema

Definition at line 61 of file plume.cc.

Here is the call graph for this function:

◆ parse_entries()

void WorldBuilder::Features::Plume::parse_entries ( Parameters prm)
finaloverridevirtual

declare and read in the world builder file into the parameters class

Implements WorldBuilder::Features::Interface.

Definition at line 121 of file plume.cc.

Here is the call graph for this function:

◆ properties()

void WorldBuilder::Features::Plume::properties ( const Point< 3 > &  position_in_cartesian_coordinates,
const Objects::NaturalCoordinate position_in_natural_coordinates,
const double  depth,
const std::vector< std::array< unsigned int, 3 >> &  properties,
const double  gravity,
const std::vector< size_t > &  entry_in_output,
std::vector< double > &  output 
) const
finaloverridevirtual

Returns different values at a single point in one go stored in a vector of doubles.

The properties input decides what each entry means, and the output is generated in the same order as the properties input. The properties input consists of a 3D array, where the first entry identifies the property and the last two entries provide extra information about that property.

Temperature is identified by 1 and no extra information is needed. So temperature input usually looks like {1,0,0}. A temperature query prodoces one entry in the output vector.

Composition is identified by 2. This produces one value in the output. The second entry identifies the composition number and the third number is not used. So a commposition query asking about composition 1 looks like this: {2,1,0}. A composition query produces one entry in the output vector.

Grains are identified by 2. The second entry is the grain composition number and the third entry is the number of grains. A query about the grains, where it asks about composition 1 (for example enstatite) and 500 grains, looks like this: {2,1,500}. A composition query prodoces n_grains*10 entries in the output vector. The first n_grains entries are the sizes of all the grains, and the other 9 entries are sets of rotation matrices. The rotation matrix entries are ordered [0][0],[0][1],[0][2],[1][0],[1][1],etc.

The entries in output variable relates the index of the property to the index in the output.

Implements WorldBuilder::Features::Interface.

Definition at line 254 of file plume.cc.

Here is the call graph for this function:

Member Data Documentation

◆ composition_models

std::vector<std::unique_ptr<Features::PlumeModels::Composition::Interface> > WorldBuilder::Features::Plume::composition_models
private

A vector containing all the pointers to the composition models. This vector is responsible for the features and has ownership over them. Therefore unique pointers are used.

See also
Features

Definition at line 144 of file plume.h.

◆ depths

std::vector<double> WorldBuilder::Features::Plume::depths
private

Definition at line 166 of file plume.h.

◆ eccentricities

std::vector<double> WorldBuilder::Features::Plume::eccentricities
private

Definition at line 168 of file plume.h.

◆ grains_models

std::vector<std::unique_ptr<Features::PlumeModels::Grains::Interface> > WorldBuilder::Features::Plume::grains_models
private

A vector containing all the pointers to the grains models. This vector is responsible for the features and has ownership over them. Therefore unique pointers are used.

See also
Features

Definition at line 160 of file plume.h.

◆ max_depth

double WorldBuilder::Features::Plume::max_depth
private

Definition at line 164 of file plume.h.

◆ min_depth

double WorldBuilder::Features::Plume::min_depth
private

Definition at line 163 of file plume.h.

◆ rotation_angles

std::vector<double> WorldBuilder::Features::Plume::rotation_angles
private

Definition at line 169 of file plume.h.

◆ semi_major_axis_lengths

std::vector<double> WorldBuilder::Features::Plume::semi_major_axis_lengths
private

Definition at line 167 of file plume.h.

◆ temperature_models

std::vector<std::unique_ptr<Features::PlumeModels::Temperature::Interface> > WorldBuilder::Features::Plume::temperature_models
private

A vector containing all the pointers to the temperature models. This vector is responsible for the features and has ownership over them. Therefore unique pointers are used.

See also
Features

Definition at line 136 of file plume.h.

◆ velocity_models

std::vector<std::unique_ptr<Features::PlumeModels::Velocity::Interface> > WorldBuilder::Features::Plume::velocity_models
private

A vector containing all the pointers to the grains models. This vector is responsible for the features and has ownership over them. Therefore unique pointers are used.

See also
Features

Definition at line 152 of file plume.h.


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