Hi Rainer, I installed Spectra as per the installation guide. The below cmake worked with a warning as Blaze is not used anymore:
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 \ -DSPECTRA_INCLUDE_DIR:PATH=/Users/Akthem/Downloads/spectra/include \ -DENABLE_MODULE_COSIMULATION:BOOL=ON \ -DENABLE_MODULE_POSTPROCESS:BOOL=ON \ -DENABLE_MODULE_VEHICLE:BOOL=ON \ -DENABLE_MODULE_IRRLICHT:BOOL=ON \ -DENABLE_HDF5=ON \ -DENABLE_MODULE_MODAL=ON \ -DENABLE_MODULE_POSTPROCESS=ON \ -DENABLE_MODULE_PYTHON=ON \ -DBUILD_DEMOS=ON I will move to try to make some work, now that the installation is done and after Radu's tip that fea parallelizes without thrust/multicore. I will also investigate if the co-simulation module suffices for my coupling needs. Thank you for the patience and support! Sincerely, Akthem On Tuesday, May 9, 2023 at 8:45:43 AM UTC+3 [email protected] wrote: > Hi Akthem, > > for chrono_modal you need to install the Spectre library. Available via > homebrew. > > Best > Rainer > > Radu Serban schrieb am Montag, 8. Mai 2023 um 15:32:13 UTC+2: > >> Hi Rainer, >> >> >> >> This is not quite correct. Thrust still supports the OpenMP backend. It’s >> just that in recent versions they introduced these dependencies on CUDA >> headers and so it cannot be used anymore without a CUDA installation >> (thrust is distributed as part of it) even though one may never use CUDA >> (as is the case in our case here). >> >> >> >> I’m not sure what the best solution is here. For now, I suggest simply >> not enabling the Chrono::Multicore module. Akthem, looking at the problem >> you describe, I don’t see why you would need that module anyway. Note that >> FEA in Chrono does use OpenMP parallelization, but it does not rely on >> Thrust. >> >> >> >> --Radu >> >> >> >> *From:* [email protected] <[email protected]> *On >> Behalf Of *[email protected] >> *Sent:* Monday, May 8, 2023 9:50 AM >> *To:* ProjectChrono <[email protected]> >> *Subject:* [chrono] Re: Mac Ventura Installation Issues >> >> >> >> 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/08214a60-0e0e-4bbf-8ff8-538e4b581465n%40googlegroups.com >> >> <https://groups.google.com/d/msgid/projectchrono/08214a60-0e0e-4bbf-8ff8-538e4b581465n%40googlegroups.com?utm_medium=email&utm_source=footer> >> . >> > -- 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/059196b1-7ae7-46a1-ad31-63cf4ea9b1adn%40googlegroups.com.
