Closed editorialbot closed 9 months ago
Hello humans, I'm @editorialbot, a robot that can help you with some common editorial tasks.
For a list of things I can do to help you, just type:
@editorialbot commands
For example, to regenerate the paper pdf after making changes in the paper's md or bib files, type:
@editorialbot generate pdf
Reference check summary (note 'MISSING' DOIs are suggestions that need verification):
OK DOIs
- 10.1785/0120210004 is OK
- 10.1016/j.tecto.2019.05.004 is OK
- 10.1029/2021JB023519 is OK
- 10.1016/j.epsl.2021.117037 is OK
- 10.1016/j.epsl.2022.117593 is OK
- 10.1029/2008JB005934 is OK
- 10.1785/0120210178 is OK
- 10.1002/2016JB012857 is OK
- 10.1002/2016JB013778 is OK
- 10.1016/j.tecto.2019.228171 is OK
- 10.1029/2007JB004930 is OK
- 10.1115/1.4005896 is OK
- 10.1029/2020JB020865 is OK
- 10.1029/2021JB023726 is OK
- 10.1186/s40623-021-01465-6 is OK
- 10.1186/s40623-022-01649-8 is OK
- 10.1186/s40623-019-1113-8 is OK
- 10.1126/science.1218796 is OK
- 10.1029/2019JB018557 is OK
- 10.1109/JPROC.2004.840301 is OK
- 10.1029/2019GC008515 is OK
- 10.1109/38.56302 is OK
- 10.1063/1.4823180 is OK
- 10.1007/978-3-540-30218-6_19 is OK
- 10.1029/2022JB025106 is OK
MISSING DOIs
- 10.1109/mcc.1998.736436 may be a valid DOI for title: Numerical recipes in Fortran 90 the art of parallel scientific computing
INVALID DOIs
- None
Software report:
github.com/AlDanial/cloc v 1.88 T=0.22 s (301.9 files/s, 101588.0 lines/s)
-------------------------------------------------------------------------------
Language files blank comment code
-------------------------------------------------------------------------------
Fortran 90 29 2956 3577 9983
Bourne Shell 24 315 484 3195
Perl 1 108 44 499
Markdown 5 217 0 294
TeX 1 27 0 265
make 3 35 0 70
YAML 1 2 13 54
MATLAB 1 8 2 33
Fortran 77 1 0 9 21
-------------------------------------------------------------------------------
SUM: 66 3668 4129 14414
-------------------------------------------------------------------------------
gitinspector failed to run statistical information for the repository
Wordcount for paper.md
is 740
:point_right::page_facing_up: Download article proof :page_facing_up: View article proof on GitHub :page_facing_up: :point_left:
@mherman09 @willic3 :wave: Welcome to JOSS and thanks for agreeing to review! The comments from @editorialbot above outline the review process, which takes place in this thread (possibly with issues filed in the Motorcycle repository). I'll be watching this thread if you have any questions.
The JOSS review is different from most other journals. Our goal is to work with the authors to help them meet our criteria instead of merely passing judgment on the submission. As such, reviewers are encouraged to submit issues and pull requests on the software repository. When doing so, please mention this issue so that a link is created to this thread (and I can keep an eye on what is happening). Please also feel free to comment and ask questions on this thread. In my experience, it is better to post comments/questions/suggestions as you come across them instead of waiting until you've reviewed the entire package.
We aim for reviews to be completed within a month or two. Please let me know if you require some more time. We can also use editorialbot to set automatic reminders if you know you'll be away for a known period of time.
Please feel free to ping me (@jedbrown) if you have any questions/concerns.
Hi @mherman09, @willic3! What is the state of your reviews? Are you waiting on something from @sbarbot?
Dear Kristen,
I sincerely apologise, but this had completely fallen through the cracks for me. I will try to get this done within the next couple of weeks.
Thanks, Charles
Charles Williams I Geodynamic Modeler GNS Science I Te Pῡ Ao 1 Fairway Drive, Avalon 5010, PO Box 30368, Lower Hutt 5040, New Zealand Ph 0064-4-570-4566 I Mob 0064-22-350-7326 I Fax 0064-4-570-4600 http://www.gns.cri.nz/ I Email: @.**@.>
On 19/04/2023, at 1:40 AM, Kristen Thyng @.***> wrote:
CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you recognize the sender and know the content is safe:
Hi @mherman09https://github.com/mherman09, @willic3https://github.com/willic3! What is the state of your reviews? Are you waiting on something from @sbarbothttps://github.com/sbarbot?
— Reply to this email directly, view it on GitHubhttps://github.com/openjournals/joss-reviews/issues/5097#issuecomment-1513180382, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ABJHOVJJYXKR3LNDKVW6F5DXB2KWJANCNFSM6AAAAAAUEMZM7E. You are receiving this because you were mentioned.
Notice: This email and any attachments are confidential and may not be used, published or redistributed without the prior written consent of the Institute of Geological and Nuclear Sciences Limited (GNS Science). If received in error please destroy and immediately notify GNS Science. Do not copy or disclose the contents.
Hi Kristen,
Thank you for the reminder. I have been buried by teaching this semester. I have started on the technical review, but will need some additional time to complete it. Hopefully, like Charles, I will be able to do the review in the next few weeks. I will put additional reminders on my calendar!
matt
On Tue, Apr 18, 2023 at 6:40 AM Kristen Thyng @.***> wrote:
Hi @mherman09 https://github.com/mherman09, @willic3 https://github.com/willic3! What is the state of your reviews? Are you waiting on something from @sbarbot https://github.com/sbarbot?
— Reply to this email directly, view it on GitHub https://github.com/openjournals/joss-reviews/issues/5097#issuecomment-1513180382, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACFJARHMN574IXQ32JDLSGTXB2KWLANCNFSM6AAAAAAUEMZM7E . You are receiving this because you were mentioned.Message ID: @.***>
Ok thank you @willic3 and @mherman09! @jedbrown or I will try to pop back in with some friendly reminders too.
Dear Kristen,
I was hoping to be able to work on this, but with my upcoming schedule I don’t see any way I can fit it in. I am leaving for the USA on 26 May and I have a huge list of things to finish before I leave. I will not be back at work until 11 July. I doubt that the review could wait that long, but I would be willing to work on it when I return in July.
I am very sorry for this, but things have kept piling up.
Cheers, Charles
Charles Williams I Geodynamic Modeler GNS Science I Te Pῡ Ao 1 Fairway Drive, Avalon 5010, PO Box 30368, Lower Hutt 5040, New Zealand Ph 0064-4-570-4566 I Mob 0064-22-350-7326 I Fax 0064-4-570-4600 http://www.gns.cri.nz/ I Email: @.**@.>
On 19/04/2023, at 1:40 AM, Kristen Thyng @.***> wrote:
CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you recognize the sender and know the content is safe:
Hi @mherman09https://github.com/mherman09, @willic3https://github.com/willic3! What is the state of your reviews? Are you waiting on something from @sbarbothttps://github.com/sbarbot?
— Reply to this email directly, view it on GitHubhttps://github.com/openjournals/joss-reviews/issues/5097#issuecomment-1513180382, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ABJHOVJJYXKR3LNDKVW6F5DXB2KWJANCNFSM6AAAAAAUEMZM7E. You are receiving this because you were mentioned.
Notice: This email and any attachments are confidential and may not be used, published or redistributed without the prior written consent of the Institute of Geological and Nuclear Sciences Limited (GNS Science). If received in error please destroy and immediately notify GNS Science. Do not copy or disclose the contents.
@willic3 Thanks for letting us know. @jedbrown could you work on finding a replacement reviewer?
Hi All,
May I suggest Olaf Zielke. He and colleague Martin Mai at KAUST just released a similar code called MCQsim. See https://pubs.geoscienceworld.org/ssa/bssa/article-abstract/doi/10.1785/0120220248/622487/MCQsim-A-Multicycle-Earthquake-Simulator
Olaf's email is @.**@.>
I don't have any previous or ongoing collaboration with him.
Best wishes, Sylvain
From: Kristen Thyng @.> Sent: Wednesday, May 3, 2023 7:46:04 AM To: openjournals/joss-reviews @.> Cc: Sylvain Barbot @.>; Mention @.> Subject: Re: [openjournals/joss-reviews] [REVIEW]: Motorcycle: A spectral boundary-integral method for seismic cycles on multiple faults (Issue #5097)
@willic3https://urldefense.com/v3/__https://github.com/willic3__;!!LIr3w8kk_Xxm!s90oknhoy1iub9DMKk6e7R-yLgEAIbvto5erVnH9V4vA97WausLGrsfWMg5vieY1k2xHtPOaifDeAXHAXyKN1yI$ Thanks for letting us know. @jedbrownhttps://urldefense.com/v3/__https://github.com/jedbrown__;!!LIr3w8kk_Xxm!s90oknhoy1iub9DMKk6e7R-yLgEAIbvto5erVnH9V4vA97WausLGrsfWMg5vieY1k2xHtPOaifDeAXHA8mjCnGo$ could you work on finding a replacement reviewer?
— Reply to this email directly, view it on GitHubhttps://urldefense.com/v3/__https://github.com/openjournals/joss-reviews/issues/5097*issuecomment-1533159471__;Iw!!LIr3w8kk_Xxm!s90oknhoy1iub9DMKk6e7R-yLgEAIbvto5erVnH9V4vA97WausLGrsfWMg5vieY1k2xHtPOaifDeAXHAATbOHII$, or unsubscribehttps://urldefense.com/v3/__https://github.com/notifications/unsubscribe-auth/ABJHTWDZRKSWOBZKH7KB3JLXEJVSZANCNFSM6AAAAAAUEMZM7E__;!!LIr3w8kk_Xxm!s90oknhoy1iub9DMKk6e7R-yLgEAIbvto5erVnH9V4vA97WausLGrsfWMg5vieY1k2xHtPOaifDeAXHA8rDdqlY$. You are receiving this because you were mentioned.Message ID: @.***>
Hi All,
I would also recommend the following computationally inclined young people with experience in numerical modeling of seismic cycles:
Jiayi Ye, Swiss Seismological Service (SED), ETH Zürich, @. Betti Hegyi, Structural Geology & Tectonics ETH Zürich, @. You Wu, Computational Geomechanics ETH Zürich, @.***
Other more senior people with relevant experience include:
Prithvi Thakur, University of Michigan, @. Mohamed Abdelmeguid, California Institute of Technology, @.
Best wishes, Sylvain
From: Sylvain Barbot @.***> Sent: Wednesday, May 3, 2023 8:42 AM To: openjournals/joss-reviews; openjournals/joss-reviews Cc: Mention Subject: Re: [openjournals/joss-reviews] [REVIEW]: Motorcycle: A spectral boundary-integral method for seismic cycles on multiple faults (Issue #5097)
Hi All,
May I suggest Olaf Zielke. He and colleague Martin Mai at KAUST just released a similar code called MCQsim. See https://pubs.geoscienceworld.org/ssa/bssa/article-abstract/doi/10.1785/0120220248/622487/MCQsim-A-Multicycle-Earthquake-Simulator
Olaf's email is @.**@.>
I don't have any previous or ongoing collaboration with him.
Best wishes, Sylvain
From: Kristen Thyng @.> Sent: Wednesday, May 3, 2023 7:46:04 AM To: openjournals/joss-reviews @.> Cc: Sylvain Barbot @.>; Mention @.> Subject: Re: [openjournals/joss-reviews] [REVIEW]: Motorcycle: A spectral boundary-integral method for seismic cycles on multiple faults (Issue #5097)
@willic3https://urldefense.com/v3/__https://github.com/willic3__;!!LIr3w8kk_Xxm!s90oknhoy1iub9DMKk6e7R-yLgEAIbvto5erVnH9V4vA97WausLGrsfWMg5vieY1k2xHtPOaifDeAXHAXyKN1yI$ Thanks for letting us know. @jedbrownhttps://urldefense.com/v3/__https://github.com/jedbrown__;!!LIr3w8kk_Xxm!s90oknhoy1iub9DMKk6e7R-yLgEAIbvto5erVnH9V4vA97WausLGrsfWMg5vieY1k2xHtPOaifDeAXHA8mjCnGo$ could you work on finding a replacement reviewer?
— Reply to this email directly, view it on GitHubhttps://urldefense.com/v3/__https://github.com/openjournals/joss-reviews/issues/5097*issuecomment-1533159471__;Iw!!LIr3w8kk_Xxm!s90oknhoy1iub9DMKk6e7R-yLgEAIbvto5erVnH9V4vA97WausLGrsfWMg5vieY1k2xHtPOaifDeAXHAATbOHII$, or unsubscribehttps://urldefense.com/v3/__https://github.com/notifications/unsubscribe-auth/ABJHTWDZRKSWOBZKH7KB3JLXEJVSZANCNFSM6AAAAAAUEMZM7E__;!!LIr3w8kk_Xxm!s90oknhoy1iub9DMKk6e7R-yLgEAIbvto5erVnH9V4vA97WausLGrsfWMg5vieY1k2xHtPOaifDeAXHA8rDdqlY$. You are receiving this because you were mentioned.Message ID: @.***>
@sbarbot Thank you for these suggestions! As long as they are not conflicted with you — can you provide their github usernames (without "@")? Their email addresses have been filtered out and github will be better anyway.
(I had started sending emails and will continue based on responses/lack of responses.)
Ah sorry to step on toes. I'll step out of this now but just @ me if needed.
@sbarbot I was finally able to install and start running Motorcycle. My semester is over so I hope to have this review to you in the next week. I am really sorry for the delay. One quick question: I am not familiar with using Bitbucket - what is the best way to open issues there?
Thank you for your time and efforts. I truly appreciate it. I have activated the issue tracker on Bitbucket. You can now simply click on "Issues" on the left panel and then "Create issue". I look forward to your comments.
The motorcycle
package is excellent so far - installation is generally smooth, the examples work as advertised, and I was able to set up and run my own models building off the examples. I brought up four minor issues as I was working through the checklist up to this point:
motorcycle-ap-ratestate-bath-serial
), but I could not find any way to compile the executables (Issue #2)awk
command (Issue #3)motorcycle
repository. (Issue #4)@editorialbot add @thehalfspace as reviewer
@thehalfspace added to the reviewers list!
:wave: Welcome @thehalfspace! Please see the top of the issue and this comment for instructions.
You can make a comment with the following line to get started:
@editorialbot generate my checklist
@mherman09 I have addressed issues #1, #3, and #4, but I cannot reproduce issue #2. I can compile and run motorcycle-ap-ratestate-bath-serial. Could you please double-check?
I double-checked, and I am not able to compile motorcycle-ap-ratestate-bath-serial
. I am in the directory motorcycle/2d/antiplane
, and edited my makefile for my brew installation to look like this:
# make file for compilation with brew in serial
INCPATH=-I/usr/local/include
LIBS=-L/usr/local/lib -lnetcdff -lfftw3_omp -lfftw3 -lm
FC=gfortran-13
CC=gcc-13
motorcycle-ap-ratestate-bath-serial: EXTRA=-DBATH
FFLAGS=$(INCPATH) -cpp -Wall -DNETCDF -DODE45 -fopenmp -finit-local-zero -ffree-line-length-none \
-O3 -ffast-math -w -fallow-argument-mismatch $(EXTRA)
CFLAGS=$(INCPATH)
SRC=src-serial
DST=build
include common.mk
Typing make motorcycle-ap-ratestate-serial
works fine, and the executable generates the expected output in the test scripts. Typing make motorcycle-ap-ratestate-bath-serial
leads to many compiler errors related to variables not being present in the Fortran structures simulation_struct
and patch_element_struct
:
10:16:25 antiplane $ make motorcycle-ap-ratestate-bath-serial
gfortran-13 -I/usr/local/include -cpp -Wall -DNETCDF -DODE45 -fopenmp -finit-local-zero -ffree-line-length-none -O3 -ffast-math -w -fallow-argument-mismatch -DBATH -c src-serial/ratestate_bath.f90 -o build/ratestate_bath.o -J build
src-serial/ratestate_bath.f90:243:33:
243 | ALLOCATE(in%profileTemperature(in%nFault))
| 1
Error: 'profiletemperature' at (1) is not a member of the 'simulation_struct' structure
src-serial/ratestate_bath.f90:245:27:
245 | in%profileTemperature(i)%rate=exportNetcdfRate
| 1
Error: 'profiletemperature' at (1) is not a member of the 'simulation_struct' structure
(I did not copy all the errors here for brevity, but I can provide them as needed.)
@mherman09, to compile motorcycle-ap-ratestate-bath-serial
, the code that takes into account temperature effects, after you compiled motorcycle-ap-ratestate-serial
, use
make clean
make motorcycle-ap-ratestate-bath-serial
Otherwise, the compiled objects will be missing several key variables. I added relevant instructions in INSTALL.md
.
Thank you again for your feedback. Let me know if there are further issues or suggestions.
Great! That works. Just so you know, the new INSTALL.md says:
The binary file will be located in `motorcycle/2d/antiplane/build/motorcycle-ap-ratestate-serial`. The `-serial` suffix indicates serial or shared-memory parallelism with *OpenMP*. To compile the code that includes thermal effects in the same directory, use
make clean
make motorcycle-ap-ratestate-serial
But I think the second instruction should be make motorcycle-ap-ratestate-bath-serial
, right?
Also, is there a particular reason why the two executables (with and without thermal effects) should not both be able to be built and available for a user?
Correct. This should be make motorcycle-ap-ratestate-bath-serial
. I updated the README to include the codes with temperature effects
motorcycle-ap-ratestate-serial
computes simulations of seismic cycles within the anti-plane strain approximation with OpenMP parallelism.motorcycle-ap-ratestate-bath-serial
computes simulations of seismic cycles within the anti-plane strain approximation including thermal effects with OpenMP parallelism.motorcycle-ps-ratestate-serial
computes simulations of seismic cycles within the in-plane strain approximation with OpenMP parallelism.motorcycle-3d-ratestate
computes simulations of seismic cycles on finite parallel faults in an elastic space with MPI parallelism.motorcycle-3d-ratestate-bath
computes simulations of seismic cycles on finite parallel faults in an elastic space with thermal effect with MPI parallelism.I also added instructions to compile motorcycle-3d-ratestate-bath
in INSTALL.md
.
Thank you again for checking everything.
Summary: Has a clear description of the high-level functionality and purpose of the software for a diverse, non-specialist audience been provided?
The high-level functionality of motorcycle
is concisely described. Its purpose is clear to me as a person who thinks about earthquake cycles and geodynamics problems. I am not sure that the purpose is clear for a "diverse, non-specialist audience," but I think this might require too much geophysics/engineering background for this type of paper. I personally think the Summary is nicely written, so I am going to check the item off the list.
@sbarbot @jedbrown I believe my review is finished. I think the Motorcycle package fulfills all the items on the checklist! Thank you for thinking of me as a reviewer, and again I apologize for the delay.
Thanks, @mherman09.
@thehalfspace :wave: Just checking if there's anything you need for your review?
@thehalfspace :wave: Can you let us know when you'll be able to complete your review?
Hi Dr. Jed,
Sorry for the delay. I got booted from my work and had to spend some time looking for work so as to maintain my visa status, hence the delay.
I'll have the review sent out within a week.
Sincerely, — Prithvi Thakur Graduate Student University of Michigan Personal Website
Sent with Proton Mail secure email.
------- Original Message ------- On Saturday, August 12th, 2023 at 10:31 AM, Jed Brown @.***> wrote:
@.***(https://github.com/thehalfspace) 👋 Can you let us know when you'll be able to complete your review?
— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>
Uff, sounds rough. I'm glad that's resolved, and thanks for the update.
I have tested the motorcycle software and its core functionalities on my local machine. The package is excellent with very well written documentation, and the tests are described appropriately. The comparison with other softwares are appropriately referenced via SCEC benchmark suites, and the applications of this software is also appropriately referenced in the README. I had to browse through the other comments from @mherman09 and @sbarbot to compile motorcycle-ap-ratestate-bath-serial, but I believe they are sufficiently documented in the INSTALL.md file now. I do not have any major comments on the application and I recommend publishing it. I am only pointing out a few minor comments below and some suggestions for future work:
run.sh
) early in the documentation as a section on parameter setup. It was easy for me to follow but I believe for someone with less experience in seismic cycle simulations, it would make it easier to start with as a jumping-off point, and the end user would not have to browse through a list of files to run a test simulation.I do not have more comments, and I apologize for the delay in sending my review.
-Prithvi
@thehalfspace,
Thank you for your comments. Following additional comments from @jedbrown on another software, I will also include a global procedure for compilation and installation using CMake
. I have to learn more about it, so it will take a bit of time.
Regarding point 1, do you suggest I provide a functional input file embedded in the documentation? I had thought of it, but a functioning, meaningful input file is very long, requiring many fault patches, making it less practical than a standalone bash
file in the examples/tutorials
directory. Or do you suggest I add a link to a file in the documentation? Or I could add a command-line option to dump a functioning input file to the standard output. What do you recommend more specifically?
Point 2 is clear.
Point 3 is a great suggestion. Can docker be used with mpirun
for the 3d case?
I was just suggesting adding a link/reference to examples/tutorial directory somewhere near the top of the documentation or in README. Yes, I don't think adding a functional input file would be very useful as each case would require a separate file and would be needed to updated constantly as more features get added, which is a source for more bugs.
Point 3 is more of a recommendation for future work. I have myself not run docker with mpirun
yet, but I do know that it is not very trivial to implement, especially with fortran libraries. I know it can be done though (for example, look at Fenics or Firedrake packages). I think conda virtual environment with a docker container might be the way to go?
Containers work fine. I've mostly used Singularity and Shifter, both of which have the ability to use the host MPI (which might use a vendor network). One anti-pattern is that people realize that when releasing software inside a container, they only need to build in one environment, and then the software is never tested or built elsewhere, which usually leads to maintenance problems.
@thehalfspace I have created an online document that links to the repository at https://motorcycle.readthedocs.io/. The online documentation includes example input files. I have added pointers to the tutorial examples in README.md
.
I have added hyperlinks to netcdf, netcdf-f, openmpi, and fftw in INSTALL.md
.
I am still working on streamlining the configuration and installation.
@jedbrown I have added a cmake
installation for all the binary files of the package. The installation is tested with a bitbucket pipeline. I believe this was the remaining task for this project. Are you ready to accept the paper for publication?
This isn't a blocker, but running make -j
(or if -j
flags are in MAKEFLAGS
), the build fails due to errors like this.
f951: Fatal Error: Cannot rename module file ‘exportnetcdf.mod0’ to ‘exportnetcdf.mod’: No such file or directory
compilation terminated.
Error copying Fortran module "2d/antiplane/src-serial/exportnetcdf.mod". Tried "2d/antiplane/src-serial/EXPORTNETCDF.mod" and "2d/antiplane/src-serial/exportnetcdf.mod".
Error copying Fortran module "3d/src/exportnetcdf.mod". Tried "3d/src/EXPORTNETCDF.mod" and "3d/src/exportnetcdf.mod".
This is usually caused by incorrectly-specified dependencies. If I use cmake -G Ninja ..
and then ninja
, I get
[33/140] Generating Fortran dyndep file 2d/antiplane/src-serial/CMakeFiles/motorcycle-ap-ratestate-cz-serial.dir/Fortran.dd
ninja: build stopped: multiple rules generate 2d/antiplane/src-serial/types.mod.
This suggests that make -j1
(serial) succeeding is probably non-deterministic.
The code is not amenable to fully parallel builds. Only the different subdirectories defined in ADD_SUBDIRECTORY
should be built in parallel, but CMake attempts to build all the ADD_EXECUTABLE
commands in parallel. The only apparent solution is to use make -j1
.
There is another, more pressing issue. CMake
does not allow multithreaded fftw
with OpenMP
. CMake
only inserts the -lfftw3_omp
library, when both -lfftw3_omp
and -lfftw3
should be set. As a result, we can compile and eventually run the code with CMake
without OpenMP
parallelism, but the performance is not optimal. This is a CMake
bug.
@jedbrown I have fixed the issue with OpenMP
. Unless you have other concerns or suggestions, I believe this is ready for publication.
Sorry about the disruption. For the parallel build, I think it's because the same file names are used for those modules and CMake evidently doesn't know how to use -J
to control the module output directory. If you made sure that the modules have unique names (either by avoiding copies or by giving them different names), I think the parallel build would work. (Fortran module names are effectively global and to my knowledge, the language doesn't offer namespacing so CMake does something plausible and in signature style, doesn't check for collisions.) This is not a blocker, but it either needs to be fixed or documented.
On the second issue, I can fix the compile failure when USE_OPENMP=0
with this:
diff --git i/cmake/FindFFTW.cmake w/cmake/FindFFTW.cmake
index b042aa8..44730b6 100644
--- i/cmake/FindFFTW.cmake
+++ w/cmake/FindFFTW.cmake
@@ -14,8 +14,10 @@ ENDIF()
FIND_PATH(FFTW_INCLUDES fftw3.h)
FIND_LIBRARY(FFTW_LIBRARIES NAMES fftw3)
+set(FFTW_REQUIRED FFTW_LIBRARIES)
IF (USE_OPENMP)
FIND_LIBRARY(FFTW_OMP_LIBRARIES NAMES fftw3_omp)
+ list(PREPEND FFTW_REQUIRED FFTW_OMP_LIBRARIES)
ENDIF()
MESSAGE("-- FFTW library: " ${FFTW_LIBRARIES} " " ${FFTW_OMP_LIBRARIES})
@@ -23,6 +25,6 @@ MESSAGE("-- FFTW library: " ${FFTW_LIBRARIES} " " ${FFTW_OMP_LIBRARIES})
# handle the QUIETLY and REQUIRED arguments and set FFTW_FOUND to TRUE if
# all listed variables are TRUE
INCLUDE(FindPackageHandleStandardArgs)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(FFTW DEFAULT_MSG FFTW_LIBRARIES FFTW_OMP_LIBRARIES FFTW_INCLUDES)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(FFTW DEFAULT_MSG ${FFTW_REQUIRED} FFTW_INCLUDES)
MARK_AS_ADVANCED(FFTW_LIBRARIES FFTW_OMP_LIBRARIES FFTW_INCLUDES)
And then it links both when USE_OPENMP=1
and only the serial otherwise. When both are linked, I see this, which looks right except the link order should be reversed -- you can change by reversing the order where you currently have ${FFTW_LIBRARIES} ${FFTW_OMP_LIBRARIES}
.
$ readelf -d 2d/antiplane/build/motorcycle-ap-ratestate-cz-serial
Dynamic section at offset 0x1fd60 contains 34 entries:
Tag Type Name/Value
0x0000000000000001 (NEEDED) Shared library: [libnetcdff.so.7]
0x0000000000000001 (NEEDED) Shared library: [libnetcdf.so.19]
0x0000000000000001 (NEEDED) Shared library: [libfftw3.so.3]
0x0000000000000001 (NEEDED) Shared library: [libfftw3_omp.so.3]
0x0000000000000001 (NEEDED) Shared library: [libgfortran.so.5]
0x0000000000000001 (NEEDED) Shared library: [libm.so.6]
0x0000000000000001 (NEEDED) Shared library: [libgomp.so.1]
0x0000000000000001 (NEEDED) Shared library: [libgcc_s.so.1]
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
[...]
@jedbrown Thank you for the suggestions. I can now run cmake
with -DUSE_OPENMP=1
and -DUSE_OPENMP=0
. I also switched the order of the libraries libfftw3_omp and libfftw3.
Running otool
, I get the following output:
$ otool -L 2d/antiplane/build/motorcycle-ap-ratestate-cz-serial 2d/antiplane/build/motorcycle-ap-ratestate-cz-serial: /usr/local/opt/netcdf-fortran/lib/libnetcdff.7.dylib (compatibility version 7.0.0, current version 7.1.0) /usr/local/opt/netcdf/lib/libnetcdf.19.dylib (compatibility version 19.0.0, current version 19.0.0) /usr/local/opt/fftw/lib/libfftw3_omp.3.dylib (compatibility version 10.0.0, current version 10.10.0) /usr/local/opt/fftw/lib/libfftw3.3.dylib (compatibility version 10.0.0, current version 10.10.0) /usr/local/opt/gcc/lib/gcc/current/libgfortran.5.dylib (compatibility version 6.0.0, current version 6.0.0) /usr/local/opt/gcc/lib/gcc/current/libgomp.1.dylib (compatibility version 2.0.0, current version 2.0.0) /usr/local/opt/gcc/lib/gcc/current/libgcc_s.1.1.dylib (compatibility version 1.0.0, current version 1.1.0) /usr/local/opt/gcc/lib/gcc/current/libquadmath.0.dylib (compatibility version 1.0.0, current version 1.0.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1292.100.5)
Sounds good. Would you mind making the module names distinct? (Part of the issue is that many build tools are parallel by default (or users have MAKEFLAGS=-j8
) and the present configuration is outright rejected by the build tools many would prefer, such as Ninja. I think it's also a vulnerability/brittleness that could arise in a future CMake version since its Fortran generator interprets module names as global.)
$ cmake -G Ninja ..
[...]
$ ninja
[30/140] Generating Fortran dyndep file 2d/antiplane/src-serial/CMakeFiles/motorcycle-ap-ratestate-cz-serial.dir/Fortran.dd
ninja: build stopped: multiple rules generate 2d/antiplane/src-serial/types.mod.
I'm not sure how to operate. It looks like all binary files need their separate versions of the module files. I may need to separate each version of the binary file into a designated folder where a separate copy of the module files can be found. That seems suboptimal to me, as I would need to maintain several copies of the same file. I already do this to some extent for the codes in 2d/antiplane
, 2d/planestrain
, and 3d
for modules like exportnetcdf
and types
, but now I would need to do this for even more versions of the code. Do you have a better idea of how to proceed? I can see the appeal of using Ninja. It is very fast.
Submitting author: !--author-handle-->@sbarbot<!--end-author-handle-- (Sylvain Barbot) Repository: https://bitbucket.org/sbarbot/motorcycle/src/master/ Branch with paper.md (empty if default branch): Version: v1.0 Editor: !--editor-->@jedbrown<!--end-editor-- Reviewers: @mherman09, @willic3, @thehalfspace Archive: 10.5281/zenodo.10129331
Status
Status badge code:
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
@mherman09 & @willic3, your review will be checklist based. Each of you will have a separate checklist that you should update when carrying out your review. First of all you need to run this command in a separate comment to create the checklist:
The reviewer guidelines are available here: https://joss.readthedocs.io/en/latest/reviewer_guidelines.html. Any questions/concerns please let @jedbrown know.
✨ Please start on your review when you are able, and be sure to complete your review in the next six weeks, at the very latest ✨
Checklists
📝 Checklist for @mherman09
📝 Checklist for @willic3
📝 Checklist for @thehalfspace