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.

Reply via email to