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.

Reply via email to