Hi Rainer, I downloaded a fresh version of chrono, thrust 1.17.2, and referenced thrust 1.17.2 in the cmake as below:
*cmake -S /Users/Akthem/chrono -B build \* *-DCMAKE_BUILD_TYPE=Release \* *-DOpenMP_CXX_FLAGS:STRING="-Xclang -fopenmp" \* *-DOpenMP_C_FLAGS:STRING="-Xclang -fopenmp" \* *-DOpenMP_C_INCLUDE_DIR:PATH=-L/opt/homebrew/opt/libomp/lib \* *-DOpenMP_CXX_INCLUDE_DIR:PATH=/opt/homebrew/opt/libomp/include \* *-DOpenMP_C_LIB_NAMES:STRING=libomp \* *-DOpenMP_CXX_LIB_NAMES:STRING=libomp \* *-DOpenMP_libomp_LIBRARY:FILEPATH="/opt/homebrew/opt/libomp/lib/libomp.dylib" \* *-DTHRUST_INCLUDE_DIR:PATH=/Users/Akthem/Downloads/thrust-1.17.2 \* *-DBLAZE_INSTALL_DIR:PATH=/usr/local/include \* *-DBLAZE_VERSION_FILENAME=/usr/local/include/blaze/system/Version.h \* *-DENABLE_MODULE_POSTPROCESS:BOOL=ON \* *-DENABLE_MODULE_VEHICLE:BOOL=ON \* *-DENABLE_MODULE_IRRLICHT:BOOL=ON \* *-DENABLE_MODULE_MULTICORE=ON \* *-DIRRLICHT_INSTALL_DIR:PATH=/opt/homebrew* The *cmake --build build *progresses further but returns the following error: */usr/local/include/blaze/system/BLAS.h:58:10: **fatal error: **'cblas.h' file not found* #include BLAZE_BLAS_INCLUDE_FILE * ^~~~~~~~~~~~~~~~~~~~~~~* */usr/local/include/blaze/config/BLAS.h:208:33: note: *expanded from macro 'BLAZE_BLAS_INCLUDE_FILE' #define BLAZE_BLAS_INCLUDE_FILE <cblas.h> * ^~~~~~~~~* *<scratch space>:440:1: note: *expanded from here <cblas.h> *^~~~~~~~~* 10 warnings and 1 error generated. make[2]: *** [src/chrono_multicore/CMakeFiles/ChronoEngine_multicore.dir/ChDataManager.cpp.o] Error 1 make[1]: *** [src/chrono_multicore/CMakeFiles/ChronoEngine_multicore.dir/all] Error 2 make: *** [all] Error 2 Looks like the error has to do with Blaze and/or Blas this round. The version I downloaded is the latest 3.8.2. Do I have to go back to older versions like thrust? Which version? Further, the cmake I tried above is a skimmed version of what I was originally trying to run: *cmake -S /Users/Akthem/chrono -B build \* *-DCMAKE_BUILD_TYPE=Release \* *-DOpenMP_CXX_FLAGS:STRING="-Xclang -fopenmp" \* *-DOpenMP_C_FLAGS:STRING="-Xclang -fopenmp" \* *-DOpenMP_C_INCLUDE_DIR:PATH=-L/opt/homebrew/opt/libomp/lib \* *-DOpenMP_CXX_INCLUDE_DIR:PATH=/opt/homebrew/opt/libomp/include \* *-DOpenMP_C_LIB_NAMES:STRING=libomp \* *-DOpenMP_CXX_LIB_NAMES:STRING=libomp \* *-DOpenMP_libomp_LIBRARY:FILEPATH="/opt/homebrew/opt/libomp/lib/libomp.dylib" \* *-DTHRUST_INCLUDE_DIR:PATH=/Users/Akthem/Downloads/thrust-1.17.2 \* *-DBLAZE_INSTALL_DIR:PATH=/usr/local/include \* *-DBLAZE_VERSION_FILENAME=/usr/local/include/blaze/system/Version.h \* *-DIRRLICHT_INSTALL_DIR=/opt/homebrew/Cellar/irrlicht/1.8.5_1 \* *-DENABLE_MODULE_POSTPROCESS:BOOL=ON \* *-DENABLE_MODULE_VEHICLE:BOOL=ON \* *-DENABLE_MODULE_IRRLICHT:BOOL=ON \* *-DENABLE_MODULE_MULTICORE=ON \* *-DENABLE_MODULE_MODAL=ON \* *-DENABLE_MODULE_POSTPROCESS=ON \* *-DENABLE_MODULE_PYTHON=ON \* *-DBUILD_DEMOS=ON* This returns the modal module related error, as per my understanding, below: */Users/Akthem/chrono/src/chrono_modal/ChEigenvalueSolver.cpp:28:10: **fatal error: **'Spectra/KrylovSchurGEigsSolver.h' file not found* #include <Spectra/KrylovSchurGEigsSolver.h> * ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~* 10 warnings and 1 error generated. make[2]: *** [src/chrono_modal/CMakeFiles/ChronoEngine_modal.dir/ChEigenvalueSolver.cpp.o] Error 1 make[1]: *** [src/chrono_modal/CMakeFiles/ChronoEngine_modal.dir/all] Error 2 make: *** [all] Error 2 It seems my Chrono installation is refusing to go through smoothy =) Thank you for your continued patience and support. Best Akthem On Monday, May 8, 2023 at 10:50:09 AM UTC+3 [email protected] wrote: > Hi Akthem, > > your mail was a surprise for me, since I had no problems with > thrust-1.16.0. No further configuration is necessary when configuring > chrono. I tried the actual thrust-2.1.0 yet - and got the same error that > you reported. The thrust project has changed its policy of supporting > different configurations (serial, OMP, CUDA). It looks to me only cuda is > supported now. The last version to work with chrono is 1.7.2. I tested it > today and was able to run all unit tests successfully. So I can recommend > it to you. > > Best, > Rainer > > [email protected] schrieb am Dienstag, 2. Mai 2023 um 22:39:03 UTC+2: > >> As for the CFD coupling with Chrono, yes it would be great have an expert >> help with that. >> >> On Tuesday, May 2, 2023 at 11:29:57 PM UTC+3 Akthem Rehab wrote: >> >>> Hi Rainer, >>> Thank you for your helpful reply and apologies for the delayed response. >>> Following your lead, I did the following: >>> >>> 1- - Install libomp with homebrew (that will bring omp.h for and other >>> good things). Straight forward! >>> 2- - Install thrust, well it is header-only, you must tell cmake the >>> correct include path. I added this line to chrono's cmakelists.txt: >>> set(THRUST_INCLUDE_DIR /Users/Akthem/Downloads/thrust) >>> include_directories(${THRUST_INCLUDE_DIR}) >>> 3- - Install blaze, also header only, same procedure like thrust. I >>> added this line to chrono's cmakelists.txt: >>> include_directories(/Users/Akthem/Downloads/blaze-3.8.2) >>> >>> Further, I changed *cmake/FindThrust.cmake* contents to (with chatgpt >>> help): >>> find_path(THRUST_INCLUDE_DIR thrust/version.h PATHS ${THRUST_ROOT_DIR} >>> NO_DEFAULT_PATH) >>> if (THRUST_INCLUDE_DIR) >>> file(READ "${THRUST_INCLUDE_DIR}/thrust/version.h" >>> THRUST_VERSION_FILE) >>> string(REGEX MATCH "#define THRUST_VERSION_MAJOR ([0-9]*)" _ >>> "${THRUST_VERSION_FILE}") >>> set(THRUST_VERSION_MAJOR ${CMAKE_MATCH_1}) >>> string(REGEX MATCH "#define THRUST_VERSION_MINOR ([0-9]*)" _ >>> "${THRUST_VERSION_FILE}") >>> set(THRUST_VERSION_MINOR ${CMAKE_MATCH_1}) >>> string(REGEX MATCH "#define THRUST_VERSION_PATCH ([0-9]*)" _ >>> "${THRUST_VERSION_FILE}") >>> set(THRUST_VERSION_PATCH ${CMAKE_MATCH_1}) >>> set(THRUST_VERSION >>> "${THRUST_VERSION_MAJOR}.${THRUST_VERSION_MINOR}.${THRUST_VERSION_PATCH}") >>> set(THRUST_FOUND TRUE) >>> message(STATUS "Found Thrust: ${THRUST_INCLUDE_DIR} (found version >>> ${THRUST_VERSION})") >>> else () >>> message(FATAL_ERROR "Could not find Thrust library.") >>> endif () >>> >>> This leads to a successful cmake as per the below command: >>> >>> cmake -S /Users/Akthem/chrono -B build \ >>> >>> -DCMAKE_BUILD_TYPE=Release \ >>> >>> -DOpenMP_CXX_FLAGS:STRING="-Xclang -fopenmp" \ >>> >>> -DOpenMP_C_FLAGS:STRING="-Xclang -fopenmp" \ >>> >>> -DOpenMP_C_INCLUDE_DIR:PATH=-L/opt/homebrew/opt/libomp/lib \ >>> >>> -DOpenMP_CXX_INCLUDE_DIR:PATH=/opt/homebrew/opt/libomp/include \ >>> >>> -DOpenMP_C_LIB_NAMES:STRING=libomp \ >>> >>> -DOpenMP_CXX_LIB_NAMES:STRING=libomp \ >>> >>> -DOpenMP_libomp_LIBRARY:FILEPATH="/opt/homebrew/opt/libomp/lib/libomp.dylib" >>> >>> \ >>> >>> -DTHRUST_INCLUDE_DIR:PATH=${DEPFIX}/include \ >>> >>> -DBLAZE_INSTALL_DIR:PATH=*/usr/local/include \* >>> >>> *-DENABLE_MODULE_POSTPROCESS:BOOL=ON \* >>> >>> *-DENABLE_MODULE_VEHICLE:BOOL=ON \* >>> >>> *-DENABLE_MODULE_IRRLICHT:BOOL=ON \* >>> >>> *-DENABLE_MODULE_MULTICORE=ON \* >>> >>> *-DIRRLICHT_INSTALL_DIR:PATH=/opt/homebrew* >>> >>> >>> Then, I follow through with *cmake --build build *and get the below >>> error: >>> >>> >>> */Users/Akthem/Downloads/thrust/thrust/detail/type_traits.h:27:10: **fatal >>> error: **'cuda/std/type_traits' file not found* >>> >>> #include <cuda/std/type_traits> >>> >>> * ^~~~~~~~~~~~~~~~~~~~~~* >>> >>> 10 warnings and 1 error generated. >>> >>> make[2]: *** >>> [src/chrono/CMakeFiles/ChronoEngine.dir/physics/ChBody.cpp.o] Error 1 >>> >>> make[1]: *** [src/chrono/CMakeFiles/ChronoEngine.dir/all] Error 2 >>> >>> make: *** [all] Error 2 >>> >>> >>> I tried to comment out the line causing the error in the above mentioned >>> file: >>> >>> #include <cuda/std/type_traits> >>> >>> >>> This leads to other errors and a fatal error linked to cuda too. Could >>> you please check my workflow/syntax and let me know where did I go wrong. >>> Alternatively, if all went well, then how to overcome this hurdle? >>> >>> >>> Thank you, >>> >>> >>> Sincerely, >>> >>> Akthem >>> >>> >>> >>> >>> On Thursday, April 27, 2023 at 5:24:33 PM UTC+2 [email protected] >>> wrote: >>> >>>> Hi Akthem, >>>> >>>> I cannot answer all your questions, since I know nearly nothing about >>>> the subject of your work, but I can try to find other collegues familiar >>>> with chrono and fluid simulation. >>>> >>>> I can help you to get over the macOS issues yet. >>>> >>>> 1) Xcode, I sometimes have the same error you got. That helped on my >>>> machine, type on the command line : >>>> sudo xcode-select -s /Applications/Xcode.app/Contents/Developer >>>> >>>> 2) Using OpenMP on the Mac: >>>> - install libomp with homebrew (that will bring omp.h for and other >>>> good things) >>>> - install thrust, well it is header-only, you must tell cmake the >>>> correct include path >>>> - install blaze, also header only, same procedure like thrust >>>> >>>> Now comes the cumbersome part, give all information to cmake >>>> >>>> cmake -G Ninja -S $REPOSITORY -B build \ >>>> -DCMAKE_BUILD_TYPE=Release \ >>>> -DOpenMP_CXX_FLAGS:STRING="-Xclang -fopenmp" \ >>>> -DOpenMP_C_FLAGS:STRING="-Xclang -fopenmp" \ >>>> -DOpenMP_C_INCLUDE_DIR:PATH=-L/opt/homebrew/opt/libomp/lib \ >>>> -DOpenMP_CXX_INCLUDE_DIR:PATH=/opt/homebrew/opt/libomp/include \ >>>> -DOpenMP_C_LIB_NAMES:STRING=libomp \ >>>> -DOpenMP_CXX_LIB_NAMES:STRING=libomp \ >>>> -DOpenMP_libomp_LIBRARY:FILEPATH="/opt/homebrew/opt/libomp/lib/libomp.dylib" >>>> >>>> \ >>>> -DTHRUST_INCLUDE_DIR:PATH=${DEPFIX}/include \ >>>> -DBLAZE_INSTALL_DIR:PATH=${DEPFIX}/include \ >>>> ... your desired settings ... >>>> >>>> Best Regards >>>> >>>> Rainer >>>> [email protected] schrieb am Donnerstag, 27. April 2023 um 01:02:45 >>>> UTC+2: >>>> >>>>> Hi Rainer, >>>>> Thank you! Following the instructions to the letter successfully >>>>> builds and installs Chrono as per the two scenarios you provided above. >>>>> On >>>>> a side note, Ninja and the default Unix Makefiles worked while Xcode >>>>> returned errors asking for default compilers. Perhaps this is an error >>>>> related to my mac setup! >>>>> >>>>> Having another go on the documentation, it clearly states that the FSI >>>>> and Sensor modules are not supported in MacOS. However, I think >>>>> Multicore could be built on MacOS if Thrust could be built on top of >>>>> openMP. Could you please confirm if this is correct/doable? If correct, >>>>> could you share updated syntax and dependencies for the cmake and build? >>>>> From my end I had a failed attempt trying to cmake Thrust with the >>>>> following command: cmake -DTHRUST_DEVICE_BACKEND=OMP >>>>> /path/to/thrust/source >>>>> >>>>> Based on a pump health monitoring simulation use-case I am working >>>>> on, and given that FSI and Sensor are not within my disposal, I came up >>>>> with this workflow utilizing open-source Mac friendly tools: >>>>> >>>>> 1. Create the pump geometry using FreeCAD. >>>>> 2. Mesh the pump geometry using GMSH (or perhaps CFMesh) and >>>>> export it to OpenFOAM format. >>>>> 3. Set up the simulation using OpenFOAM and the Elmer-OpenFOAM >>>>> library. Use OpenFOAM to solve for the fluid flow and ElmerFEM to >>>>> solve for >>>>> the structural mechanics. Use the Elmer-OpenFOAM library to couple the >>>>> two >>>>> solvers. >>>>> 4. In the simulation, introduce random faults (such as >>>>> misalignment, unbalance, bearing fault, or others) and simulate the >>>>> vibration acceleration. >>>>> 5. Use Chrono to simulate the fault propagation and pump failure. >>>>> Although Chrono's Sensor and FSI modules are not available, Chrono is >>>>> still >>>>> used for rigid body dynamics capabilities to simulate the mechanical >>>>> behavior of the pump. >>>>> 6. Export the vibration (acceleration) data from Chrono to >>>>> Paraview for visualization and analysis. >>>>> 7. Use the FEM workbench in FreeCAD to analyze the vibration data >>>>> and estimate the remaining useful life of the pump and/or faulty >>>>> component. >>>>> >>>>> >>>>> >>>>> As I am researching and picking my toolset before getting to work, >>>>> your input on the workflow will be highly valued and appreciated. If any >>>>> of >>>>> the above can still be done with Chrono to minimize the number of tools, >>>>> handovers, and of course the learning curve and time, please let me know. >>>>> Any other feedback is welcome too! >>>>> >>>>> Thank you! >>>>> >>>>> Sincerely, >>>>> Akthem >>>>> On Wednesday, April 26, 2023 at 8:35:28 AM UTC+2 [email protected] >>>>> wrote: >>>>> >>>>>> Hi Akthem, >>>>>> >>>>>> beginning the work with a complex project is always a challenge and >>>>>> one problem is: macOS does not support all chrono modules! >>>>>> >>>>>> It helps to begin with a minimal configuration: >>>>>> >>>>>> rm -rf build >>>>>> cmake -S /where/your/chrono/source/is -B build >>>>>> >>>>>> my chrono sources are in ${HOME}/Documents/GitHub/chrono but this is >>>>>> not a law of nature, just take the path of your installation. >>>>>> 'build' is the directory, where the configuration and the build take >>>>>> place. The build directory must be empty! The configuration should work. >>>>>> >>>>>> cmake --build build >>>>>> >>>>>> or >>>>>> >>>>>> cd build >>>>>> make >>>>>> >>>>>> This should run without errors. What you get is a basic configuration >>>>>> with a couple of demos in build/bin >>>>>> >>>>>> Try the demos. Unfortunately we have to generate Mac Bundles, so to >>>>>> start an example you must write >>>>>> >>>>>> cd bin >>>>>> ./demo_CH_EulerAngles.app/Content/MacOS/demo_CH_EulerAngles >>>>>> >>>>>> or >>>>>> >>>>>> run_app.sh demo_CH_EulerAngles.app >>>>>> >>>>>> if you have installed the convenience script from >>>>>> *chronoSRC/contrib/appbundle-macosx* >>>>>> >>>>>> I am a vehicle simulation guy and I want to have the vehicle module >>>>>> enabled. Also necessary is postprocessing and 3d graphics: >>>>>> >>>>>> rm -rf build >>>>>> cmake -S /where/your/chrono/source/is -B build \ >>>>>> -DCMAKE_BUILD_TYPE=Release \ >>>>>> -DENABLE_MODULE_POSTPROCESS:BOOL=ON \ >>>>>> -DENABLE_MODULE_VEHICLE:BOOL=ON \ >>>>>> -DENABLE_MODULE_IRRLICHT:BOOL=ON \ >>>>>> -DIRRLICHT_INSTALL_DIR:PATH=/opt/homebrew >>>>>> >>>>>> cmake generates Unix Makefiles by default, a faster alternative is >>>>>> ninja (cmake -G Ninja ....) or even better with and IDE (cmake -G Xcode >>>>>> ...). >>>>>> ninja can be installed with homebrew. You also need gnuplot, can also >>>>>> be installed with homebrew. >>>>>> >>>>>> Some modules in chrono can only work with Nvidia hardware and require >>>>>> cuda. Cuda is not available for macOS as well as OptiX. >>>>>> Alternative for Irrlicht is VSG. It also works well, but some >>>>>> functionality is lacking actually. The configuration for OpenGL is >>>>>> messed >>>>>> up for macOS, so don't try it, or better try it and repair it. Generally >>>>>> spoken: activate only the modules that you ar willing to use! >>>>>> >>>>>> Good Start! >>>>>> >>>>>> Rainer >>>>>> [email protected] schrieb am Mittwoch, 26. April 2023 um 00:56:59 >>>>>> UTC+2: >>>>>> >>>>>>> Hi Project Chrono Team, >>>>>>> I spent the day trying to Cmake project chrono. I followed the Mac >>>>>>> OS instructions in Chrono tutorial install >>>>>>> <https://api.projectchrono.org/tutorial_install_chrono.html>. I >>>>>>> used the preset "macOS CI Configuration" and generator "Unix Makefiles" >>>>>>> in >>>>>>> the cmake GUI. >>>>>>> >>>>>>> This succeeds in building and generating project chrono after making >>>>>>> sure the value for "THRUST_INCLUDE_DIR" is empty. However it was built >>>>>>> and >>>>>>> generated with Sensor, Distributed, GPU, FSI, and Multicore disabled. >>>>>>> Multicore requires Thrust while the other modules require Cuda. Both >>>>>>> were >>>>>>> not found. >>>>>>> >>>>>>> I failed to install Thrust without Cuda in a Mac Silicon. *Question >>>>>>> 1: Am I missing something or did I follow the steps correctly and none >>>>>>> of >>>>>>> these modules can be run on a Mac Silicon?* >>>>>>> >>>>>>> Moving forward, I attempted to make from the generated build using: >>>>>>> >>>>>>> >>>>>>> make CXXFLAGS="-Xpreprocessor -fopenmp" LDFLAGS="-lomp" >>>>>>> >>>>>>> >>>>>>> This was based on the MacOS clang++ issues highlighted in step 8. >>>>>>> This results in 8 warnings and 1 error. The error being: >>>>>>> >>>>>>> >>>>>>> */opt/homebrew/include/eigen3/Eigen/Core:70:10: **fatal error: >>>>>>> **'omp.h' >>>>>>> file not found* >>>>>>> >>>>>>> #include <omp.h> >>>>>>> >>>>>>> * ^~~~~~~* >>>>>>> >>>>>>> 8 warnings and 1 error generated. >>>>>>> >>>>>>> make[2]: *** >>>>>>> [src/chrono/CMakeFiles/ChronoEngine.dir/core/ChFilePS.cpp.o] Error 1 >>>>>>> >>>>>>> make[1]: *** [src/chrono/CMakeFiles/ChronoEngine.dir/all] Error 2 >>>>>>> >>>>>>> make: *** [all] Error 2 >>>>>>> >>>>>>> >>>>>>> *Question 2: Again, where did I go wrong here?* >>>>>>> >>>>>>> >>>>>>> I am new to the macOS, shell, and cmake and the learning curve was >>>>>>> steep getting to this point. So, I hope you cut me some slack if >>>>>>> any/all of >>>>>>> my questions are basic/naive and I hope you can help me get over this >>>>>>> hurdle and successfully run Chrono. Of course running the additional >>>>>>> modules and parallelization would be an amazing bonus after successful >>>>>>> installation. >>>>>>> >>>>>>> >>>>>>> From what I read, Chrono sounds solid in multi-body dynamics. I hope >>>>>>> I can make it run on my mac and start benefiting from it. >>>>>>> >>>>>>> >>>>>>> Thank you, >>>>>>> >>>>>>> Akthem >>>>>>> >>>>>> -- You received this message because you are subscribed to the Google Groups "ProjectChrono" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/projectchrono/1d8b6a5e-2a2a-4873-be67-594b4464ecaen%40googlegroups.com.
