Loading [MathJax]/extensions/tex2jax.js
PISM, A Parallel Ice Sheet Model
2.2.2-d6b3a29ca committed by Constantine Khrulev on 2025-03-28
Toggle main menu visibility
Main Page
Related Pages
Namespaces
Namespace List
Namespace Members
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Functions
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
r
s
t
u
v
w
z
Variables
a
b
c
d
f
g
h
i
k
l
m
n
r
s
t
u
v
w
Typedefs
Enumerations
a
b
c
d
e
f
i
k
l
m
n
p
r
t
u
v
Enumerator
_
a
b
c
d
e
f
g
h
i
l
m
n
p
q
s
t
u
w
x
y
z
Classes
Class List
Class Index
Class Hierarchy
Class Members
All
:
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Functions
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Variables
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
a
c
d
f
g
h
l
m
p
s
v
w
Enumerations
Enumerator
c
d
e
f
h
i
j
m
n
o
p
r
s
t
w
y
Related Symbols
Files
File List
File Members
All
_
a
b
c
d
e
f
g
h
i
k
l
m
n
p
r
s
t
u
w
z
Functions
a
b
c
d
e
f
g
h
i
l
m
p
r
s
u
Variables
b
c
d
e
g
h
k
l
m
n
p
r
s
t
u
w
z
Typedefs
Macros
_
a
b
c
g
h
i
k
m
n
r
s
t
u
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Pages
Loading...
Searching...
No Matches
src
coupler
surface
Factory.hh
Go to the documentation of this file.
1
// Copyright (C) 2011, 2014, 2015, 2017, 2018, 2019, 2021, 2023 PISM Authors
2
//
3
// This file is part of PISM.
4
//
5
// PISM is free software; you can redistribute it and/or modify it under the
6
// terms of the GNU General Public License as published by the Free Software
7
// Foundation; either version 3 of the License, or (at your option) any later
8
// version.
9
//
10
// PISM is distributed in the hope that it will be useful, but WITHOUT ANY
11
// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
12
// FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
13
// details.
14
//
15
// You should have received a copy of the GNU General Public License
16
// along with PISM; if not, write to the Free Software
17
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
18
19
#ifndef PISM_SURFACE_FACTORY
20
#define PISM_SURFACE_FACTORY
21
22
#include "pism/coupler/SurfaceModel.hh"
23
#include "pism/coupler/util/PCFactory.hh"
24
25
namespace
pism
{
26
namespace
surface {
27
28
class
Factory
:
public
PCFactory
<SurfaceModel> {
29
public
:
30
typedef
std::shared_ptr<atmosphere::AtmosphereModel>
AtmospherePtr
;
31
32
Factory
(std::shared_ptr<const Grid>
g
,
AtmospherePtr
input);
33
34
~Factory
() =
default
;
35
36
private
:
37
// Creator for a specific model class M.
38
template
<
class
M>
39
class
SurfaceModelCreator
:
public
ModelCreator
{
40
public
:
41
SurfaceModelCreator
(
AtmospherePtr
input) :
m_input
(input) {
42
// empty
43
}
41
SurfaceModelCreator
(
AtmospherePtr
input) :
m_input
(input) {
…
}
44
45
std::shared_ptr<SurfaceModel>
create
(std::shared_ptr<const Grid> grid) {
46
return
std::make_shared<M>(grid,
m_input
);
47
}
45
std::shared_ptr<SurfaceModel>
create
(std::shared_ptr<const Grid> grid) {
…
}
48
49
private
:
50
AtmospherePtr
m_input
;
51
};
39
class
SurfaceModelCreator
:
public
ModelCreator
{
…
};
52
53
template
<
class
M>
54
void
add_surface_model
(
const
std::string &name) {
55
PCFactory<SurfaceModel>::m_models
[name] = std::make_shared<SurfaceModelCreator<M> >(
m_input
);
56
}
54
void
add_surface_model
(
const
std::string &name) {
…
}
57
58
AtmospherePtr
m_input
;
59
};
28
class
Factory
:
public
PCFactory
<SurfaceModel> {
…
};
60
}
// end of namespace surface
61
}
// end of namespace pism
62
63
#endif
/* PISM_SURFACE_FACTORY */
ModelCreator
pism::PCFactory
Definition
PCFactory.hh:34
pism::surface::Factory::SurfaceModelCreator::m_input
AtmospherePtr m_input
Definition
Factory.hh:50
pism::surface::Factory::SurfaceModelCreator::SurfaceModelCreator
SurfaceModelCreator(AtmospherePtr input)
Definition
Factory.hh:41
pism::surface::Factory::SurfaceModelCreator::create
std::shared_ptr< SurfaceModel > create(std::shared_ptr< const Grid > grid)
Definition
Factory.hh:45
pism::surface::Factory::SurfaceModelCreator
Definition
Factory.hh:39
pism::surface::Factory::Factory
Factory(std::shared_ptr< const Grid > g, AtmospherePtr input)
pism::surface::Factory::AtmospherePtr
std::shared_ptr< atmosphere::AtmosphereModel > AtmospherePtr
Definition
Factory.hh:30
pism::surface::Factory::add_surface_model
void add_surface_model(const std::string &name)
Definition
Factory.hh:54
pism::surface::Factory::m_input
AtmospherePtr m_input
Definition
Factory.hh:58
pism::surface::Factory::~Factory
~Factory()=default
pism::surface::Factory
Definition
Factory.hh:28
pism::g
static const double g
Definition
exactTestP.cc:36
pism
Definition
AgeColumnSystem.cc:23
Generated by
1.9.8