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/a749e07e-ea00-4bc9-bca5-11600801f28dn%40googlegroups.com.
