Dear Nik,


I’ve been working with deal.II and Trilinos (including MueLu) across 
various platforms, including macOS, for a while now. I understand your 
frustration, as the installation and configuration process can be tricky. 
Let me briefly share some insights based on my experience.


*Key Issues:*

1. *Epetra vs. Tpetra Transition*:

Trilinos is phasing out the Epetra stack in favor of Tpetra. However, 
deal.II’s Trilinos wrapper is still in transition, meaning some 
functionalities and interfaces are incomplete. This transitional state 
often leads to compatibility issues, especially with advanced features like 
MueLu.

2. *MueLu Configuration Challenges*:

MueLu’s compatibility depends heavily on the configuration of Epetra/Tpetra 
and the global ordinal type (e.g., int vs. long long). Unfortunately, these 
compatibility nuances are not always well-documented. Both the deal.II and 
Trilinos GitHub repositories have issues discussing these challenges, which 
might eventually resolve as the Epetra-to-Tpetra transition progresses 
(hopefully by 2025–2026).


*My Experience:*


I’ve successfully installed deal.II with Trilinos and MueLu on CentOS 
clusters and Apple Silicon macOS using various compiler toolchains (GCC, 
Intel icpc, Apple Clang). However, the process was rarely straightforward.


For my most recent setup on macOS, I didn’t strictly follow the steps 
outlined in the Apple-ARM-M1-OSX guide 
<https://github.com/dealii/dealii/wiki/Apple-ARM-M1-OSX>. Instead, I used a 
customized toolchain: the latest GCC (installed via Homebrew, mainly for 
gfortran, as macOS doesn’t provide it natively) and OpenMPI, combined with 
macOS’s default Clang as the C++ compiler. Using this setup, I built the 
master versions of both deal.II and Trilinos with *candi*. To ensure 
compatibility, I manually edited the Trilinos.package file in candi, 
explicitly activating nearly the entire Tpetra stack (Tpetra, Ifpack2, 
MueLu, Belos, Amesos2, Zoltan2) along with their corresponding Epetra 
stack. After some adjustments, everything compiled successfully, and I was 
able to run MueLu-based AMG preconditioners with dealii-assembled-matrices 
without issues.


*Recommendations:*

1. *Custom Configuration*:

If you’re using candi, consider modifying the Trilinos configuration 
manually to ensure both Tpetra and Epetra are fully activated. Ensure you 
use compatible global ordinals and enable relevant packages like MueLu and 
Belos.

2. *GitHub Issues*:

I recommend opening an issue on the deal.II GitHub repository. Several 
developers are actively working on the Tpetra wrapper and may have more 
up-to-date knowledge about MueLu configuration rules.


Apologies for not being able to provide detailed instructions at this 
time—I’ve been quite busy lately. I hope this helps as a starting point, 
and I’m happy to share more insights if needed.


Best regards,

James

在2025年1月8日星期三 UTC+8 21:32:54<nikl...@stanford.edu> 写道:

> Dear User Group,
>
> I recently got a new Apple arm-based M4 laptop running Mac OS Sequoia. My 
> previous laptop was running Windows and using the Windows Subsystem for 
> Linux, I managed to install deal.ii together with all the packages I would 
> like to use.
>
> Now, I tried to install deal.II on the new machine. I followed the 
> guidlines here: https://github.com/dealii/dealii/wiki/Apple-ARM-M1-OSX 
> and everything went perfectly fine except for a small but for me important 
> detail. 
>
> Deal.II couldn't be configured to use MueLu from Trilinos. MueLu was 
> installed but the corresponding *error* message from candi_configure.log 
> when running configure_20_trilinos.cmake shows that the support was 
> disabled because the test didn't succeed.
>
> -- Performing Test TRILINOS_MUELU_IS_FUNCTIONAL
> -- Performing Test TRILINOS_MUELU_IS_FUNCTIONAL - Failed
> -- MueLu was found but is not usable through Epetra! Disabling MueLu 
> support.
>
> I tried several other ways:
>
>    - Docker: I also got the same error (i.e. module 
>    TrilinosWrappers::PreconditionAMGMueLu not defined) probably because of 
>    defined(DEAL_II_TRILINOS_WITH_MUELU) being false in 
>    trilinos_precondition.h when I used the most recent docker image for the 
>    arm based architecture.
>
>
>    - prepackaged .dmg files (v9.6.0 sequoia arm) --> same thing
>
>
>    - prepackaged .dmg files (v9.5.0 intel) -->  also tried this with the 
>    hope that maybe in a Rosetta2 emulated terminal, this could work but got 
>    the same error and even more like 
> this:*/Applications/deal.II.app/Contents/Resources/Libraries/include/boost/container_hash/hash.hpp:132:33
>  
>    
> <http://deal.II.app/Contents/Resources/Libraries/include/boost/container_hash/hash.hpp:132:33>:
>  
>    **error: **no template named 'unary_function' in namespace 'std'; did 
>    you mean '__unary_function'? *132 |         struct hash_base : 
>    std::unary_function<T, std::size_t> {};
>
>
> Therefore I have two questions:
>
>    1. Do you see a way to fix the above, i.e. get the MueLu support 
>    working.
>    2. What would be a *brute force* way to get deal.ii working on an 
>    arm-based machine. Should I try to run the terminal under Rosetta2 
>    emulation and try to install from source?
>
> Thank you very much in advance for your help and best regards,
> Nik
>

-- 
The deal.II project is located at http://www.dealii.org/
For mailing list/forum options, see 
https://groups.google.com/d/forum/dealii?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"deal.II User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to dealii+unsubscr...@googlegroups.com.
To view this discussion visit 
https://groups.google.com/d/msgid/dealii/fe76759e-0931-45d3-99be-318c9f9c3584n%40googlegroups.com.

Reply via email to