22 #ifndef _aspect_structured_data_h
23 #define _aspect_structured_data_h
128 void reinit(
const std::vector<std::string> &column_names,
131 const MPI_Comm mpi_communicator = MPI_COMM_SELF,
153 const MPI_Comm communicator);
164 load_netcdf(
const std::string &filename,
const std::vector<std::string> &data_column_names = {});
183 const MPI_Comm communicator);
200 const unsigned int component,
201 const bool crash_if_not_in_range =
false)
const;
214 const unsigned int component);
222 std::vector<std::string>
245 const std::vector<double> &
296 std::vector<std::unique_ptr<Function<dim>>>
data;
353 const std::string &default_directory,
354 const std::string &default_filename,
355 const std::string &subsection_name =
"Ascii data model");
362 const std::string &subsection_name =
"Ascii data model");
404 initialize (
const std::set<types::boundary_id> &boundary_ids,
405 const unsigned int components);
422 const unsigned int component)
const;
429 const unsigned int component)
const;
437 const unsigned int component)
const;
458 const std::string &default_directory,
459 const std::string &default_filename,
460 const std::string &subsection_name =
"Ascii data model",
461 const bool declare_time_dependent_parameters =
true);
478 const std::string &subsection_name =
"Ascii data model",
479 const bool parse_time_dependent_parameters =
true);
539 const bool reload_both_files);
585 const unsigned int component)
const;
593 const std::string &default_directory,
594 const std::string &default_filename,
595 const std::string &subsection_name =
"Ascii data model");
602 const std::string &subsection_name =
"Ascii data model");
609 std::unique_ptr<aspect::Utilities::StructuredDataLookup<dim>>
lookup;
616 std::unique_ptr<aspect::Utilities::StructuredDataLookup<3>>
slice_lookup;
660 const unsigned int component)
const;
669 const std::string &default_directory,
670 const std::string &default_filename,
671 const std::string &subsection_name =
"Ascii data model");
678 const std::string &subsection_name =
"Ascii data model");
733 const unsigned int component)
const;
741 std::vector<std::string>
758 const std::vector<double> &
789 std::unique_ptr<aspect::Utilities::StructuredDataLookup<1>>
lookup;
std::string data_directory
void parse_parameters(ParameterHandler &prm, const std::string &subsection_name="Ascii data model")
std::string data_file_name
static void declare_parameters(ParameterHandler &prm, const std::string &default_directory, const std::string &default_filename, const std::string &subsection_name="Ascii data model")
double get_data_component(const types::boundary_id boundary_indicator, const Point< dim > &position, const unsigned int component) const
virtual void initialize(const std::set< types::boundary_id > &boundary_ids, const unsigned int components)
static void declare_parameters(ParameterHandler &prm, const std::string &default_directory, const std::string &default_filename, const std::string &subsection_name="Ascii data model", const bool declare_time_dependent_parameters=true)
std::map< types::boundary_id, std::unique_ptr< aspect::Utilities::StructuredDataLookup< dim-1 > > > lookups
void end_time_dependence()
double get_maximum_component_value(const types::boundary_id boundary_indicator, const unsigned int component) const
std::map< types::boundary_id, std::unique_ptr< aspect::Utilities::StructuredDataLookup< dim-1 > > > old_lookups
int first_data_file_number
std::string create_filename(const int filenumber, const types::boundary_id boundary_id) const
double data_file_time_step
bool decreasing_file_order
void parse_parameters(ParameterHandler &prm, const std::string &subsection_name="Ascii data model", const bool parse_time_dependent_parameters=true)
void update_data(const types::boundary_id boundary_id, const bool reload_both_files)
Tensor< 1, dim-1 > vector_gradient(const types::boundary_id boundary_indicator, const Point< dim > &p, const unsigned int component) const
void parse_parameters(ParameterHandler &prm, const std::string &subsection_name="Ascii data model")
Tensor< 2, 3 > rotation_matrix
std::unique_ptr< aspect::Utilities::StructuredDataLookup< 3 > > slice_lookup
static void declare_parameters(ParameterHandler &prm, const std::string &default_directory, const std::string &default_filename, const std::string &subsection_name="Ascii data model")
virtual void initialize(const unsigned int components)
double get_data_component(const Point< dim > &position, const unsigned int component) const
std::unique_ptr< aspect::Utilities::StructuredDataLookup< dim > > lookup
std::vector< std::unique_ptr< aspect::Utilities::StructuredDataLookup< dim-1 > > > lookups
std::string interpolation_scheme
std::vector< std::string > data_file_names
double get_data_component(const Point< dim > &position, const unsigned int component) const
unsigned int number_of_layer_boundaries
virtual void initialize(const unsigned int components)
void parse_parameters(ParameterHandler &prm, const std::string &subsection_name="Ascii data model")
static void declare_parameters(ParameterHandler &prm, const std::string &default_directory, const std::string &default_filename, const std::string &subsection_name="Ascii data model")
std::vector< std::string > get_column_names() const
unsigned int maybe_get_column_index_from_name(const std::string &column_name) const
std::string get_column_name_from_index(const unsigned int column_index) const
const std::vector< double > & get_interpolation_point_coordinates() const
std::unique_ptr< aspect::Utilities::StructuredDataLookup< 1 > > lookup
double get_data_component(const Point< 1 > &position, const unsigned int component) const
unsigned int get_column_index_from_name(const std::string &column_name) const
virtual void initialize(const MPI_Comm communicator)
void load_ascii(const std::string &filename, const MPI_Comm communicator)
bool coordinate_values_are_equidistant
StructuredDataLookup(const unsigned int n_components, const double scale_factor)
double get_data(const Point< dim > &position, const unsigned int component, const bool crash_if_not_in_range=false) const
std::array< std::vector< double >, dim > coordinate_values
unsigned int get_number_of_coordinates(const unsigned int dimension) const
StructuredDataLookup(const double scale_factor)
bool has_equidistant_coordinates() const
TableIndices< dim > points_per_direction
double get_maximum_component_value(const unsigned int component) const
const std::vector< double > & get_interpolation_point_coordinates(const unsigned int dimension) const
TableIndices< dim > compute_table_indices(const TableIndices< dim > &sizes, const std::size_t idx) const
std::vector< std::unique_ptr< Function< dim > > > data
void load_netcdf(const std::string &filename, const std::vector< std::string > &data_column_names={})
void load_file(const std::string &filename, const MPI_Comm communicator)
std::vector< std::string > get_column_names() const
unsigned int get_column_index_from_name(const std::string &column_name) const
std::vector< std::string > data_component_names
void reinit(const std::vector< std::string > &column_names, std::vector< std::vector< double >> &&coordinate_values, std::vector< Table< dim, double >> &&data_table, const MPI_Comm mpi_communicator=MPI_COMM_SELF, const unsigned int root_process=numbers::invalid_unsigned_int)
std::vector< double > maximum_component_value
Tensor< 1, dim > get_gradients(const Point< dim > &position, const unsigned int component)
unsigned int n_components
std::string get_column_name_from_index(const unsigned int column_index) const
const double scale_factor
constexpr unsigned int invalid_unsigned_int