openjournals / joss-reviews

Reviews for the Journal of Open Source Software
Creative Commons Zero v1.0 Universal
721 stars 38 forks source link

[REVIEW]: SARAS: A general-purpose PDE solver for fluid dynamics #2095

Closed whedon closed 3 years ago

whedon commented 4 years ago

Submitting author: @roshansamuel (Roshan Samuel) Repository: https://github.com/roshansamuel/saras Version: v1.0 Editor: @kyleniemeyer Reviewers: @dlagrava, @olgadoronina, @nickwimer Archive: 10.5281/zenodo.5205320

Status

status

Status badge code:

HTML: <a href="https://joss.theoj.org/papers/7c3db3496426cd4abafef053c65ca825"><img src="https://joss.theoj.org/papers/7c3db3496426cd4abafef053c65ca825/status.svg"></a>
Markdown: [![status](https://joss.theoj.org/papers/7c3db3496426cd4abafef053c65ca825/status.svg)](https://joss.theoj.org/papers/7c3db3496426cd4abafef053c65ca825)

Reviewers and authors:

Please avoid lengthy details of difficulties in the review thread. Instead, please create a new issue in the target repository and link to those issues (especially acceptance-blockers) by leaving comments in the review thread below. (For completists: if the target issue tracker is also on GitHub, linking the review thread in the issue or vice versa will create corresponding breadcrumb trails in the link target.)

Reviewer instructions & questions

@harpolea & @dlagrava, please carry out your review in this issue by updating the checklist below. If you cannot edit the checklist please:

  1. Make sure you're logged in to your GitHub account
  2. Be sure to accept the invite at this URL: https://github.com/openjournals/joss-reviews/invitations

The reviewer guidelines are available here: https://joss.readthedocs.io/en/latest/reviewer_guidelines.html. Any questions/concerns please let @kyleniemeyer know.

Please try and complete your review in the next two weeks

Review checklist for @dlagrava

Conflict of interest

Code of Conduct

General checks

Functionality

Documentation

Software paper

Review checklist for @olgadoronina

Conflict of interest

Code of Conduct

General checks

Functionality

Documentation

Software paper

Review checklist for @nickwimer

Conflict of interest

Code of Conduct

General checks

Functionality

Documentation

Software paper

kyleniemeyer commented 3 years ago

Hi @nickwimer, just wanted to check in on the status of your review. Thanks!

nickwimer commented 3 years ago

Hi @nickwimer, just wanted to check in on the status of your review. Thanks!

Hi @kyleniemeyer, sorry for the delay, had a few urgent fires pop up that I had to put out last week. I have cleared my day to focus on this.

nickwimer commented 3 years ago

@roshansamuel Twice in the paper, SARAS has been compared to TARANG with statements:

1) > "TARANG has been shown to scale up to 196608 cores (Chatterjee et al., 2018), and SARAS has been designed with the goal of achieving similar scaling performance."

and

2) > "To validate the accuracy of the finite difference scheme of SARAS, we compare the results of SARAS with those of a pseudo-spectral code TARANG, which has been benchmarked and scaled up to 196608 cores of Cray XC40, Shaheen II of KAUST (Chatterjee et al., 2018; Verma et al., 2013)."

