Hello,
I am currently using FreeFEM to solve three-dimensional elasticity problems with approximately 5–10 million degrees of freedom, and I’ve encountered the following issue:
1.When running parallel simulations under the FFDDM framework, how should I configure the solver parameters to reduce computational time and lower memory usage? I have tried adjusting some parameters (e.g., reducing geneo_nu to 10 or lower), but the overall simulation time did not improve much. What specific configurations could you recommend to further reduce computational time?
The key part of my code is as follows:
macro Varf(varfName, meshName, PhName)
varf varfName(def(u), def(v)) = int3d(meshName)(epsV(u)'*C*epsV(v)) +
int3d(meshName)((3.0*lambda +
3.0*mu)*CTE*(Text - TrefTE)*epsTrace(v)) +
on(1, u = 0) +
on(2, uB = 0) +
on(7, uC = 0); // EOM, 7
ffddmbuildDmesh(E3d, ThGlobal, mpiCommWorld);
ffddmbuildDfespace(E3d, E3d, real, def, init, Pk);
ffddmsetupOperator(E3d, E3d, Varf);
ffddmsetupPrecond(E3d, Varf); // one-level preconditioner
ffddmgeneosetup(E3d,Varf); // two-level preconditioner
real[int] rhs(1);
ffddmbuildrhs(E3d,Varf,rhs);
real[int] x0(rhs.n);
x0 = 0;
E3dVhi def(u), def(err);
u[ ] = E3dfGMRES(x0, rhs, 1.e-6, 500, "right");
E3dwritesummary;
The simulation is executed using the following command:
ff-mpirun -np 64 Script.edp -ffddm_schwarz_method ras -ffddm_schwarz_coarse_correction BNN -ffddm_geneo_nu 20
2.I also tried running the simulation with HPDDM. However, there was no significant improvement in simulation time or memory usage. If I want to use HPDDM as the solver but keep the parameter settings the same as in FFDDM, how should I configure the parameters specifically? When using HPDDM to solve the problem, how should the solver parameters be configured to reduce simulation time and lower memory usage?
The key section of my code is as follows:
ffddmbuildDmesh(E3d, ThGlobal, mpiCommWorld);
ffddmbuildDfespace(E3d, E3d, real, def, init, Pk);
macro E3dwithhpddm() 1 //
ffddmsetupOperator(E3d, E3d, Varf);
set(E3dhpddmOP, sparams = "-hpddm_E3d_krylov_method cg " +
"-hpddm_E3d_level_1_schwarz_method ras " +
"-hpddm_E3d_level_2_schwarz_coarse_correction deflated " +
"-hpddm_E3d_level_2_geneo_nu 10 " +
"-hpddm_E3d_level_2_verbosity 2 "
) ;
3.I saw on page 382 of the FreeFEM documentation, in the section titled “Some results: Heterogeneous 3D elasticity with GenEO”, that the figure shows solving with Schwarz GenEO takes less time compared to using PETSc. I would like to ask how the parameters were specifically configured in that case, and whether those settings would be applicable to my problem.
Thank you very much.