Closed zongy17 closed 4 months ago
Hypre is only used in Castro for the implicit part of the radiation solve and that is only done a level at a time.
Thanks for your comments! I tried reading the Castro's paper (https://arxiv.org/abs/1105.2466), and noticed that in Section 4, it said
The AMR version of the implicit radiation diffusion update is based on Howell & Greenough (2003), but with several important differences: The present algorithm is fully-implicit, not time-centered. The optional multilevel linear solve at the beginning of each coarse time step is no longer included—this feature was introduced to improve accuracy but we now consider it unnecessary in most cases. Finally, the multilevel linear solve for flux synchronization between coarse and fine levels is replaced by a new algorithm we call the “deferred sync.” These changes entirely eliminate the need to compute linear system solutions coupling different levels of the AMR hierarchy, while not compromising conservation of total energy. Performance is significantly improved because multilevel linear solvers tend to be more complex and expensive than those for single-level systems.
So, Castro does NOT do a multi-AMR level composite solve (i.e., all unknowns on different AMR levels are solved simultaneously) at any time, because consecutive single-level solve is more efficient. The single-level solve means that an external multigrid solver could be used for each AMR level independently. For Structured AMR problems, single-level solve one-by-one is enough.
Is my understanding correct?
For gravity, the multigrid does composite solves.
The radiation stuff is not widely used, and I don't fully remember the details.
closing due to lack of activity
Hi, I am new to Castro, and don't know how to use hypre for composite solve. By "composite", I mean that the unknowns on all AMR levels are solved simultaneously.
When I look into the executable cases, I found these comments in Castro/Exec/radiation_tests/RadSourceTest/inputs-cooling:
But no matter how I change these three parameters, the solvers are always on a single level. I verified it by printing the
crse_level
,fine_level
andnparts
in the constructor function of HypreMultiABec (located at Line 613 of Castro/Source/radiation/HypreMultiABec.cpp). It showed thatcrse_level
==fine_level
andnparts
==1 all the time. I suppose that in a composite solve,nparts
should be the number of AMR levels. So I do not understand what configuration should be set in input files to do a composite solve. Could somebody help me to figure it out? Thanks!