World Builder  1.1.0-pre
A geodynamic initial conditions generator
segment.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2018-2024 by the authors of the World Builder code.
3 
4  This file is part of the World Builder.
5 
6  This program is free software: you can redistribute it and/or modify
7  it under the terms of the GNU Lesser General Public License as published
8  by the Free Software Foundation, either version 2 of the License, or
9  (at your option) any later version.
10 
11  This program is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU Lesser General Public License for more details.
15 
16  You should have received a copy of the GNU Lesser General Public License
17  along with this program. If not, see <https://www.gnu.org/licenses/>.
18 */
19 
20 #ifndef WORLD_BUILDER_OBJECTS_SEGMENT_H
21 #define WORLD_BUILDER_OBJECTS_SEGMENT_H
22 
23 
25 
26 
27 namespace WorldBuilder
28 {
29  class Parameters;
30 
31  namespace Objects
32  {
33 
37  template <class A, class B, class C, class D>
38  class Segment
39  {
40  public:
41 
45  Segment(const double default_length,
46  const WorldBuilder::Point<2> &default_thickness,
47  const WorldBuilder::Point<2> &default_top_truncation,
48  const WorldBuilder::Point<2> &default_angle,
49  std::vector<std::shared_ptr<A> > temperature_systems,
50  std::vector<std::shared_ptr<B> > composition_systems,
51  std::vector<std::shared_ptr<C> > grains_systems,
52  std::vector<std::shared_ptr<D> > velocity_systems);
53 
57  Segment(Segment const &other);
58 
62  ~Segment();
63 
64  double value_length;
69  std::vector<std::shared_ptr<A> > temperature_systems;
70  std::vector<std::shared_ptr<B> > composition_systems;
71  std::vector<std::shared_ptr<C> > grains_systems;
72  std::vector<std::shared_ptr<D> > velocity_systems;
73 
74  protected:
75  private:
76 
77  };
78  } // namespace Objects
79 } // namespace WorldBuilder
80 
81 #endif
std::vector< std::shared_ptr< B > > composition_systems
Definition: segment.h:70
std::vector< std::shared_ptr< D > > velocity_systems
Definition: segment.h:72
WorldBuilder::Point< 2 > value_thickness
Definition: segment.h:66
WorldBuilder::Point< 2 > value_top_truncation
Definition: segment.h:67
WorldBuilder::Point< 2 > value_angle
Definition: segment.h:68
std::vector< std::shared_ptr< C > > grains_systems
Definition: segment.h:71
std::vector< std::shared_ptr< A > > temperature_systems
Definition: segment.h:69
Segment(const double default_length, const WorldBuilder::Point< 2 > &default_thickness, const WorldBuilder::Point< 2 > &default_top_truncation, const WorldBuilder::Point< 2 > &default_angle, std::vector< std::shared_ptr< A > > temperature_systems, std::vector< std::shared_ptr< B > > composition_systems, std::vector< std::shared_ptr< C > > grains_systems, std::vector< std::shared_ptr< D > > velocity_systems)
Definition: segment.cc:74