Yet, I do not see any metrics of performance for SARAS presented in the paper. These statements (in particular, statement #2) imply that SARAS is also capable of such performance. A statement should be made in the paper making it clear that these goals of performance either have not been met, or remain untested.

nickwimer commented 3 years ago

@roshansamuel, I am having several compilation errors on MacOS Mojave, Version 10.14.6. @olgadoronina has helped provide some useful compile flags to assist, but there are several outstanding issues.

Is it your intention to support the use of SARAS on MacOS, or is this strictly for LINUX? If you intend to support MacOS, I think more documentation would be helpful to assist in the widespread use of SARAS. If you are targeting only LINUX systems, I can work on installing this on a different system.

roshansamuel commented 3 years ago

Yet, I do not see any metrics of performance for SARAS presented in the paper. These statements (in particular, statement #2) imply that SARAS is also capable of such performance. A statement should be made in the paper making it clear that these goals of performance either have not been met, or remain untested.

Hi, @nickwimer, thank you for pointing this out. We haven't yet performed a scaling study of SARAS yet. We will add a line in the paper to clearly state this.

Since SARAS has a design similar to TARANG, and it requires lesser MPI communication than TARANG, we expect SARAS to scale as well as, if not better than TARANG. However, this is yet to be confirmed, and we will update the paper to clarify that.

roshansamuel commented 3 years ago

@roshansamuel, I am having several compilation errors on MacOS Mojave, Version 10.14.6. @olgadoronina has helped provide some useful compile flags to assist, but there are several outstanding issues.

Is it your intention to support the use of SARAS on MacOS, or is this strictly for LINUX? If you intend to support MacOS, I think more documentation would be helpful to assist in the widespread use of SARAS. If you are targeting only LINUX systems, I can work on installing this on a different system.

Hi @nickwimer, we developed and tested SARAS on Linux with gcc. However, we have installed SARAS on a Mac system (Mojave) as well at some point. We had used gcc and not clang for this. Can you kindly give more details on the compilation errors you faced? We are working on a fresh install of SARAS on a Mac machine so that we can update the installation instructions accordingly.

roshansamuel commented 3 years ago

Hi @nickwimer, we have updated the README with clearer instructions to install SARAS on both Linux and MacOS. The steps worked with both homebrew-gcc as well as clang on MacOS. We have also added the line "We are planning to conduct a scaling analysis of SARAS and compare its performance with TARANG in the near future." in the paper (Summary, Para 3, Line 3) to clarify that the scaling is yet to be studied.

Kindly let me know if the new installation instructions help to avoid the compilation errors you had faced. Thanks!

nickwimer commented 3 years ago

@whedon generate pdf

whedon commented 3 years ago

:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:

nickwimer commented 3 years ago

@roshansamuel Thank you for updating the README with instructions for MacOS. I will work on getting SARAS installed today/tomorrow and I will let you know if I run into any more issues.

nickwimer commented 3 years ago

@roshansamuel Still running into compile issues. Below is the current error message:

-- The parent directory is /Users/nwimer/Documents/Reviews/saras -- Install folder is /Users/nwimer/Documents/Reviews/saras/compile -- All headers are in /Users/nwimer/Documents/Reviews/saras/lib -- Compiler flag for OpenMP is -Xclang -fopenmp -Wno-unused-command-line-argument -- PLANAR flag not set. Compiling for default 3D run -- Compiling Saras for 3D simulations -- Compiling Saras to solve with double precision calculations -- Configuring done -- Generating done -- Build files have been written to: /Users/nwimer/Documents/Reviews/saras/compile/build [ 2%] [ 9%] [ 12%] [ 14%] [ 31%] [ 39%] Built target initial Built target field [ 41%] Built target reader Built target tseries [ 43%] Built target poisson [ 48%] Built target parser Built target writer [ 51%] Built target grid [ 73%] [ 82%] Built target parallel Built target probes Built target boundary Built target force Linking CXX executable ../../../../saras Undefined symbols for architecture x86_64: "_kmpc_for_staticfini", referenced from: .omp_outlined. in hydrod2.cc.o .omp_outlined..1 in hydrod2.cc.o .omp_outlined..3 in hydrod2.cc.o .omp_outlined..4 in hydrod2.cc.o .omp_outlined. in hydrod3.cc.o .omp_outlined..1 in hydrod3.cc.o .omp_outlined..3 in hydrod3.cc.o ... "kmpc_for_static_init4", referenced from: .omp_outlined. in hydrod2.cc.o .omp_outlined..1 in hydrod2.cc.o .omp_outlined..3 in hydrod2.cc.o .omp_outlined..4 in hydrod2.cc.o .omp_outlined. in hydrod3.cc.o .omp_outlined..1 in hydrod3.cc.o .omp_outlined..3 in hydro_d3.cc.o ... "_kmpc_fork_call", referenced from: hydro_d2::solveVx() in hydro_d2.cc.o hydro_d2::solveVz() in hydro_d2.cc.o hydro_d3::solveVx() in hydro_d3.cc.o hydro_d3::solveVy() in hydro_d3.cc.o hydro_d3::solveVz() in hydro_d3.cc.o scalar_d2::solveVx() in scalar_d2.cc.o scalar_d2::solveVz() in scalard2.cc.o ... "kmpc_global_thread_num", referenced from: hydro_d2::solveVx() in hydrod2.cc.o .omp_outlined. in hydrod2.cc.o .omp_outlined..1 in hydro_d2.cc.o hydro_d2::solveVz() in hydrod2.cc.o .omp_outlined..3 in hydrod2.cc.o .omp_outlined..4 in hydro_d2.cc.o hydro_d3::solveVx() in hydro_d3.cc.o ... "___kmpc_push_num_threads", referenced from: hydro_d2::solveVx() in hydro_d2.cc.o hydro_d2::solveVz() in hydro_d2.cc.o hydro_d3::solveVx() in hydro_d3.cc.o hydro_d3::solveVy() in hydro_d3.cc.o hydro_d3::solveVz() in hydro_d3.cc.o scalar_d2::solveVx() in scalar_d2.cc.o scalar_d2::solveVz() in scalar_d2.cc.o ... ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) make[2]: [../../saras] Error 1 make[1]: [src/solvers/CMakeFiles/saras.dir/all] Error 2 make: *** [all] Error 2

olgadoronina commented 3 years ago

Hi @roshansamuel, thank you for updating the installation instructions. I was able to install all the packages with just a few changes:

I was able to compile SARAS without errors using compileSaras.sh script, but it seems that compiler flag for OpenMP wasn't set up and test run fails. See output for compileSaras.sh below. Could you help me fix it?

% bash compileSaras.sh -- The parent directory is /Users/odoronin/saras-master -- Install folder is /Users/odoronin/saras-master/compile -- All headers are in /Users/odoronin/saras-master/lib -- Try OpenMP C flag = [-fopenmp] -- Performing Test OpenMP_FLAG_DETECTED -- Performing Test OpenMP_FLAG_DETECTED - Failed -- Try OpenMP C flag = [/openmp] -- Performing Test OpenMP_FLAG_DETECTED -- Performing Test OpenMP_FLAG_DETECTED - Failed -- Try OpenMP C flag = [-Qopenmp] -- Performing Test OpenMP_FLAG_DETECTED -- Performing Test OpenMP_FLAG_DETECTED - Failed -- Try OpenMP C flag = [-openmp] -- Performing Test OpenMP_FLAG_DETECTED -- Performing Test OpenMP_FLAG_DETECTED - Failed -- Try OpenMP C flag = [ ] -- Performing Test OpenMP_FLAG_DETECTED -- Performing Test OpenMP_FLAG_DETECTED - Failed -- Try OpenMP C flag = [-xopenmp] -- Performing Test OpenMP_FLAG_DETECTED -- Performing Test OpenMP_FLAG_DETECTED - Failed -- Try OpenMP C flag = [+Oopenmp] -- Performing Test OpenMP_FLAG_DETECTED -- Performing Test OpenMP_FLAG_DETECTED - Failed -- Try OpenMP C flag = [-qsmp] -- Performing Test OpenMP_FLAG_DETECTED -- Performing Test OpenMP_FLAG_DETECTED - Failed -- Try OpenMP C flag = [-mp] -- Performing Test OpenMP_FLAG_DETECTED -- Performing Test OpenMP_FLAG_DETECTED - Failed -- Try OpenMP CXX flag = [-fopenmp] -- Performing Test OpenMP_FLAG_DETECTED -- Performing Test OpenMP_FLAG_DETECTED - Failed -- Try OpenMP CXX flag = [/openmp] -- Performing Test OpenMP_FLAG_DETECTED -- Performing Test OpenMP_FLAG_DETECTED - Failed -- Try OpenMP CXX flag = [-Qopenmp] -- Performing Test OpenMP_FLAG_DETECTED -- Performing Test OpenMP_FLAG_DETECTED - Failed -- Try OpenMP CXX flag = [-openmp] -- Performing Test OpenMP_FLAG_DETECTED -- Performing Test OpenMP_FLAG_DETECTED - Failed -- Try OpenMP CXX flag = [ ] -- Performing Test OpenMP_FLAG_DETECTED -- Performing Test OpenMP_FLAG_DETECTED - Failed -- Try OpenMP CXX flag = [-xopenmp] -- Performing Test OpenMP_FLAG_DETECTED -- Performing Test OpenMP_FLAG_DETECTED - Failed -- Try OpenMP CXX flag = [+Oopenmp] -- Performing Test OpenMP_FLAG_DETECTED -- Performing Test OpenMP_FLAG_DETECTED - Failed -- Try OpenMP CXX flag = [-qsmp] -- Performing Test OpenMP_FLAG_DETECTED -- Performing Test OpenMP_FLAG_DETECTED - Failed -- Try OpenMP CXX flag = [-mp] -- Performing Test OpenMP_FLAG_DETECTED -- Performing Test OpenMP_FLAG_DETECTED - Failed -- Could NOT find OpenMP (missing: OpenMP_C_FLAGS OpenMP_CXX_FLAGS) -- Compiler flag for OpenMP is -- PLANAR flag not set. Compiling for default 3D run -- Compiling Saras for 3D simulations -- Compiling Saras to solve with double precision calculations -- Configuring done -- Generating done -- Build files have been written to: /Users/odoronin/saras-master/compile/build [ 4%] [ 7%] [ 9%] [ 12%] [ 14%] [ 19%] Built target grid [ 31%] Built target parallel Built target tseries Built target reader [ 58%] [ 60%] Built target parser Built target writer Built target field Built target initial [ 63%] Built target boundary [ 75%] [ 82%] Built target probes Built target force Built target poisson Linking CXX executable ../../../../saras [100%] Built target saras

roshansamuel commented 3 years ago

Hi @olgadoronina, thank you very much for suggesting the fixes for installing different libraries. I will add them to the installation instructions.

According to the output you have posted, the executable seems to have been built. You can execute it with mpirun and it will run, although it will not use OpenMP as it seems to not have detected it. Is libomp-dev installed on your system? I didn't include installation of OpenMP libraries in the instructions since the solver still ran on different machines without them.

In order to check if the solver is really compiling right, can you please run testSaras.sh script inside the tests/ folder? Please let me know if that test fails.

roshansamuel commented 3 years ago

Hi @nickwimer. From the error message, it looks like the issue is with OpenMP. When I tested the installation on 2 machines, (Ubuntu and Mac), I had skipped installation of OpenMP since the solver still ran on those systems without it. Can you please let me know if OpenMP is installed on your system? I will update the installation instructions to include OpenMP libraries in the meantime.

olgadoronina commented 3 years ago

Hi @roshansamuel, yes, the executable was built, but the test failed. See the output below. It seems like it can't run without OpenMP. I have libomp installed through homebrew, I'm not sure why find_package (OpenMP) doesn't return anything. Do I need to install something else?

% bash testSaras.sh -- The C compiler identification is Clang 12.0.0 -- The CXX compiler identification is Clang 12.0.0 -- Check for working C compiler: /Users/odoronin/local/bin/mpicc -- Check for working C compiler: /Users/odoronin/local/bin/mpicc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working CXX compiler: /Users/odoronin/local/bin/mpicxx -- Check for working CXX compiler: /Users/odoronin/local/bin/mpicxx -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- The parent directory is /Users/odoronin/saras-master -- Install folder is /Users/odoronin/saras-master/tests -- All headers are in /Users/odoronin/saras-master/lib -- Try OpenMP C flag = [-fopenmp] -- Performing Test OpenMP_FLAG_DETECTED -- Performing Test OpenMP_FLAG_DETECTED - Failed -- Try OpenMP C flag = [/openmp] -- Performing Test OpenMP_FLAG_DETECTED -- Performing Test OpenMP_FLAG_DETECTED - Failed -- Try OpenMP C flag = [-Qopenmp] -- Performing Test OpenMP_FLAG_DETECTED -- Performing Test OpenMP_FLAG_DETECTED - Failed -- Try OpenMP C flag = [-openmp] -- Performing Test OpenMP_FLAG_DETECTED -- Performing Test OpenMP_FLAG_DETECTED - Failed -- Try OpenMP C flag = [ ] -- Performing Test OpenMP_FLAG_DETECTED -- Performing Test OpenMP_FLAG_DETECTED - Failed -- Try OpenMP C flag = [-xopenmp] -- Performing Test OpenMP_FLAG_DETECTED -- Performing Test OpenMP_FLAG_DETECTED - Failed -- Try OpenMP C flag = [+Oopenmp] -- Performing Test OpenMP_FLAG_DETECTED -- Performing Test OpenMP_FLAG_DETECTED - Failed -- Try OpenMP C flag = [-qsmp] -- Performing Test OpenMP_FLAG_DETECTED -- Performing Test OpenMP_FLAG_DETECTED - Failed -- Try OpenMP C flag = [-mp] -- Performing Test OpenMP_FLAG_DETECTED -- Performing Test OpenMP_FLAG_DETECTED - Failed -- Try OpenMP CXX flag = [-fopenmp] -- Performing Test OpenMP_FLAG_DETECTED -- Performing Test OpenMP_FLAG_DETECTED - Failed -- Try OpenMP CXX flag = [/openmp] -- Performing Test OpenMP_FLAG_DETECTED -- Performing Test OpenMP_FLAG_DETECTED - Failed -- Try OpenMP CXX flag = [-Qopenmp] -- Performing Test OpenMP_FLAG_DETECTED -- Performing Test OpenMP_FLAG_DETECTED - Failed -- Try OpenMP CXX flag = [-openmp] -- Performing Test OpenMP_FLAG_DETECTED -- Performing Test OpenMP_FLAG_DETECTED - Failed -- Try OpenMP CXX flag = [ ] -- Performing Test OpenMP_FLAG_DETECTED -- Performing Test OpenMP_FLAG_DETECTED - Failed -- Try OpenMP CXX flag = [-xopenmp] -- Performing Test OpenMP_FLAG_DETECTED -- Performing Test OpenMP_FLAG_DETECTED - Failed -- Try OpenMP CXX flag = [+Oopenmp] -- Performing Test OpenMP_FLAG_DETECTED -- Performing Test OpenMP_FLAG_DETECTED - Failed -- Try OpenMP CXX flag = [-qsmp] -- Performing Test OpenMP_FLAG_DETECTED -- Performing Test OpenMP_FLAG_DETECTED - Failed -- Try OpenMP CXX flag = [-mp] -- Performing Test OpenMP_FLAG_DETECTED -- Performing Test OpenMP_FLAG_DETECTED - Failed -- Could NOT find OpenMP (missing: OpenMP_C_FLAGS OpenMP_CXX_FLAGS) -- Compiler flag for OpenMP is -- Compiling Saras for 2D simulations -- Compiling Saras to solve with double precision calculations -- Configuring done -- Generating done -- Build files have been written to: /Users/odoronin/saras-master/tests/build Scanning dependencies of target field Scanning dependencies of target grid Scanning dependencies of target poisson Scanning dependencies of target parallel Scanning dependencies of target parser Scanning dependencies of target probes Scanning dependencies of target reader Scanning dependencies of target tseries [ 7%] [ 7%] [ 7%] [ 12%] [ 12%] [ 14%] [ 17%] [ 19%] Building CXX object lib/io/CMakeFiles/parser.dir/parser.cc.o Building CXX object lib/io/CMakeFiles/probes.dir/probes.cc.o Building CXX object lib/grid/CMakeFiles/grid.dir/grid.cc.o Building CXX object lib/parallel/CMakeFiles/parallel.dir/parallel.cc.o Building CXX object lib/io/CMakeFiles/reader.dir/reader.cc.o Building CXX object lib/io/CMakeFiles/tseries.dir/tseries.cc.o Building CXX object lib/poisson/CMakeFiles/poisson.dir/poisson.cc.o Building CXX object lib/field/CMakeFiles/field.dir/field.cc.o In file included from /Users/odoronin/saras-master/lib/io/tseries.cc:44: /Users/odoronin/saras-master/lib/io/tseries.h:64:13: warning: private field 'yLow' is not used [-Wunused-private-field] int yLow, yTop; ^ /Users/odoronin/saras-master/lib/io/tseries.h:64:19: warning: private field 'yTop' is not used [-Wunused-private-field] int yLow, yTop; ^ [ 21%] Building CXX object lib/parallel/CMakeFiles/parallel.dir/mpidata.cc.o Linking CXX static library libreader.a [ 21%] Built target reader [ 24%] Building CXX object lib/field/CMakeFiles/field.dir/sfield.cc.o Linking CXX static library libprobes.a [ 24%] Built target probes [ 26%] Building CXX object lib/field/CMakeFiles/field.dir/vfield.cc.o 2 warnings generated. Linking CXX static library libtseries.a [ 26%] Built target tseries [ 29%] Building CXX object lib/poisson/CMakeFiles/poisson.dir/poisson_d2.cc.o Linking CXX static library libparser.a [ 29%] Built target parser [ 31%] Building CXX object lib/field/CMakeFiles/field.dir/plainsf.cc.o Scanning dependencies of target writer [ 34%] Building CXX object lib/io/CMakeFiles/writer.dir/writer.cc.o Linking CXX static library libparallel.a Linking CXX static library libgrid.a [ 34%] Built target parallel [ 36%] Building CXX object lib/field/CMakeFiles/field.dir/plainvf.cc.o [ 36%] Built target grid [ 39%] Building CXX object lib/poisson/CMakeFiles/poisson.dir/poisson_d3.cc.o [ 41%] Building CXX object lib/field/CMakeFiles/field.dir/derivative.cc.o In file included from /Users/odoronin/saras-master/lib/field/plainvf.cc:43: /Users/odoronin/saras-master/lib/field/plainvf.h:51:21: warning: private field 'gridData' is not used [-Wunused-private-field] const grid &gridData; ^ Linking CXX static library libwriter.a [ 41%] Built target writer Scanning dependencies of target boundary [ 43%] Scanning dependencies of target initial Building CXX object lib/boundary/CMakeFiles/boundary.dir/boundary.cc.o [ 46%] Building CXX object lib/initial/CMakeFiles/initial.dir/initial.cc.o Scanning dependencies of target force [ 48%] Building CXX object lib/force/CMakeFiles/force.dir/force.cc.o [ 51%] [ 53%] Building CXX object lib/initial/CMakeFiles/initial.dir/taylorGreen.cc.o Building CXX object lib/boundary/CMakeFiles/boundary.dir/dirichletCC.cc.o 1 warning generated. [ 56%] Building CXX object lib/force/CMakeFiles/force.dir/coriolisForce.cc.o [ 58%] Building CXX object lib/initial/CMakeFiles/initial.dir/channelSine.cc.o [ 60%] Building CXX object lib/force/CMakeFiles/force.dir/buoyantForce.cc.o [ 63%] Building CXX object lib/boundary/CMakeFiles/boundary.dir/dirichletFC.cc.o [ 65%] Building CXX object lib/initial/CMakeFiles/initial.dir/channelRand.cc.o [ 68%] Building CXX object lib/force/CMakeFiles/force.dir/rotatingConv.cc.o Linking CXX static library libfield.a [ 68%] Built target field [ 70%] Building CXX object lib/boundary/CMakeFiles/boundary.dir/periodicCC.cc.o Linking CXX static library libpoisson.a [ 70%] Built target poisson [ 73%] Building CXX object lib/force/CMakeFiles/force.dir/randomForcing.cc.o [ 75%] Building CXX object lib/boundary/CMakeFiles/boundary.dir/periodicFC.cc.o [ 78%] Building CXX object lib/boundary/CMakeFiles/boundary.dir/neumannCC.cc.o [ 80%] Building CXX object lib/boundary/CMakeFiles/boundary.dir/neumannFC.cc.o Linking CXX static library libinitial.a [ 80%] Built target initial [ 82%] Building CXX object lib/boundary/CMakeFiles/boundary.dir/hotPlateCC.cc.o In file included from /Users/odoronin/saras-master/lib/boundary/neumannCC.cc:43: /Users/odoronin/saras-master/lib/boundary/boundary.h:183:20: warning: private field 'fieldValue' is not used [-Wunused-private-field] const real fieldValue; ^ In file included from /Users/odoronin/saras-master/lib/boundary/neumannFC.cc:43: /Users/odoronin/saras-master/lib/boundary/boundary.h:200:20: warning: private field 'fieldValue' is not used [-Wunused-private-field] const real fieldValue; ^ Linking CXX static library libforce.a [ 82%] Built target force 1 warning generated. 1 warning generated. Linking CXX static library libboundary.a [ 82%] Built target boundary Scanning dependencies of target saras [ 85%] [ 87%] [ 90%] [ 92%] [ 95%] [ 97%] [100%] Building CXX object src/solvers/CMakeFiles/saras.dir/hydro/hydro.cc.o Building CXX object src/solvers/CMakeFiles/saras.dir/main.cc.o Building CXX object src/solvers/CMakeFiles/saras.dir/hydro/hydro_d2.cc.o Building CXX object src/solvers/CMakeFiles/saras.dir/hydro/hydro_d3.cc.o Building CXX object src/solvers/CMakeFiles/saras.dir/scalar/scalar.cc.o Building CXX object src/solvers/CMakeFiles/saras.dir/scalar/scalar_d2.cc.o Building CXX object src/solvers/CMakeFiles/saras.dir/scalar/scalar_d3.cc.o Linking CXX executable ../../../../saras [100%] Built target saras Fatal error in MPI_Init: Other MPI error, error stack: MPIR_Init_thread(498)..............: MPID_Init(187).....................: channel initialization failed MPIDI_CH3_Init(89).................: MPID_nem_init(320).................: MPID_nem_tcp_init(171).............: MPID_nem_tcp_get_business_card(418): MPID_nem_tcp_init(377).............: gethostbyname failed, odoronin-35746s (errno 1) Fatal error in MPI_Init: Other MPI error, error stack: MPIR_Init_thread(498)..............: MPID_Init(187).....................: channel initialization failed MPIDI_CH3_Init(89).................: MPID_nem_init(320).................: MPID_nem_tcp_init(171).............: MPID_nem_tcp_get_business_card(418): MPID_nem_tcp_init(377).............: gethostbyname failed, odoronin-35746s (errno 1) Fatal error in MPI_Init: Other MPI error, error stack: MPIR_Init_thread(498)..............: MPID_Init(187).....................: channel initialization failed MPIDI_CH3_Init(89).................: MPID_nem_init(320).................: MPID_nem_tcp_init(171).............: MPID_nem_tcp_get_business_card(418): MPID_nem_tcp_init(377).............: gethostbyname failed, odoronin-35746s (errno 1) Fatal error in MPI_Init: Other MPI error, error stack: MPIR_Init_thread(498)..............: MPID_Init(187).....................: channel initialization failed MPIDI_CH3_Init(89).................: MPID_nem_init(320).................: MPID_nem_tcp_init(171).............: MPID_nem_tcp_get_business_card(418): MPID_nem_tcp_init(377).............: gethostbyname failed, odoronin-35746s (errno 1)

= BAD TERMINATION OF ONE OF YOUR APPLICATION PROCESSES = PID 22525 RUNNING AT odoronin-35746s = EXIT CODE: 1 = CLEANING UP REMAINING PROCESSES = YOU CAN IGNORE THE BELOW CLEANUP MESSAGES

roshansamuel commented 3 years ago

Hi @olgadoronina , @nickwimer, I have updated the solver and the README. I have added the fixes suggested by @olgadoronina for installation of some of the dependencies. Please let me know if the solver is now installing and running correctly.

Thanks!

kyleniemeyer commented 3 years ago

Thanks for the updates @roshansamuel!

@olgadoronina @nickwimer when you have a moment, can you check on these changes, and see if they satisfy the issues? And, update the reviewer checklist items above if appropriate.

olgadoronina commented 3 years ago

Hi @roshansamuel, thank you for your updates, I was able to compile solver by following you installation instructions, but when I run the testSaras.sh, I get the following output:

-- The parent directory is /Users/odoronin/saras-master
-- Install folder is /Users/odoronin/saras-master/tests
-- All headers are in /Users/odoronin/saras-master/lib
-- Compiling Saras for 2D simulations
-- Compiling Saras to solve with double precision calculations
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/odoronin/saras-master/tests/build
[  4%] [  4%] [  7%] [ 21%] [ 24%] [ 26%] Built target tseries
[ 31%] Built target probes
Built target parser
[ 39%] Built target field
Built target grid
Built target reader
Built target parallel
Built target poisson
[ 41%] [ 60%] [ 73%] [ 82%] Built target writer
Built target boundary
Built target force
Built target initial
[100%] Built target saras
Fatal error in MPI_Init: Other MPI error, error stack:
MPIR_Init_thread(498)..............:
MPID_Init(187).....................: channel initialization failed
MPIDI_CH3_Init(89).................:
MPID_nem_init(320).................:
MPID_nem_tcp_init(171).............:
MPID_nem_tcp_get_business_card(418):
MPID_nem_tcp_init(377).............: gethostbyname failed, odoronin-35746s (errno 1)
Fatal error in MPI_Init: Other MPI error, error stack:
MPIR_Init_thread(498)..............:
MPID_Init(187).....................: channel initialization failed
MPIDI_CH3_Init(89).................:
MPID_nem_init(320).................:
MPID_nem_tcp_init(171).............:
MPID_nem_tcp_get_business_card(418):
MPID_nem_tcp_init(377).............: gethostbyname failed, odoronin-35746s (errno 1)
Fatal error in MPI_Init: Other MPI error, error stack:
MPIR_Init_thread(498)..............:
MPID_Init(187).....................: channel initialization failed
MPIDI_CH3_Init(89).................:
MPID_nem_init(320).................:
MPID_nem_tcp_init(171).............:
MPID_nem_tcp_get_business_card(418):
MPID_nem_tcp_init(377).............: gethostbyname failed, odoronin-35746s (errno 1)
Fatal error in MPI_Init: Other MPI error, error stack:
MPIR_Init_thread(498)..............:
MPID_Init(187).....................: channel initialization failed
MPIDI_CH3_Init(89).................:
MPID_nem_init(320).................:
MPID_nem_tcp_init(171).............:
MPID_nem_tcp_get_business_card(418):
MPID_nem_tcp_init(377).............: gethostbyname failed, odoronin-35746s (errno 1)

===================================================================================
=   BAD TERMINATION OF ONE OF YOUR APPLICATION PROCESSES
=   PID 75888 RUNNING AT odoronin-35746s
=   EXIT CODE: 1
=   CLEANING UP REMAINING PROCESSES
=   YOU CAN IGNORE THE BELOW CLEANUP MESSAGES
===================================================================================
validate_ldc.py:86: YAMLLoadWarning: calling yaml.load() without Loader=... is deprecated, as the default Loader is unsafe. Please read https://msg.pyyaml.org/load for full details.
  yamlData = yl.load(yamlFile)
Could not open file output/Soln_0030.0000.h5

If I run compileSaras.sh with TEST_RUN="TEST_RUN" I get the following errors:

% bash compileSaras.sh
-- The C compiler identification is Clang 12.0.0
-- The CXX compiler identification is Clang 12.0.0
-- Check for working C compiler: /Users/odoronin/local/bin/mpicc
-- Check for working C compiler: /Users/odoronin/local/bin/mpicc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /Users/odoronin/local/bin/mpicxx
-- Check for working CXX compiler: /Users/odoronin/local/bin/mpicxx -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- The parent directory is /Users/odoronin/saras-master
-- Install folder is /Users/odoronin/saras-master/compile
-- All headers are in /Users/odoronin/saras-master/lib
-- PLANAR flag not set. Compiling for default 3D run
-- Compiling Saras for 3D simulations
-- Compiling Saras for running unit tests
-- Configuring done
-- Generating done
-- Build files have been written to: /Users/odoronin/saras-master/compile/build
Scanning dependencies of target poisson
Scanning dependencies of target parser
Scanning dependencies of target field
Scanning dependencies of target grid
Scanning dependencies of target parallel
Scanning dependencies of target reader
Scanning dependencies of target probes
Scanning dependencies of target tseries
Scanning dependencies of target initial
Scanning dependencies of target writer
Scanning dependencies of target boundary
Scanning dependencies of target force
[  2%] [  4%] [  6%] [ 11%] [ 11%] [ 13%] [ 15%] [ 18%] [ 20%] [ 25%] [ 25%] [ 27%] [ 29%] [ 31%] Building CXX object lib/io/CMakeFiles/parser.dir/parser.cc.o
Building CXX object lib/grid/CMakeFiles/grid.dir/grid.cc.o
Building CXX object lib/parallel/CMakeFiles/parallel.dir/parallel.cc.o
[ 34%] [ 36%] Building CXX object lib/io/CMakeFiles/reader.dir/reader.cc.o
Building CXX object lib/parallel/CMakeFiles/parallel.dir/mpidata.cc.o
Building CXX object lib/io/CMakeFiles/probes.dir/probes.cc.o
Building CXX object lib/io/CMakeFiles/writer.dir/writer.cc.o
Building CXX object lib/io/CMakeFiles/tseries.dir/tseries.cc.o
Building CXX object lib/poisson/CMakeFiles/poisson.dir/poisson.cc.o
Building CXX object lib/poisson/CMakeFiles/poisson.dir/poisson_d2.cc.o
Building CXX object lib/initial/CMakeFiles/initial.dir/initial.cc.o
Building CXX object lib/field/CMakeFiles/field.dir/field.cc.o
Building CXX object lib/poisson/CMakeFiles/poisson.dir/poisson_d3.cc.o
Building CXX object lib/initial/CMakeFiles/initial.dir/taylorGreen.cc.o
Building CXX object lib/boundary/CMakeFiles/boundary.dir/boundary.cc.o
Building CXX object lib/force/CMakeFiles/force.dir/force.cc.o
[ 38%] Building CXX object lib/boundary/CMakeFiles/boundary.dir/dirichletCC.cc.o
[ 40%] [ 43%] Building CXX object lib/force/CMakeFiles/force.dir/coriolisForce.cc.o
Building CXX object lib/field/CMakeFiles/field.dir/sfield.cc.o
[ 45%] Building CXX object lib/boundary/CMakeFiles/boundary.dir/dirichletFC.cc.o
Linking CXX static library libparallel.a
[ 45%] Built target parallel
Linking CXX static library libreader.a
[ 47%] Building CXX object lib/initial/CMakeFiles/initial.dir/channelSine.cc.o
[ 50%] [ 50%] Building CXX object lib/force/CMakeFiles/force.dir/buoyantForce.cc.o
Built target reader
[ 52%] Building CXX object lib/field/CMakeFiles/field.dir/vfield.cc.o
Linking CXX static library libprobes.a
[ 52%] Built target probes
[ 54%] Building CXX object lib/boundary/CMakeFiles/boundary.dir/periodicCC.cc.o
Linking CXX static library libwriter.a
[ 54%] Linking CXX static library libtseries.a
Built target writer
[ 56%] Building CXX object lib/force/CMakeFiles/force.dir/rotatingConv.cc.o
[ 56%] Built target tseries
[ 59%] Building CXX object lib/field/CMakeFiles/field.dir/plainsf.cc.o
Linking CXX static library libparser.a
[ 59%] Built target parser
[ 61%] Building CXX object lib/force/CMakeFiles/force.dir/randomForcing.cc.o
[ 63%] Building CXX object lib/initial/CMakeFiles/initial.dir/channelRand.cc.o
[ 65%] Building CXX object lib/boundary/CMakeFiles/boundary.dir/periodicFC.cc.o
[ 68%] Building CXX object lib/field/CMakeFiles/field.dir/plainvf.cc.o
Linking CXX static library libgrid.a
[ 68%] Built target grid
[ 70%] Building CXX object lib/boundary/CMakeFiles/boundary.dir/neumannCC.cc.o
[ 72%] Building CXX object lib/field/CMakeFiles/field.dir/derivative.cc.o
[ 75%] Building CXX object lib/boundary/CMakeFiles/boundary.dir/neumannFC.cc.o
[ 77%] Building CXX object lib/boundary/CMakeFiles/boundary.dir/hotPlateCC.cc.o
Linking CXX static library libinitial.a
[ 77%] Built target initial
In file included from /Users/odoronin/saras-master/lib/boundary/neumannCC.cc:43:
/Users/odoronin/saras-master/lib/boundary/boundary.h:183:20: warning: private field 'fieldValue' is not used [-Wunused-private-field]
        const real fieldValue;
                   ^
In file included from /Users/odoronin/saras-master/lib/boundary/neumannFC.cc:43:
/Users/odoronin/saras-master/lib/boundary/boundary.h:200:20: warning: private field 'fieldValue' is not used [-Wunused-private-field]
        const real fieldValue;
                   ^
In file included from /Users/odoronin/saras-master/lib/field/plainvf.cc:43:
/Users/odoronin/saras-master/lib/field/plainvf.h:51:21: warning: private field 'gridData' is not used [-Wunused-private-field]
        const grid &gridData;
                    ^
Linking CXX static library libforce.a
[ 77%] Built target force
1 warning generated.
1 warning generated.
Linking CXX static library libpoisson.a
[ 77%] Built target poisson
1 warning generated.
Linking CXX static library libfield.a
Linking CXX static library libboundary.a
[ 77%] Built target field
Scanning dependencies of target saras_test
[ 77%] Built target boundary
[ 79%] [ 81%] [ 84%] [ 86%] [ 88%] [ 90%] [ 93%] [ 95%] Building CXX object src/tests/CMakeFiles/saras_test.dir/main.cc.o
Building CXX object src/tests/CMakeFiles/saras_test.dir/global/unittest.cc.o
[ 97%] Building CXX object src/tests/CMakeFiles/saras_test.dir/__/solvers/hydro/hydro.cc.o
[100%] Building CXX object src/tests/CMakeFiles/saras_test.dir/__/solvers/hydro/hydro_d2.cc.o
Building CXX object src/tests/CMakeFiles/saras_test.dir/units/field_test.cc.o
Building CXX object src/tests/CMakeFiles/saras_test.dir/__/solvers/hydro/hydro_d3.cc.o
Building CXX object src/tests/CMakeFiles/saras_test.dir/units/differ_test.cc.o
Building CXX object src/tests/CMakeFiles/saras_test.dir/units/nlin_test.cc.o
Building CXX object src/tests/CMakeFiles/saras_test.dir/units/poisson_test.cc.o
Building CXX object src/tests/CMakeFiles/saras_test.dir/units/hydro_test.cc.o
In file included from /Users/odoronin/saras-master/src/tests/global/unittest.cc:43:
/Users/odoronin/saras-master/src/tests/global/unittest.h:51:29: error: use of undeclared identifier 'real'
void testError(blitz::Array<real, 3> A, blitz::Array<real, 3> B, int errorMom, real errorTol);
                            ^
/Users/odoronin/saras-master/src/tests/global/unittest.h:51:29: error: use of undeclared identifier 'real'
/Users/odoronin/saras-master/src/tests/global/unittest.h:51:54: error: use of undeclared identifier 'real'
void testError(blitz::Array<real, 3> A, blitz::Array<real, 3> B, int errorMom, real errorTol);
                                                     ^
/Users/odoronin/saras-master/src/tests/global/unittest.h:51:80: error: unknown type name 'real'
void testError(blitz::Array<real, 3> A, blitz::Array<real, 3> B, int errorMom, real errorTol);
                                                                               ^
/Users/odoronin/saras-master/src/tests/global/unittest.h:53:18: error: unknown type name 'real'
void printResult(real computedValue, real errorTolerance);
                 ^
In file included from /Users/odoronin/saras-master/src/tests/units/poisson_test.cc:44:
/Users/odoronin/saras-master/src/tests/global/unittest.h:51:29: error: use of undeclared identifier 'real'
void testError(blitz::Array<real, 3> A, blitz::Array<real, 3> B, int errorMom, real errorTol);
                            ^
In file included from /Users/odoronin/saras-master/src/tests/main.cc:43:
/Users/odoronin/saras-master/src/tests/global/unittest.h:51:29: error: use of undeclared identifier 'real'
void testError(blitz::Array<real, 3> A, blitz::Array<real, 3> B, int errorMom, real errorTol);
                            ^
/Users/odoronin/saras-master/src/tests/global/unittest.h:53:38: error: unknown type name 'real'
void printResult(real computedValue, real errorTolerance);
                                     ^
In file included from /Users/odoronin/saras-master/src/tests/units/nlin_test.cc:44:
/Users/odoronin/saras-master/src/tests/global/unittest.h:51:29: error: use of undeclared identifier 'real'
void testError(blitz::Array<real, 3> A, blitz::Array<real, 3> B, int errorMom, real errorTol);
                            ^
/Users/odoronin/saras-master/src/tests/global/unittest.h:51:29: error: use of undeclared identifier 'real'
/Users/odoronin/saras-master/src/tests/global/unittest.h:51:29: error: use of undeclared identifier 'real'
In file included from /Users/odoronin/saras-master/src/tests/units/differ_test.cc:44:
/Users/odoronin/saras-master/src/tests/global/unittest.h:51:29: error: use of undeclared identifier 'real'
void testError(blitz::Array<real, 3> A, blitz::Array<real, 3> B, int errorMom, real errorTol);
                            ^
/Users/odoronin/saras-master/src/tests/global/unittest.cc:45:29: error: use of undeclared identifier 'real'
void testError(blitz::Array<real, 3> A, blitz::Array<real, 3> B, int errorMom, real errorTol) {
                            ^
/Users/odoronin/saras-master/src/tests/global/unittest.h:51:29: error: use of undeclared identifier 'real'
/Users/odoronin/saras-master/src/tests/global/unittest.h:51:54: error: use of undeclared identifier 'real'
void testError(blitz::Array<real, 3> A, blitz::Array<real, 3> B, int errorMom, real errorTol);
                                                     ^
/Users/odoronin/saras-master/src/tests/global/unittest.h:51:29: error: use of undeclared identifier 'real'
/Users/odoronin/saras-master/src/tests/global/unittest.h:51:54: error: use of undeclared identifier 'real'
void testError(blitz::Array<real, 3> A, blitz::Array<real, 3> B, int errorMom, real errorTol);
                                                     ^
/Users/odoronin/saras-master/src/tests/global/unittest.cc:45:29: error: use of undeclared identifier 'real'
/Users/odoronin/saras-master/src/tests/global/unittest.h:51:80: error: unknown type name 'real'
void testError(blitz::Array<real, 3> A, blitz::Array<real, 3> B, int errorMom, real errorTol);
                                                                               ^
/Users/odoronin/saras-master/src/tests/global/unittest.h:51:80: error: unknown type name 'real'
void testError(blitz::Array<real, 3> A, blitz::Array<real, 3> B, int errorMom, real errorTol);
                                                                               ^
/Users/odoronin/saras-master/src/tests/global/unittest.h:51:54: error: use of undeclared identifier 'real'
void testError(blitz::Array<real, 3> A, blitz::Array<real, 3> B, int errorMom, real errorTol);
                                                     ^
/Users/odoronin/saras-master/src/tests/global/unittest.h:53:18: error: unknown type name 'real'
void printResult(real computedValue, real errorTolerance);
                 ^
/Users/odoronin/saras-master/src/tests/global/unittest.h:51:54: error: use of undeclared identifier 'real'
void testError(blitz::Array<real, 3> A, blitz::Array<real, 3> B, int errorMom, real errorTol);
                                                     ^
/Users/odoronin/saras-master/src/tests/global/unittest.cc:45:54: error: use of undeclared identifier 'real'
void testError(blitz::Array<real, 3> A, blitz::Array<real, 3> B, int errorMom, real errorTol) {
                                                     ^
/Users/odoronin/saras-master/src/tests/global/unittest.h:53:18: error: unknown type name 'real'
void printResult(real computedValue, real errorTolerance);
                 ^
/Users/odoronin/saras-master/src/tests/global/unittest.h:53:38: error: unknown type name 'real'
void printResult(real computedValue, real errorTolerance);
                                     ^
In file included from /Users/odoronin/saras-master/src/tests/units/field_test.cc:44:
/Users/odoronin/saras-master/src/tests/global/unittest.h:51:29: error: use of undeclared identifier 'real'
void testError(blitz::Array<real, 3> A, blitz::Array<real, 3> B, int errorMom, real errorTol);
                            ^
/Users/odoronin/saras-master/src/tests/global/unittest.h:51:80: error: unknown type name 'real'
void testError(blitz::Array<real, 3> A, blitz::Array<real, 3> B, int errorMom, real errorTol);
                                                                               ^
/Users/odoronin/saras-master/src/tests/global/unittest.h:51:80: error: unknown type name 'real'
void testError(blitz::Array<real, 3> A, blitz::Array<real, 3> B, int errorMom, real errorTol);
                                                                               ^
/Users/odoronin/saras-master/src/tests/global/unittest.cc:45:80: error: unknown type name 'real'
void testError(blitz::Array<real, 3> A, blitz::Array<real, 3> B, int errorMom, real errorTol) {
                                                                               ^
/Users/odoronin/saras-master/src/tests/global/unittest.h:53:38: error: unknown type name 'real'
void printResult(real computedValue, real errorTolerance);
                                     ^
/Users/odoronin/saras-master/src/tests/global/unittest.h:53:18: error: unknown type name 'real'
void printResult(real computedValue, real errorTolerance);
                 ^
/Users/odoronin/saras-master/src/tests/global/unittest.h:53:18: error: unknown type name 'real'
void printResult(real computedValue, real errorTolerance);
                 ^
/Users/odoronin/saras-master/src/tests/global/unittest.cc:47:5: error: unknown type name 'real'
    real errorVal;
    ^
/Users/odoronin/saras-master/src/tests/global/unittest.h:51:29: error: use of undeclared identifier 'real'
/Users/odoronin/saras-master/src/tests/global/unittest.h:53:38: error: unknown type name 'real'
void printResult(real computedValue, real errorTolerance);
                                     ^
/Users/odoronin/saras-master/src/tests/global/unittest.h:53:38: error: unknown type name 'real'
void printResult(real computedValue, real errorTolerance);
                                     ^
/Users/odoronin/saras-master/src/tests/global/unittest.cc:81:18: error: unknown type name 'real'
void printResult(real computedValue, real errorTolerance) {
                 ^
/Users/odoronin/saras-master/src/tests/global/unittest.cc:81:38: error: unknown type name 'real'
void printResult(real computedValue, real errorTolerance) {
                                     ^
/Users/odoronin/saras-master/src/tests/global/unittest.h:51:54: error: use of undeclared identifier 'real'
void testError(blitz::Array<real, 3> A, blitz::Array<real, 3> B, int errorMom, real errorTol);
                                                     ^
/Users/odoronin/saras-master/src/tests/global/unittest.h:51:80: error: unknown type name 'real'
void testError(blitz::Array<real, 3> A, blitz::Array<real, 3> B, int errorMom, real errorTol);
                                                                               ^
In file included from /Users/odoronin/saras-master/src/tests/units/hydro_test.cc:44:
/Users/odoronin/saras-master/src/tests/global/unittest.h:51:29: error: use of undeclared identifier 'real'
/Users/odoronin/saras-master/src/tests/global/unittest.h:53:18:void testError(blitz::Array<real, 3> A, blitz::Array<real, 3> B, int errorMom, real errorTol);
                            ^error
: unknown type name 'real'
void printResult(real computedValue, real errorTolerance);
                 ^
/Users/odoronin/saras-master/src/tests/global/unittest.h:53:38: error: unknown type name 'real'
void printResult(real computedValue, real errorTolerance);
                                     ^
/Users/odoronin/saras-master/src/tests/global/unittest.h:51:29: error: use of undeclared identifier 'real'
/Users/odoronin/saras-master/src/tests/global/unittest.h:51:54: error: use of undeclared identifier 'real'
void testError(blitz::Array<real, 3> A, blitz::Array<real, 3> B, int errorMom, real errorTol);
                                                     ^
/Users/odoronin/saras-master/src/tests/global/unittest.h:51:80: error: unknown type name 'real'
void testError(blitz::Array<real, 3> A, blitz::Array<real, 3> B, int errorMom, real errorTol);
                                                                               ^
/Users/odoronin/saras-master/src/tests/global/unittest.h:53:18: error: unknown type name 'real'
void printResult(real computedValue, real errorTolerance);
                 ^
/Users/odoronin/saras-master/src/tests/global/unittest.h:53:38: error: unknown type name 'real'
void printResult(real computedValue, real errorTolerance);
                                     ^
13 errors generated.
make[2]: *** [src/tests/CMakeFiles/saras_test.dir/global/unittest.cc.o] Error 1
make[2]: *** Waiting for unfinished jobs....
6 errors generated.
make[2]: *** [src/tests/CMakeFiles/saras_test.dir/main.cc.o] Error 1
/Users/odoronin/saras-master/src/tests/units/differ_test.cc:54:12: error: no matching constructor for initialization of 'sfield'
    sfield F(gridData, "F", true, true, true);
           ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/odoronin/saras-master/lib/field/sfield.h:69:9: note: candidate constructor not viable: requires 2 arguments, but 5 were provided
        sfield(const grid &gridData, std::string fieldName);
        ^
/Users/odoronin/saras-master/lib/field/sfield.h:54:7: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 5 were provided
class sfield {
      ^
/Users/odoronin/saras-master/src/tests/units/differ_test.cc:55:12: error: no matching constructor for initialization of 'sfield'
    sfield dF(gridData, "dF", true, true, true);
           ^  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/odoronin/saras-master/lib/field/sfield.h:69:9: note: candidate constructor not viable: requires 2 arguments, but 5 were provided
        sfield(const grid &gridData, std::string fieldName);
        ^
/Users/odoronin/saras-master/lib/field/sfield.h:54:7: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 5 were provided
class sfield {
      ^
/Users/odoronin/saras-master/src/tests/units/nlin_test.cc:75:22: error: non-const lvalue reference to type 'plainvf' cannot bind to a value of unrelated type 'vfield'
    V.computeNLin(V, H_calculat);
                     ^~~~~~~~~~
/Users/odoronin/saras-master/lib/field/vfield.h:78:52: note: passing argument to parameter 'H' here
        void computeNLin(const vfield &V, plainvf &H);
                                                   ^
/Users/odoronin/saras-master/src/tests/units/nlin_test.cc:77:31: error: no member named 'F' in 'blitz::Array<float, 3>'
    testError(H_analytic.Vx.F.F, H_calculat.Vx.F.F, 1, errorTolerance);
              ~~~~~~~~~~~~~~~ ^
/Users/odoronin/saras-master/src/tests/units/nlin_test.cc:77:50: error: no member named 'F' in 'blitz::Array<float, 3>'
    testError(H_analytic.Vx.F.F, H_calculat.Vx.F.F, 1, errorTolerance);
                                 ~~~~~~~~~~~~~~~ ^
/Users/odoronin/saras-master/src/tests/units/nlin_test.cc:83:23: error: no member named 'F' in 'blitz::Array<float, 3>'
    for (int i=V.Vx.F.F.lbound(0); i <= V.Vx.F.F.ubound(0); i++) {
               ~~~~~~ ^
/Users/odoronin/saras-master/src/tests/units/nlin_test.cc:83:48: error: no member named 'F' in 'blitz::Array<float, 3>'
    for (int i=V.Vx.F.F.lbound(0); i <= V.Vx.F.F.ubound(0); i++) {
                                        ~~~~~~ ^
/Users/odoronin/saras-master/src/tests/units/nlin_test.cc:84:27: error: no member named 'F' in 'blitz::Array<float, 3>'
        for (int j=V.Vx.F.F.lbound(1); j <= V.Vx.F.F.ubound(1); j++) {
                   ~~~~~~ ^
/Users/odoronin/saras-master/src/tests/units/nlin_test.cc:84:52: error: no member named 'F' in 'blitz::Array<float, 3>'
        for (int j=V.Vx.F.F.lbound(1); j <= V.Vx.F.F.ubound(1); j++) {
                                            ~~~~~~ ^
/Users/odoronin/saras-master/src/tests/units/field_test.cc:55:12: error: no matching constructor for initialization of 'sfield'
/Users/odoronin/saras-master/src/tests/units/nlin_test.cc    sfield div(gridData, "DIV", true, true, true);:
85:           ^   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~31
: error: no member /Users/odoronin/saras-master/lib/field/sfield.hnamed: 69'F':9 :in  'blitz::Array<float, 3>'note:
candidate constructor not viable: requires 2 arguments, but 5 were provided
        sfield(const grid &gridData, std::string fieldName);            for (int k=V.Vx.F.F.lbound(2); k <= V.Vx.F.F.ubound(2); k++) {

        ^
                       ~~~~~~ ^
/Users/odoronin/saras-master/lib/field/sfield.h:54:7: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 5 were provided
class sfield {
      ^
/Users/odoronin/saras-master/src/tests/units/nlin_test.cc:85:56: error: no member named 'F' in 'blitz::Array<float, 3>'
            for (int k=V.Vx.F.F.lbound(2); k <= V.Vx.F.F.ubound(2); k++) {
                                                ~~~~~~ ^
/Users/odoronin/saras-master/src/tests/units/nlin_test.cc:86:24: error: no member named 'F' in 'blitz::Array<float, 3>'
                V.Vx.F.F(i, j, k) = sin(2.0*M_PI*mesh.xColloc(i)/mesh.xLen)*
                ~~~~~~ ^
/Users/odoronin/saras-master/src/tests/units/field_test.cc:81:23: error: no member named 'F' in 'blitz::Array<float, 3>'
    for (int i=V.Vx.F.F.lbound(0); i <= V.Vx.F.F.ubound(0); i++) {
               ~~~~~~ ^
/Users/odoronin/saras-master/src/tests/units/field_test.cc:81:48: error: no member named 'F' in 'blitz::Array<float, 3>'
    for (int i=V.Vx.F.F.lbound(0); i <= V.Vx.F.F.ubound(0); i++) {
                                        ~~~~~~ ^
/Users/odoronin/saras-master/src/tests/units/field_test.cc:82:27: error: no member named 'F' in 'blitz::Array<float, 3>'
        for (int j=V.Vx.F.F.lbound(1); j <= V.Vx.F.F.ubound(1); j++) {
                   ~~~~~~ ^
/Users/odoronin/saras-master/src/tests/units/field_test.cc:82:52: error: no member named 'F' in 'blitz::Array<float, 3>'
        for (int j=V.Vx.F.F.lbound(1); j <= V.Vx.F.F.ubound(1); j++) {
/Users/odoronin/saras-master/src/tests/units/nlin_test.cc                                            ~~~~~~ ^:
90:24: error: no member named 'F' in 'blitz::Array<float, 3>'
                H.Vx.F.F(i, j, k) = M_PI*sin(4.0*M_PI*mesh.xColloc(i)/mesh.xLen)*
                ~~~~~~ ^
/Users/odoronin/saras-master/src/tests/units/field_test.cc:83:31: error: no member named 'F' in 'blitz::Array<float, 3>'
            for (int k=V.Vx.F.F.lbound(2); k <= V.Vx.F.F.ubound(2); k++) {
                       ~~~~~~ ^
/Users/odoronin/saras-master/src/tests/units/field_test.cc:83:56: error: no member named 'F' in 'blitz::Array<float, 3>'
            for (int k=V.Vx.F.F.lbound(2); k <= V.Vx.F.F.ubound(2); k++) {
                                                ~~~~~~ ^
/Users/odoronin/saras-master/src/tests/units/field_test.cc:84:24: error: no member named 'F' in 'blitz::Array<float, 3>'
                V.Vx.F.F(i, j, k) = sin(2.0*M_PI*mesh.xColloc(i)/mesh.xLen)*
                ~~~~~~ ^
/Users/odoronin/saras-master/src/tests/units/nlin_test.cc:109:23: error: no member named 'F' in 'blitz::Array<float, 3>'
    for (int i=V.Vy.F.F.lbound(0); i <= V.Vy.F.F.ubound(0); i++) {
               ~~~~~~ ^
/Users/odoronin/saras-master/src/tests/units/nlin_test.cc:109:48: error: no member named 'F' in 'blitz::Array<float, 3>'
    for (int i=V.Vy.F.F.lbound(0); i <= V.Vy.F.F.ubound(0); i++) {
                                        ~~~~~~ ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
/Users/odoronin/saras-master/src/tests/units/field_test.cc:102:23: error: no member named 'F' in 'blitz::Array<float, 3>'
    for (int i=V.Vy.F.F.lbound(0); i <= V.Vy.F.F.ubound(0); i++) {
               ~~~~~~ ^
/Users/odoronin/saras-master/src/tests/units/field_test.cc:102:48: error: no member named 'F' in 'blitz::Array<float, 3>'
    for (int i=V.Vy.F.F.lbound(0); i <= V.Vy.F.F.ubound(0); i++) {
                                        ~~~~~~ ^
/Users/odoronin/saras-master/src/tests/units/field_test.cc:103:27: error: no member named 'F' in 'blitz::Array<float, 3>'
        for (int j=V.Vy.F.F.lbound(1); j <= V.Vy.F.F.ubound(1); j++) {
                   ~~~~~~ ^
/Users/odoronin/saras-master/src/tests/units/field_test.cc:103:52: error: no member named 'F' in 'blitz::Array<float, 3>'
        for (int j=V.Vy.F.F.lbound(1); j <= V.Vy.F.F.ubound(1); j++) {
                                            ~~~~~~ ^
/Users/odoronin/saras-master/src/tests/units/field_test.cc:104:31: error: no member named 'F' in 'blitz::Array<float, 3>'
            for (int k=V.Vy.F.F.lbound(2); k <= V.Vy.F.F.ubound(2); k++) {
                       ~~~~~~ ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
20 errors generated.
/Users/odoronin/saras-master/src/tests/units/poisson_test.cc:59:12: error: no matching constructor for initialization of 'sfield'
    sfield rho(gridData, "rho", true, true, true);
           ^   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/odoronin/saras-master/lib/field/sfield.h:69:9: note: candidate constructor not viable: requires 2 arguments, but 5 were provided
        sfield(const grid &gridData, std::string fieldName);
        ^
/Users/odoronin/saras-master/lib/field/sfield.h:54:7: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 5 were provided
class sfield {
      ^
/Users/odoronin/saras-master/src/tests/units/poisson_test.cc:60:12: error: no matching constructor for initialization of 'sfield'
    sfield P_analytic(gridData, "P_anl", true, true, true);
           ^          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/odoronin/saras-master/lib/field/sfield.h:69:9: note: candidate constructor not viable: requires 2 arguments, but 5 were provided
        sfield(const grid &gridData, std::string fieldName);
        ^
/Users/odoronin/saras-master/lib/field/sfield.h:54:7: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 5 were provided
class sfield {
      ^
/Users/odoronin/saras-master/src/tests/units/poisson_test.cc:61:12: error: no matching constructor for initialization of 'sfield'
    sfield P_calculat(gridData, "P_cal", true, true, true);
           ^          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/Users/odoronin/saras-master/lib/field/sfield.h:69:9: note: candidate constructor not viable: requires 2 arguments, but 5 were provided
        sfield(const grid &gridData, std::string fieldName);
        ^
/Users/odoronin/saras-master/lib/field/sfield.h:54:7: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 5 were provided
class sfield {
      ^
make[2]: *** [src/tests/CMakeFiles/saras_test.dir/units/nlin_test.cc.o] Error 1
make[2]: *** [src/tests/CMakeFiles/saras_test.dir/units/field_test.cc.o] Error 1
8 errors generated.
make[2]: *** [src/tests/CMakeFiles/saras_test.dir/units/differ_test.cc.o] Error 1
9 errors generated.
make[2]: *** [src/tests/CMakeFiles/saras_test.dir/units/poisson_test.cc.o] Error 1
6 errors generated.
make[2]: *** [src/tests/CMakeFiles/saras_test.dir/units/hydro_test.cc.o] Error 1
make[1]: *** [src/tests/CMakeFiles/saras_test.dir/all] Error 2
make: *** [all] Error 2
roshansamuel commented 3 years ago

Hi @olgadoronina, the error you are getting is most likely due to MPI failing to initialize at MPI_Init(). I suspect that not just SARAS, but any MPI code might give the same error. Can you please confirm if a simple MPI example code runs on your system? If you are running MacOS, this link might help.

The second set of errors is from enabling the TEST_RUN flag in the build script. Kindly disable the flag as it was used only during an early stage of development and is no longer in use. We will remove the flag to avoid confusion in the future. To test SARAS, please run testSaras.sh script in the tests/ folder. You can also test the multi-grid solver by running testPoisson.sh script inside the same folder.

nickwimer commented 3 years ago

Hi @roshansamuel I have had no more success with installing SARAS on MacOS. I have also attempted install on Eagle supercomputer and again, it failed.

Finally, I switched to NERSC Cori machine and everything installed correctly as described in your documentation. I have tried running the testSaras.sh script and it appears to run correctly, however when I try to run validate_ldc.py, the error is: "Could not open file output/Soln_0030.0000.h5"

testPoisson.sh runs without any errors.

I should also note that scipy is needed to run validate_ldc.py though it is not listed in the README.

roshansamuel commented 3 years ago

Hi @nickwimer the error in opening Soln_0030.0000.h5 was due to a bug in validate_ldc.py and it has been corrected. The README has also been updated as you suggested. We thank you for inputs.

It would be very helpful if you can post the error you faced when installing on Eagle supercomputer and MacOS. The error in MPI_Init() in MacOS can be resolved using the suggestion in this link. We have tried to address as many installation issues as possible, and would like to eliminate any outstanding issues.

roshansamuel commented 3 years ago

Hi @nickwimer @olgadoronina , were you able to complete the tests of the code?

olgadoronina commented 3 years ago

Hi @roshansamuel, I was going to go through the installation process again with updated instructions, but it seems like http://turbulencehub.org/ to download libraries is not available.

roshansamuel commented 3 years ago

Hi @olgadoronina, SARAS is now compatible with the latest versions of all the dependent libraries. You do not have to install the libraries from turbulencehub now. The README has been updated to reflect this. All the download links now point to the latest tarballs of each library. Ideally, it is best to use the libraries supplied by the package manager of your OS (for CMake, MPICH, HDF5 etc.).

The Blitz and yaml-cpp libraries can now be downloaded from their respective Git repositories. The installation instructions have been updated for this as well.

The process of building SARAS has also been updated. You can make a build directory and run CMake from within it now. The compileScript, which seemed to be a source of confusion, has been removed. Hope this makes the installation of SARAS more aligned with that of other standard packages.

kyleniemeyer commented 3 years ago

Hi @olgadoronina, do you have the bandwidth to check the updated installation process? Thanks for hanging in there.

roshansamuel commented 3 years ago

Hi @kyleniemeyer, can something be done to finish the review? We have installed and run SARAS on various workstations and clusters without encountering hiccups.

Blitz++ and yaml-cpp are the only dependencies that actually require manual installation to run SARAS. The other libraries (CMake, MPICH, and HDF5) are very commonly available in most software repositories and don't usually require to be built manually from source.

Previously there was a restriction on version compatibility of yaml-cpp. We subsequently addressed this issue and made SARAS compatible with the latest libraries.

Two publications of results using SARAS are out, and a third one is in preparation. We are unable to cite SARAS appropriately in all these works. It has now been 1.5 years since the submission of our software to JoSS. We understand that the pandemic has placed significant impediments in the review process. However, we would be highly obliged if this review can be completed after so long a time period.

kyleniemeyer commented 3 years ago

@roshansamuel yes, I think we can move forward with this—thanks for your patience! I'm going to take a final look at your paper.

In the meantime, can you please archive the software repo (e.g., on Zenodo or Figshare) and provide the DOI here?

roshansamuel commented 3 years ago

@kyleniemeyer thank you very much.

A tagged release of SARAS has been archived on Zenodo and its DOI is https://doi.org/10.5281/zenodo.5205320

kyleniemeyer commented 3 years ago

@whedon set archive as 10.5281/zenodo.5205320

whedon commented 3 years ago

I'm sorry human, I don't understand that. You can see what commands I support by typing:

@whedon commands
kyleniemeyer commented 3 years ago

@whedon set 10.5281/zenodo.5205320 as archive

whedon commented 3 years ago

OK. 10.5281/zenodo.5205320 is the archive.

kyleniemeyer commented 3 years ago

@whedon generate pdf

whedon commented 3 years ago

:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:

kyleniemeyer commented 3 years ago

Hi @roshansamuel, just a few comments about the article:

  1. Can you please change the "Summary" section to "Summary and Statement of Need", or otherwise break out part of the section as an explicit "Statement of Need" section? We have made that a required element of JOSS papers.
  2. Regarding the sentence "We are planning to conduct a scaling analysis of SARAS and compare its performance with TARANG in the near future": is this still true? If this has been done in the time since original submission, it would be good to add this result and citation, or modify the language here if not.
  3. In the Ghia et al. citation, I think you need brackets around Re in the article title, to preseve capitalization (i.e., {Re})
roshansamuel commented 3 years ago

@whedon generate pdf

whedon commented 3 years ago

:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:

roshansamuel commented 3 years ago

Hi @kyleniemeyer, thank you for the corrections. We have updated the paper as you said.

  1. The "Summary" section has been broken up to add a "Statement of Need" section.
  2. We had performed a preliminary scaling analysis using 1024 cores, but we need to optimize the solver further before moving on to higher numbers of cores. We now mention this in the paper.
  3. The bib file for the Ghia citation has been corrected. Thank you for pointing this out.
kyleniemeyer commented 3 years ago

great! this all looks good to me now.

kyleniemeyer commented 3 years ago

@whedon accept

whedon commented 3 years ago

To recommend a paper to be accepted use @whedon recommend-accept

kyleniemeyer commented 3 years ago

@whedon recommend-accept

whedon commented 3 years ago
Attempting dry run of processing paper acceptance...
whedon commented 3 years ago
Reference check summary (note 'MISSING' DOIs are suggestions that need verification):

OK DOIs

- 10.1017/S0305004100023197 is OK
- 10.1063/1.1761178 is OK
- 10.1016/j.jpdc.2017.10.014 is OK
- 10.1098/rspa.1937.0036 is OK
- 10.1063/1.1761178 is OK
- 10.1137/1.9780898719505 is OK
- 10.1016/0021-9991(82)90058-4 is OK
- 10.1016/0017-9310(72)90054-3 is OK
- 10.1098/rspa.1991.0076 is OK
- 10.1007/BF01448839 is OK
- 10.1007/978-3-642-84108-8 is OK
- 10.1007/978-3-642-56026-2 is OK
- 10.1007/3-540-49372-7_24 is OK
- 10.1088/1742-6596/899/2/022017 is OK
- 10.1007/s12043-013-0594-4 is OK
- 10.1017/9781316810019 is OK
- 10.1007/s42979-020-00184-1 is OK
- 10.1063/1.168744 is OK
- 10.1016/S0021-9991(03)00298-5 is OK
- 10.2514/6.2013-287 is OK
- 10.1016/S0010-4655(02)00334-X is OK

MISSING DOIs

- None

INVALID DOIs

- None
whedon commented 3 years ago

:wave: @openjournals/joss-eics, this paper is ready to be accepted and published.

Check final proof :point_right: https://github.com/openjournals/joss-papers/pull/2515

If the paper PDF and Crossref deposit XML look good in https://github.com/openjournals/joss-papers/pull/2515, then you can now move forward with accepting the submission by compiling again with the flag deposit=true e.g.

@whedon accept deposit=true
kyleniemeyer commented 3 years ago

@whedon accept deposit=true

whedon commented 3 years ago
Doing it live! Attempting automated processing of paper acceptance...
whedon commented 3 years ago

🐦🐦🐦 👉 Tweet for this paper 👈 🐦🐦🐦

whedon commented 3 years ago

🚨🚨🚨 THIS IS NOT A DRILL, YOU HAVE JUST ACCEPTED A PAPER INTO JOSS! 🚨🚨🚨

Here's what you must now do:

  1. Check final PDF and Crossref metadata that was deposited :point_right: https://github.com/openjournals/joss-papers/pull/2516
  2. Wait a couple of minutes, then verify that the paper DOI resolves https://doi.org/10.21105/joss.02095
  3. If everything looks good, then close this review issue.
  4. Party like you just published a paper! 🎉🌈🦄💃👻🤘

    Any issues? Notify your editorial technical team...

kyleniemeyer commented 3 years ago

Congratulations @roshansamuel on your article's publication in JOSS! Thanks for your patience through this long review process.

Many thanks to @dlagrava, @olgadoronina, and @nickwimer for reviewing this submission.