Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
92 commits
Select commit Hold shift + click to select a range
18396a4
Initial commit
DavidNew-NOAA Jan 14, 2025
b33b4d9
Update oops hash
DavidNew-NOAA Jan 15, 2025
74a32ae
Save progress
DavidNew-NOAA Jan 15, 2025
42f2113
Update hashes
DavidNew-NOAA Jan 17, 2025
0d2659a
Redo some things
DavidNew-NOAA Jan 22, 2025
ef5ebdd
Merge branch 'develop' into feature/calcanl
DavidNew-NOAA Jan 22, 2025
9b48d77
Update jcb-gdas hash
DavidNew-NOAA Jan 22, 2025
b47d2bd
Debug
DavidNew-NOAA Jan 23, 2025
2696d79
Merge branch 'develop' into feature/calcanl
DavidNew-NOAA Jan 23, 2025
342524e
Save progress
DavidNew-NOAA Jan 27, 2025
c849626
Update
DavidNew-NOAA Jan 28, 2025
f89014b
Update oops hash
DavidNew-NOAA Jan 28, 2025
fa0626c
Merge branch 'develop' into feature/calcanl
DavidNew-NOAA Jan 28, 2025
e481f21
Merge branch 'develop' into feature/calcanl
DavidNew-NOAA Jan 29, 2025
9fc03ba
Update oops hash
DavidNew-NOAA Jan 29, 2025
7e6f070
Update to new stable build on 20250130
RussTreadon-NOAA Jan 30, 2025
df64b34
Save progress before redoing some stuff
DavidNew-NOAA Jan 30, 2025
079c2a7
Merge branch 'develop' into feature/calcanl
DavidNew-NOAA Jan 30, 2025
20d6ca1
Revert some stuff
DavidNew-NOAA Jan 30, 2025
df000b9
Update jcb-gdas hash
DavidNew-NOAA Jan 30, 2025
7e8585b
Add aero and snow analcalc feature
DavidNew-NOAA Jan 30, 2025
3ade343
Revert OOPS hash
DavidNew-NOAA Jan 30, 2025
5d195d2
Coding norms
DavidNew-NOAA Jan 31, 2025
7170928
Coding norms
DavidNew-NOAA Jan 31, 2025
48c2244
Update to new stable build on 20250131
RussTreadon-NOAA Jan 31, 2025
cefa887
Merge branch 'develop' into feature/stable-nightly
RussTreadon-NOAA Jan 31, 2025
e6eafb0
Update to new stable build on 20250201
RussTreadon-NOAA Feb 1, 2025
59bfb04
Debug
DavidNew-NOAA Feb 4, 2025
f7d9c7d
Update to new stable build on 20250204
RussTreadon-NOAA Feb 4, 2025
bd9aedf
Merge branch 'develop' into feature/stable-nightly
RussTreadon-NOAA Feb 5, 2025
b0e8f3f
Update to new stable build on 20250205
RussTreadon-NOAA Feb 5, 2025
68f12a2
Merge branch 'develop' into feature/stable-nightly
RussTreadon-NOAA Feb 6, 2025
f9c7132
Update to new stable build on 20250207
RussTreadon-NOAA Feb 7, 2025
09229dd
Remove unnecessary feature
DavidNew-NOAA Feb 7, 2025
fa121bb
Merge branch 'develop' into feature/calcanl
DavidNew-NOAA Feb 7, 2025
47db112
Merge branch 'develop' into feature/stable-nightly
RussTreadon-NOAA Feb 8, 2025
962e7a9
Some renaming in ecen app
DavidNew-NOAA Feb 9, 2025
99cd5b1
Merge branch 'develop' into feature/calcanl
DavidNew-NOAA Feb 9, 2025
166cad4
Final revisions
DavidNew-NOAA Feb 10, 2025
c306748
Update to new stable build on 20250211
RussTreadon-NOAA Feb 11, 2025
5e7e1ae
Address reviewer comments
DavidNew-NOAA Feb 12, 2025
55304f0
Create fv3jedi_add_increments application
DavidNew-NOAA Feb 12, 2025
ee1b0b7
Move back line to its proper place
DavidNew-NOAA Feb 12, 2025
a3c5a69
Set default of jcb iau times
DavidNew-NOAA Feb 12, 2025
ea2ef17
update externals when updating JEDI hashes (#1495)
RussTreadon-NOAA Feb 13, 2025
b2c6d9b
Update to new stable build on 20250213
RussTreadon-NOAA Feb 13, 2025
5d24a63
Merge branch 'develop' into feature/stable-nightly
RussTreadon-NOAA Feb 14, 2025
9110afa
Update jcb-gdas hash
DavidNew-NOAA Feb 14, 2025
8b86161
Merge branch 'develop' into feature/calcanl
DavidNew-NOAA Feb 14, 2025
2036fa8
More revisions
DavidNew-NOAA Feb 14, 2025
6bcd172
Debug
DavidNew-NOAA Feb 14, 2025
9443549
Merge branch 'develop' into feature/stable-nightly
RussTreadon-NOAA Feb 15, 2025
ce071de
Update to new stable build on 20250215
RussTreadon-NOAA Feb 15, 2025
0c143e0
Update to new stable build on 20250219
RussTreadon-NOAA Feb 19, 2025
264845d
Merge branch 'develop' into feature/stable-nightly
RussTreadon-NOAA Feb 20, 2025
d1a30f9
Update to new stable build on 20250220
RussTreadon-NOAA Feb 20, 2025
cfcddd5
Merge branch 'develop' into feature/calcanl
DavidNew-NOAA Feb 20, 2025
3b4cd55
Rename ensemble recentering application
DavidNew-NOAA Feb 20, 2025
0e14931
Merge branch 'develop' into feature/stable-nightly
RussTreadon-NOAA Feb 20, 2025
b8da549
Update
DavidNew-NOAA Feb 20, 2025
bf011d5
Update to soca changes that significantly improve memory/runtime
Feb 20, 2025
800ed1d
Merge branch 'feature/update_for_soca' into feature/stable-nightly (#…
RussTreadon-NOAA Feb 21, 2025
bba397d
revert sorc/soca back to hash 6ca1631
RussTreadon-NOAA Feb 21, 2025
c1e5feb
Merge branch 'develop' into feature/stable-nightly
RussTreadon-NOAA Feb 21, 2025
152d5f4
Merge branch 'develop' into feature/calcanl
DavidNew-NOAA Feb 21, 2025
e9f3e15
Merge branch 'feature/stable-nightly' into feature/calcanl
DavidNew-NOAA Feb 21, 2025
ee30030
Update jcb-gdas
DavidNew-NOAA Feb 21, 2025
d0f04ac
Update oops hash
DavidNew-NOAA Feb 21, 2025
523b97b
Update to new stable build on 20250221
RussTreadon-NOAA Feb 21, 2025
b89ec5f
Merge branch 'feature/stable-nightly' into feature/calcanl
DavidNew-NOAA Feb 21, 2025
1cc2c4b
Update
DavidNew-NOAA Feb 24, 2025
f620048
Merge branch 'develop' into feature/calcanl
DavidNew-NOAA Feb 24, 2025
3d9eab8
Update jcb-gdas hash
DavidNew-NOAA Feb 24, 2025
a7e0bb8
Update JCB gdas hash
DavidNew-NOAA Feb 24, 2025
ab249d3
Update
DavidNew-NOAA Feb 25, 2025
31f41af
Remove old bespoke add increment app and add ensemble add increment app
DavidNew-NOAA Feb 25, 2025
17849e7
Finishing up
DavidNew-NOAA Feb 26, 2025
8d614f6
Use develop oops hash for convenience for now
DavidNew-NOAA Feb 26, 2025
7a63f68
Merge branch 'develop' into feature/calcanl
DavidNew-NOAA Feb 26, 2025
80d644a
Update jcb-gdas hash
DavidNew-NOAA Feb 26, 2025
f8c4a68
Add AddIncrement option to gdas.x
DavidNew-NOAA Feb 27, 2025
c11a97e
Merge branch 'develop' into feature/calcanl
DavidNew-NOAA Feb 27, 2025
1c44dd6
Update oops hash
DavidNew-NOAA Feb 28, 2025
1a34b36
Merge branch 'develop' into feature/calcanl
DavidNew-NOAA Mar 4, 2025
d9c0986
Update jcb-gdas hash
DavidNew-NOAA Mar 5, 2025
0272488
Merge branch 'feature/calcanl' of https://github.com/NOAA-EMC/GDASApp…
DavidNew-NOAA Mar 5, 2025
d686309
Merge branch 'develop' into feature/calcanl
DavidNew-NOAA Mar 5, 2025
e08c7e1
Address reviewer comments
DavidNew-NOAA Mar 6, 2025
e725bc4
Address reviewer comments
DavidNew-NOAA Mar 7, 2025
c6d3ad8
Merge branch 'develop' into feature/calcanl
DavidNew-NOAA Mar 7, 2025
e2ee89d
Update jcb-gdas hash
DavidNew-NOAA Mar 10, 2025
11eca7f
Small update
DavidNew-NOAA Mar 10, 2025
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: 5 additions & 0 deletions mains/gdas.cc
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
#include "ufo/instantiateObsFilterFactory.h"
#include "ufo/ObsTraits.h"

#include "oops/runs/AddIncrement.h"
#include "oops/runs/ConvertToStructuredGrid.h"
#include "oops/runs/ConvertState.h"
#include "oops/runs/EnsMeanAndVariance.h"
Expand Down Expand Up @@ -54,6 +55,9 @@ int runApp(int argc, char** argv, const std::string traits, const std::string ap
// Define a map from app names to lambda functions that create unique_ptr to Applications
std::map<std::string, std::function<std::unique_ptr<oops::Application>()>> apps;

apps["addincrement"] = []() {
return std::make_unique<oops::AddIncrement<Traits>>();
};
apps["converttostructuredgrid"] = []() {
return std::make_unique<oops::ConvertToStructuredGrid<Traits>>();
};
Expand Down Expand Up @@ -104,6 +108,7 @@ int main(int argc, char ** argv) {
// Check that the application is recognized
// ----------------------------------------
const std::set<std::string> validApps = {
"addincrement",
"converttostructuredgrid",
"convertstate",
"ensmean",
Expand Down
2 changes: 2 additions & 0 deletions parm/aero/jcb-base.yaml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,8 @@ aero_npx_clim_b: {{ npx_clim_b | default(49, true) }}
aero_npy_clim_b: {{ npy_clim_b | default(49, true) }}
aero_npz_clim_b: {{ npz_anl | default(127, true) }}

aero_variational_history_prefix: "{{ GPREFIX }}"

aero_fv3jedi_files_path: ./fv3jedi # Ideally this would be {{DATA}}/fv3jedi but FMS

# Background
Expand Down
12 changes: 9 additions & 3 deletions parm/atm/jcb-base.yaml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ app_path_observation_chronicle: "{{PARMgfs}}/gdas/jcb-gdas/observation_chronicle
#final_increment_file: final_increment_gaussian
final_increment_file: atmosphere_final_increment_cubed_sphere
output_ensemble_increments_file: atmosphere_output_ensemble_increments_cubed_sphere
posterior_output_file: atmosphere_posterior_output_cubed_sphere
model_file: atmosphere_model_pseudo
initial_condition_file: atmosphere_background # Initial conditions for 4D apps is background
background_error_file: "{{BERROR_YAML}}"
Expand Down Expand Up @@ -55,14 +56,18 @@ atmosphere_number_ensemble_members: {{ NMEM_ENS | default(1, true) }}
atmosphere_layout_gsib_x: {{ layout_gsib_x | default(1, true) }}
atmosphere_layout_gsib_y: {{ layout_gsib_y | default(1, true) }}


# Forecasting
atmosphere_forecast_timestep: "{{ BKG_TSTEP }}"

# Write final increment on Guassian grid in variational
atmosphere_final_increment_prefix: "./anl/atminc."

atmosphere_variational_history_prefix: "{{GPREFIX}}"
atmosphere_variational_analysis_prefix: "{{APREFIX}}"

# IAU hours
atmosphere_iau_hours: {{ IAUFHRS }}
atmosphere_iau_times_iso: {{ iau_times_iso | default([current_cycle | to_isotime], true) }}

# Observation things
# ------------------
Expand Down Expand Up @@ -125,7 +130,7 @@ inflation_mult: 1.0

# Driver
driver_update_obs_config_with_geometry_info: true
driver_save_posterior_mean: false
driver_save_posterior_mean: true
driver_save_posterior_ensemble: false
driver_save_prior_mean: false
driver_save_posterior_mean_increment: false
Expand All @@ -138,4 +143,5 @@ distribution_type: Halo
atmosphere_ensemble_increment_prefix: "./anl/mem%{member}%/atminc."
atmosphere_posterior_output_gaussian: "./mem%{member}%/atmanl."

atmosphere_ensemble_history_prefix: "enkf{{GPREFIX}}"
atmosphere_ensemble_history_prefix: "{{ GPREFIX_ENS }}"
atmosphere_ensemble_analysis_prefix: "{{ APREFIX_ENS }}"
2 changes: 2 additions & 0 deletions parm/snow/jcb-base.yaml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,8 @@ snow_npx_anl: {{ npx_ges | default(49, true) }}
snow_npy_anl: {{ npy_ges | default(49, true) }}
snow_npz_anl: {{ npz_ges | default(127, true) }}

snow_variational_history_prefix: "{{ GPREFIX }}"

snow_fv3jedi_files_path: ./fv3jedi # Ideally this would be {{DATA}}/fv3jedi but FMS
snow_orog_files_path: "{{ FIXgfs }}/orog/{{ CASE }}"
snow_orog_prefix: "{{ CASE }}.mx{{ OCNRES }}"
Expand Down
12 changes: 12 additions & 0 deletions utils/fv3jedi/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,15 @@ ecbuild_add_executable( TARGET fv3jedi_fv3inc.x
SOURCES fv3jedi_fv3inc.cc fv3jedi_fv3inc.h)
target_compile_features( fv3jedi_fv3inc.x PUBLIC cxx_std_17)
target_link_libraries( fv3jedi_fv3inc.x PUBLIC NetCDF::NetCDF_CXX oops fv3jedi)

# Correction increment calculation (for ensemble recentering)
ecbuild_add_executable( TARGET fv3jedi_correction_increment.x
SOURCES fv3jedi_correction_increment.cc fv3jedi_correction_increment.h)
target_compile_features( fv3jedi_correction_increment.x PUBLIC cxx_std_17)
target_link_libraries( fv3jedi_correction_increment.x PUBLIC NetCDF::NetCDF_CXX oops fv3jedi)

# Ensemble AddIncrement
ecbuild_add_executable( TARGET fv3jedi_ensemble_add_increment.x
SOURCES fv3jedi_ensemble_add_increment.cc)
target_compile_features( fv3jedi_ensemble_add_increment.x PUBLIC cxx_std_17)
target_link_libraries( fv3jedi_ensemble_add_increment.x PUBLIC NetCDF::NetCDF_CXX oops fv3jedi)
8 changes: 8 additions & 0 deletions utils/fv3jedi/fv3jedi_correction_increment.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#include "fv3jedi_correction_increment.h"
#include "oops/runs/Run.h"

int main(int argc, char ** argv) {
oops::Run run(argc, argv);
gdasapp::CorrectionIncrement CorrectionIncrement;
return run.execute(CorrectionIncrement);
}
120 changes: 120 additions & 0 deletions utils/fv3jedi/fv3jedi_correction_increment.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
#pragma once

#include <iostream>
#include <memory>
#include <string>
#include <vector>

#include "eckit/config/LocalConfiguration.h"

#include "fv3jedi/Geometry/Geometry.h"
#include "fv3jedi/Increment/Increment.h"
#include "fv3jedi/State/State.h"

#include "oops/mpi/mpi.h"
#include "oops/runs/Application.h"
#include "oops/util/ConfigFunctions.h"
#include "oops/util/DateTime.h"
#include "oops/util/Duration.h"
#include "oops/util/Logger.h"
#include "oops/util/parameters/OptionalParameter.h"
#include "oops/util/parameters/Parameter.h"
#include "oops/util/parameters/Parameters.h"
#include "oops/util/parameters/RequiredParameter.h"

class ForecastHourParameters : public oops::Parameters {
OOPS_CONCRETE_PARAMETERS(ForecastHourParameters, Parameters)
public:
oops::RequiredParameter<std::string> datetimeStr{"datetime", \
this};
oops::RequiredParameter<eckit::LocalConfiguration> detBkgConfig{"deterministic background", \
this};
oops::RequiredParameter<eckit::LocalConfiguration> varIncrConfig{"variational increment", \
this};
oops::RequiredParameter<eckit::LocalConfiguration> ensMeanAnlConfig{"ensemble mean analysis", \
this};
oops::RequiredParameter<eckit::LocalConfiguration> corIncrConfig{"correction increment", \
this};
};

class CorrectionIncrementParameters : public oops::Parameters {
OOPS_CONCRETE_PARAMETERS(CorrectionIncrementParameters, Parameters)
public:
oops::RequiredParameter<oops::Variables> \
incrVars{"increment variables", this};
oops::RequiredParameter<eckit::LocalConfiguration> \
varIncrGeomConfig{"variational increment geometry", this};
oops::RequiredParameter<eckit::LocalConfiguration> \
detBkgGeomConfig{"deterministic background geometry", this};
oops::RequiredParameter<eckit::LocalConfiguration> \
ensMeanAnlGeomConfig{"ensemble mean analysis geometry", this};
oops::RequiredParameter<eckit::LocalConfiguration> \
corIncrGeomConfig{"correction increment geometry", this};
oops::RequiredParameter<std::vector<ForecastHourParameters>> \
fcstHourParams{"forecast hours", this};
};

namespace gdasapp {

// Main application class
class CorrectionIncrement : public oops::Application {
public:
explicit CorrectionIncrement(const eckit::mpi::Comm & comm = oops::mpi::world())
: Application(comm) {}
static const std::string classname() {return "gdasapp::CorrectionIncrement";}

int execute(const eckit::Configuration & fullConfig) const {
// Deserialize parameters
CorrectionIncrementParameters params;
params.deserialize(fullConfig);

// Setup geometries
const fv3jedi::Geometry varIncrGeom(params.varIncrGeomConfig.value(), this->getComm());
const fv3jedi::Geometry detBkgGeom(params.detBkgGeomConfig.value(), this->getComm());
const fv3jedi::Geometry ensMeanAnlGeom(params.ensMeanAnlGeomConfig.value(), this->getComm());
const fv3jedi::Geometry corIncrGeom(params.corIncrGeomConfig.value(), this->getComm());

// Loop through forecast hours ("recenterings")
const int nhours = params.fcstHourParams.value().size();
for ( int ihour = 0; ihour < nhours; ihour++ ) {
const ForecastHourParameters fcstHourParams = params.fcstHourParams.value()[ihour];

// Get forecast time
const util::DateTime datetime(fcstHourParams.datetimeStr.value());

// Initialize background
fv3jedi::State xxBkgDet(detBkgGeom, params.incrVars.value(), datetime);
xxBkgDet.read(fcstHourParams.detBkgConfig.value());

// Initialize increment
fv3jedi::Increment dxVar(varIncrGeom, params.incrVars.value(), datetime);
dxVar.read(fcstHourParams.varIncrConfig.value());

// Initialize ensemble mean analysis
fv3jedi::State xxAnlEnsMean(ensMeanAnlGeom, params.incrVars.value(), datetime);
xxAnlEnsMean.read(fcstHourParams.ensMeanAnlConfig.value());

// Compute analysis
fv3jedi::State xxAnlVar(detBkgGeom, xxBkgDet);
xxAnlVar += dxVar;

// Interpolate full resolution analysis to ensemble resolution
fv3jedi::State xxAnlVarEnsRes(corIncrGeom, xxAnlVar);

// Compute correction increment
fv3jedi::Increment dxCor(corIncrGeom, params.incrVars.value(), datetime);
dxCor.diff(xxAnlVarEnsRes, xxAnlEnsMean);

// Write correction increment
dxCor.write(fcstHourParams.corIncrConfig.value());
}

return 0;
}

private:
std::string appname() const {
return "gdasapp::CorrectionIncrement";
}
};
} // namespace gdasapp
11 changes: 11 additions & 0 deletions utils/fv3jedi/fv3jedi_ensemble_add_increment.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#include "fv3jedi/Utilities/Traits.h"

#include "oops/runs/AddIncrement.h"
#include "oops/runs/EnsembleApplication.h"
#include "oops/runs/Run.h"

int main(int argc, char ** argv) {
oops::Run run(argc, argv);
oops::EnsembleApplication<oops::AddIncrement<fv3jedi::Traits>> addIncrement;
return run.execute(addIncrement);
}