PRISMS-PF Manual
Loading...
Searching...
No Matches
read_field_base.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: © 2026 PRISMS Center at the University of Michigan
2// SPDX-License-Identifier: GNU Lesser General Public Version 2.1
3
4#pragma once
5
6#include <deal.II/base/exceptions.h>
7#include <deal.II/base/point.h>
8#include <deal.II/lac/vector.h>
9
10#include <prismspf/core/types.h>
11
13
15
16#include <filesystem>
17
19
20template <unsigned int dim, typename number>
22{
23public:
27 ReadFieldBase(const InitialConditionFile &_ic_file,
28 const SpatialDiscretization<dim> &_spatial_discretization);
29
33 virtual ~ReadFieldBase() = default;
34
38 ReadFieldBase(const ReadFieldBase &read_base) = delete;
39
44 operator=(const ReadFieldBase &read_base) = delete;
45
49 ReadFieldBase(ReadFieldBase &&read_base) noexcept = delete;
50
55 operator=(ReadFieldBase &&read_base) noexcept = delete;
56
60 virtual void
62
66 virtual number
67 get_scalar_value(const dealii::Point<dim> &point, const std::string &scalar_name) = 0;
68
72 virtual dealii::Vector<number>
73 get_vector_value(const dealii::Point<dim> &point, const std::string &vector_name) = 0;
74
75protected:
76 // info for file/discretization passed by dependency injection, class is non-copyable
81
86};
87
88template <unsigned int dim, typename number>
90 const InitialConditionFile &_ic_file,
91 const SpatialDiscretization<dim> &_spatial_discretization)
92 : spatial_discretization(_spatial_discretization)
93 , ic_file(_ic_file)
94{
95 // Check that the filename exists
96 if (!std::filesystem::exists(this->ic_file.file_name))
97 {
98 AssertThrow(false,
99 dealii::ExcMessage("File " + this->ic_file.file_name +
100 " does not exist"));
101 }
102}
103
104PRISMS_PF_END_NAMESPACE
ReadFieldBase & operator=(const ReadFieldBase &read_base)=delete
Copy assignment.
const InitialConditionFile & ic_file
Initial condition file object.
Definition read_field_base.h:85
virtual ~ReadFieldBase()=default
Destructor.
virtual number get_scalar_value(const dealii::Point< dim > &point, const std::string &scalar_name)=0
Get scalar value for a given point.
ReadFieldBase(const InitialConditionFile &_ic_file, const SpatialDiscretization< dim > &_spatial_discretization)
Constructor.
Definition read_field_base.h:89
ReadFieldBase & operator=(ReadFieldBase &&read_base) noexcept=delete
Move assignment.
const SpatialDiscretization< dim > & spatial_discretization
Spatial discretization object.
Definition read_field_base.h:80
ReadFieldBase(const ReadFieldBase &read_base)=delete
Copy constructor.
ReadFieldBase(ReadFieldBase &&read_base) noexcept=delete
Move constructor.
virtual dealii::Vector< number > get_vector_value(const dealii::Point< dim > &point, const std::string &vector_name)=0
Get vector value for a given point.
virtual void print_file()=0
Print the input file for debugging.
Definition conditional_ostreams.cc:20
Initial condition file.
Definition io_parameters.h:320
Struct that holds spatial discretization parameters.
Definition spatial_discretization.h:308