From aba674da813b936c9c9bdca8f92b8c4b2fcf0885 Mon Sep 17 00:00:00 2001 From: kar <kas2020@protonmail.com> Date: Fri, 11 Mar 2022 14:43:01 -0500 Subject: [PATCH] fixed small bug in QSP function and added (hacky) support to use salinity as a tracer for QSP. --- src/Science/QSPCount.cpp | 4 ++-- src/cases/derivatives/derivatives.cpp | 16 +++++++++------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/Science/QSPCount.cpp b/src/Science/QSPCount.cpp index 609b2de..e2f73e9 100644 --- a/src/Science/QSPCount.cpp +++ b/src/Science/QSPCount.cpp @@ -318,8 +318,8 @@ void QSPCount(const TArrayn::DTArray &t, const TArrayn::DTArray &u, double volume_weight; if (mapped) { // Calculate the Lz range - double Lzmax_now = global_z_max(ii, jj); - double Lzmin_now = global_z_min(ii, jj); + double Lzmax_now = global_z_max(i, j); + double Lzmin_now = global_z_min(i, j); // Calculate the arc length double arc, z_high, z_low, cos_high, cos_low; diff --git a/src/cases/derivatives/derivatives.cpp b/src/cases/derivatives/derivatives.cpp index 393d3b7..e4a962a 100644 --- a/src/cases/derivatives/derivatives.cpp +++ b/src/cases/derivatives/derivatives.cpp @@ -39,7 +39,7 @@ double T1_max, S1_max, T1_min, S1_min; char T1_name, S1_name; int NT, NS; string QSP_filename; -bool grab_grids; +bool use_salinity; // physical parameters double visco; // viscosity (m^2/s) @@ -138,7 +138,7 @@ class userControl : public BaseCase { // If user asks to grab the grids, we allocate arrays to store // them in memory - if (grab_grids) { + if (mapped) { xgrid = alloc_array(Nx, Ny, Nz); if (Ny > 1) { ygrid = alloc_array(Nx, Ny, Nz); @@ -429,15 +429,17 @@ class userControl : public BaseCase { // Compute QSP data. The code promises to not mutate the arrays, // nor to make deep copies of them if ( do_hist ){ - // Read in T to temp1 if required. - if (T1_name == 't' || S1_name == 't' || T1_name == 'T' || + + if (use_salinity) { + init_tracer_restart("s", *temp1); + } else if (T1_name == 't' || S1_name == 't' || T1_name == 'T' || S1_name == 'T') { init_tracer_restart("t", *temp1); } // If user asked to grab the grids, we populate the grids // with the correct data from disk - if (grab_grids) { + if (mapped) { do_mapping(*xgrid, *ygrid, *zgrid); } else { // Make sure that if the user didn't want us to grab the @@ -449,7 +451,7 @@ class userControl : public BaseCase { QSPCount(*temp1, u, v, w, T1_name, S1_name, NS, NT, T1_max, S1_max, T1_min, S1_min, Nx, Ny, Nz, QSP_filename, - plotnum, grab_grids, xgrid, ygrid, zgrid); + plotnum, mapped, xgrid, ygrid, zgrid); if (master()) { fprintf(stdout, "Completed the write for QSP.%d\n", plotnum); } @@ -527,7 +529,6 @@ int main(int argc, char ** argv) { add_option("do_R",&do_R,false,"Calculate R?"); add_option("do_Q_and_R",&do_Q_and_R,false,"Calculate Q and R?"); add_option("do_lambda2",&do_lambda2,false,"Calculate Lambda2?"); - add_option("grab_grids",&grab_grids,false,"Grab grid data? (NOTE: grid data is expected to be named xgrid, ygrid zgrid)."); add_option("do_hist",&do_hist,false,"Create QSP Data?"); add_option("T1",&T1_name,'t', "Name of tracer 1 for QSP. Valid values are t (for rho),u,v,w,T (for temp) or k for K.E."); add_option("S1",&S1_name,'w', "Name of tracer 2 for QSP. Valid values are t (for rho),u,v,w,T (for temp) or k for K.E."); @@ -535,6 +536,7 @@ int main(int argc, char ** argv) { add_option("T1_min",&T1_min,std::numeric_limits<double>::min(), "Minimum explicit bin for T1 in QSP."); add_option("S1_max",&S1_max,std::numeric_limits<double>::max(), "Maximum explicit bin for S1 in QSP."); add_option("S1_min",&S1_min,std::numeric_limits<double>::min(), "Minimum explicit bin for S1 in QSP."); + add_option("QSP_salinity",&use_salinity, false, "Should salinity be read in from filename s?."); add_option("QSP_filename",&QSP_filename,"QSP_default", "Filename to save data to. Don't include file extension."); add_option("NS",&NS,10,"Number of bins for tracer S"); add_option("NT",&NT,10,"Number of bins for tracer T"); -- GitLab