OOPS
ObsLocalization.h
Go to the documentation of this file.
1
/*
2
* (C) Copyright 2017-2020 UCAR
3
*
4
* This software is licensed under the terms of the Apache Licence Version 2.0
5
* which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
6
*/
7
8
#ifndef OOPS_INTERFACE_OBSLOCALIZATION_H_
9
#define OOPS_INTERFACE_OBSLOCALIZATION_H_
10
11
#include <memory>
12
#include <string>
13
14
#include "eckit/config/LocalConfiguration.h"
15
#include "
oops/base/ObsLocalizationBase.h
"
16
#include "
oops/interface/ObsSpace.h
"
17
#include "
oops/interface/ObsVector.h
"
18
#include "oops/util/Logger.h"
19
20
namespace
oops
{
21
22
// -----------------------------------------------------------------------------
23
24
template
<
typename
OBS,
typename
LOC>
25
class
ObsLocalization
:
public
ObsLocalizationBase
<OBS> {
26
typedef
ObsSpace<OBS>
ObsSpace_
;
27
typedef
ObsVector<OBS>
ObsVector_
;
28
29
public
:
30
static
const
std::string
classname
() {
return
"oops::ObsLocalization"
;}
31
32
ObsLocalization
(
const
eckit::Configuration &,
const
ObsSpace_
&);
33
~ObsLocalization
();
34
35
void
multiply
(
ObsVector_
&)
const override
;
36
37
private
:
38
void
print
(std::ostream &)
const override
;
39
40
std::unique_ptr<LOC>
obsloc_
;
41
};
42
43
// -----------------------------------------------------------------------------
44
45
template
<
typename
OBS,
typename
LOC>
46
ObsLocalization<OBS, LOC>::ObsLocalization
(
const
eckit::Configuration & conf,
47
const
ObsSpace_
& os)
48
: obsloc_()
49
{
50
Log::trace() <<
"ObsLocalization<OBS, LOC>::ObsLocalization Configuration starting"
<<
51
std::endl;
52
util::Timer timer(
classname
(),
"ObsLocalization"
);
53
obsloc_
.reset(
new
LOC(conf, os.
obsspace
()));
54
Log::trace() <<
"ObsLocalization<OBS, LOC>::ObsLocalization Configuration done"
<< std::endl;
55
}
56
57
// -----------------------------------------------------------------------------
58
59
template
<
typename
OBS,
typename
LOC>
60
ObsLocalization<OBS, LOC>::~ObsLocalization
() {
61
Log::trace() <<
"ObsLocalization<OBS, LOC>::~ObsLocalization starting"
<< std::endl;
62
util::Timer timer(classname(),
"~ObsLocalization"
);
63
obsloc_.reset();
64
Log::trace() <<
"ObsLocalization<OBS, LOC>::~ObsLocalization done"
<< std::endl;
65
}
66
67
// -----------------------------------------------------------------------------
68
69
template
<
typename
OBS,
typename
LOC>
70
void
ObsLocalization<OBS, LOC>::multiply
(
ObsVector_
& dy)
const
{
71
Log::trace() <<
"ObsLocalization<OBS, LOC>:: preProcess starting"
<< std::endl;
72
util::Timer timer(classname(),
"preProcess"
);
73
obsloc_->multiply(dy.
obsvector
());
74
Log::trace() <<
"ObsLocalization<OBS, LOC>:: preProcess done"
<< std::endl;
75
}
76
77
// -----------------------------------------------------------------------------
78
79
template
<
typename
OBS,
typename
LOC>
80
void
ObsLocalization<OBS, LOC>::print
(std::ostream & os)
const
{
81
os <<
"ObsLocalization "
<< *obsloc_;
82
}
83
84
// -----------------------------------------------------------------------------
85
86
}
// namespace oops
87
88
#endif // OOPS_INTERFACE_OBSLOCALIZATION_H_
oops::ObsVector::obsvector
ObsVector_ & obsvector()
Interfacing.
Definition:
oops/interface/ObsVector.h:54
oops::ObsLocalizationBase
Base class for generic localizations.
Definition:
ObsLocalizationBase.h:29
oops
The namespace for the main oops code.
Definition:
ErrorCovarianceL95.cc:22
oops::ObsLocalization::ObsLocalization
ObsLocalization(const eckit::Configuration &, const ObsSpace_ &)
Definition:
ObsLocalization.h:46
ObsLocalizationBase.h
oops::ObsSpace
Definition:
oops/interface/ObsSpace.h:42
oops::ObsLocalization::multiply
void multiply(ObsVector_ &) const override
Definition:
ObsLocalization.h:70
oops::ObsLocalization::print
void print(std::ostream &) const override
Definition:
ObsLocalization.h:80
oops::ObsSpace::obsspace
ObsSpace_ & obsspace() const
Interfacing.
Definition:
oops/interface/ObsSpace.h:61
oops::ObsLocalization::classname
static const std::string classname()
Definition:
ObsLocalization.h:30
oops::ObsVector
Definition:
oops/interface/ObsSpace.h:36
oops::ObsLocalization
Definition:
ObsLocalization.h:25
oops::ObsLocalization::ObsVector_
ObsVector< OBS > ObsVector_
Definition:
ObsLocalization.h:27
oops::ObsLocalization::obsloc_
std::unique_ptr< LOC > obsloc_
Definition:
ObsLocalization.h:40
oops::ObsLocalization::ObsSpace_
ObsSpace< OBS > ObsSpace_
Definition:
ObsLocalization.h:26
ObsSpace.h
ObsVector.h
oops::ObsLocalization::~ObsLocalization
~ObsLocalization()
Definition:
ObsLocalization.h:60
fv3-bundle
oops
src
oops
interface
ObsLocalization.h
Generated on Sun Oct 25 2020 12:42:58 for OOPS by
1.8.18