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.

Reply via email to