Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions src/soca/ExplicitDiffusion/ExplicitDiffusion.F90
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,10 @@ module soca_explicitdiffusion_c

! ------------------------------------------------------------------------------

subroutine soca_explicitdiffusion_setup_c(c_key_self, c_geom) bind(c, name='soca_explicitdiffusion_setup_f90')
subroutine soca_explicitdiffusion_setup_c(c_key_self, c_geom, c_conf) bind(c, name='soca_explicitdiffusion_setup_f90')
integer(c_int), intent(inout) :: c_key_self
integer(c_int), intent(in) :: c_geom
type(c_ptr), intent(in) :: c_conf

type(soca_diffusion), pointer :: self
type(soca_geom), pointer :: geom
Expand All @@ -44,7 +45,7 @@ subroutine soca_explicitdiffusion_setup_c(c_key_self, c_geom) bind(c, name='soca

call soca_geom_registry%get(c_geom, geom)

call self%init(geom)
call self%init(geom, fckit_configuration(c_conf))
end subroutine

! ------------------------------------------------------------------------------
Expand Down
3 changes: 2 additions & 1 deletion src/soca/ExplicitDiffusion/ExplicitDiffusion.cc
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,8 @@ ExplicitDiffusion::ExplicitDiffusion(
geom_.reset(new Geometry(params_.geometry.value(), geometryData.comm()));

// setup the fortran code
soca_explicitdiffusion_setup_f90(keyFortran_, geom_->toFortran());
eckit::LocalConfiguration conf = params_.toConfiguration();
soca_explicitdiffusion_setup_f90(keyFortran_, geom_->toFortran(), &conf);

vars_ = params.activeVars.value().get_value_or(centralVars);
}
Expand Down
3 changes: 2 additions & 1 deletion src/soca/ExplicitDiffusion/ExplicitDiffusionFortran.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@ namespace soca {
typedef int F90explicitdiffusion;

extern "C" {
void soca_explicitdiffusion_setup_f90(F90explicitdiffusion &, const F90geom &);
void soca_explicitdiffusion_setup_f90(F90explicitdiffusion &, const F90geom &,
const eckit::Configuration * const &);
void soca_explicitdiffusion_calibrate_f90(const F90explicitdiffusion &,
const eckit::Configuration * const &);
void soca_explicitdiffusion_multiply_f90(const F90explicitdiffusion &,
Expand Down
5 changes: 4 additions & 1 deletion src/soca/ExplicitDiffusion/ExplicitDiffusionParameters.h
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
#pragma once

#include <string>
#include <vector>

#include "saber/blocks/SaberBlockParametersBase.h"

Expand All @@ -27,6 +28,7 @@ class ExplicitDiffusionIOParameters : public oops::Parameters {
class ExplicitDiffusionScalesParameters : public oops::Parameters {
OOPS_CONCRETE_PARAMETERS(ExplicitDiffusionScalesParameters, oops::Parameters)
public:
oops::RequiredParameter<std::string> name{"name", this};
oops::OptionalParameter<double> fixedValue{"fixed value", this};
oops::OptionalParameter<ExplicitDiffusionIOParameters> fromFile{"from file", this};
oops::Parameter<bool> asGaussian{"as gaussian", false, this};
Expand All @@ -38,7 +40,7 @@ class ExplicitDiffusionCalibrationParameters : public oops::Parameters {
OOPS_CONCRETE_PARAMETERS(ExplicitDiffusionCalibrationParameters, oops::Parameters)
public:
oops::RequiredParameter<eckit::LocalConfiguration> normalization{"normalization", this};
oops::RequiredParameter<ExplicitDiffusionScalesParameters> scales{"scales", this};
oops::RequiredParameter<std::vector<ExplicitDiffusionScalesParameters> > scales{"scales", this};
oops::OptionalParameter<ExplicitDiffusionIOParameters> write {"write", this};
};

Expand All @@ -51,6 +53,7 @@ class ExplicitDiffusionParameters : public saber::SaberBlockParametersBase {
oops::OptionalParameter<ExplicitDiffusionCalibrationParameters>
calibration{"calibration", this};
oops::RequiredParameter<eckit::LocalConfiguration> geometry{"geometry", this};
oops::OptionalParameter<eckit::LocalConfiguration> groups{"groups", this};

oops::Variables mandatoryActiveVars() const override {return oops::Variables();}
};
Expand Down
Loading