OOPS
ObsLocGC99.cc
Go to the documentation of this file.
1 /*
2  * (C) Copyright 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 #include "lorenz95/ObsLocGC99.h"
9 
10 #include "eckit/config/Configuration.h"
11 #include "eckit/exception/Exceptions.h"
12 
13 #include "lorenz95/ObsTableView.h"
14 #include "lorenz95/ObsVec1D.h"
15 
16 #include "oops/generic/gc99.h"
18 
19 // -----------------------------------------------------------------------------
20 namespace lorenz95 {
21 static oops::ObsLocalizationMaker<L95ObsTraits,
23 
24 // -----------------------------------------------------------------------------
25 
26 ObsLocGC99::ObsLocGC99(const eckit::Configuration & config, const ObsTableView & obsdb)
27  : obsdb_(obsdb),
28  rscale_(config.getDouble("lengthscale"))
29 {
30 }
31 
32 // -----------------------------------------------------------------------------
33 
35 
36 // -----------------------------------------------------------------------------
37 
38 void ObsLocGC99::multiply(ObsVec1D & dy) const {
39  const std::vector<double> & obsdist = obsdb_.obsdist();
40  double gc;
41  for (unsigned int ii=0; ii < dy.nobs(); ++ii) {
42  gc = oops::gc99(obsdist[ii]/rscale_);
43  dy[ii] = dy[ii]*gc;
44  }
45 }
46 
47 // -----------------------------------------------------------------------------
48 
49 void ObsLocGC99::print(std::ostream & os) const {
50  os << "ObsLocGC99::print not implemented";
51 }
52 
53 // -----------------------------------------------------------------------------
54 
55 } // namespace lorenz95
lorenz95::ObsLocGC99::~ObsLocGC99
~ObsLocGC99()
Definition: ObsLocGC99.cc:34
ObsTableView.h
lorenz95::ObsLocGC99::rscale_
const double rscale_
Definition: ObsLocGC99.h:40
lorenz95::ObsVec1D::nobs
unsigned int nobs() const
Definition: ObsVec1D.cc:159
lorenz95::ObsTableView::obsdist
const std::vector< double > & obsdist() const
Definition: ObsTableView.h:69
lorenz95::ObsLocGC99::obsdb_
const ObsTableView & obsdb_
Definition: ObsLocGC99.h:39
lorenz95::makerGC_
static oops::ObsLocalizationMaker< L95ObsTraits, oops::ObsLocalization< L95ObsTraits, ObsLocGC99 > > makerGC_("Gaspari-Cohn")
lorenz95::ObsLocGC99::multiply
void multiply(ObsVec1D &) const
Definition: ObsLocGC99.cc:38
oops::gc99
double gc99(const double &distnorm)
Definition: oops/generic/gc99.cc:15
lorenz95::ObsVec1D
Vector in observation space.
Definition: ObsVec1D.h:34
oops::ObsLocalization
Definition: ObsLocalization.h:25
lorenz95::ObsLocGC99::ObsLocGC99
ObsLocGC99(const eckit::Configuration &, const ObsTableView &)
Definition: ObsLocGC99.cc:26
ObsVec1D.h
ObsLocGC99.h
lorenz95::ObsLocGC99::print
void print(std::ostream &) const
Definition: ObsLocGC99.cc:49
gc99.h
ObsLocalization.h
lorenz95::ObsTableView
A Simple Observation Data Handler.
Definition: ObsTableView.h:38
oops::ObsLocalizationMaker
Definition: ObsLocalizationBase.h:61
lorenz95
The namespace for the L95 model.
Definition: l95/src/lorenz95/AnalyticInit.cc:17