PrincetonUniversity/athena

Leftovers from merge non-relativistic radiation transport: add more output switches, derive IMRadTaskList, etc.

Opened this issue · 7 comments

felker commented

Mostly from @tomidakn's review that we skipped over to finally merge the monster #492 pull request.

The function is used when we construct angular grid in 1D for the radiation variable. It takes the user provided total number of angles and determine the values of \cos\theta for each angle and the associated weight for each angle based on GL quadrature.

So 2*nmu is the total number of angles, wmu(i) is the weight for each angle and mu(0,0,0,n1,i) is the cos\theta value for each angle.

Thank you again @yanfeij for all the efforts. I'm trying to use your CR module in a project with my student, and I noticed a few more things.

  • CR Boundary conditions. Can we use user-defined physical BC for CR?
  • User interface should be consistent with other modules. For example, currently the CR opacity is loaded through pcr->EnrollOpacityFunction in InitUserMeshBlockData, but for other modules we provide interfaces in Mesh. Retrospectively, we could move all the interfaces to each physics module and to be called in InitUserMeshBlockData, but anyway I believe we should provide coherently designed interface.
  • Operator splitting mode for CR. This is a long-term topic, but I think it is worth consideration to implement an operator-split integrator for CR as the CR timescale is (and must be) still shorter than the hydrodynamic term. Any thoughts?
felker commented

Related #502.

Thank you again @yanfeij for all the efforts. I'm trying to use your CR module in a project with my student, and I noticed a few more things.

  • CR Boundary conditions. Can we use user-defined physical BC for CR?
  • User interface should be consistent with other modules. For example, currently the CR opacity is loaded through pcr->EnrollOpacityFunction in InitUserMeshBlockData, but for other modules we provide interfaces in Mesh. Retrospectively, we could move all the interfaces to each physics module and to be called in InitUserMeshBlockData, but anyway I believe we should provide coherently designed interface.
  • Operator splitting mode for CR. This is a long-term topic, but I think it is worth consideration to implement an operator-split integrator for CR as the CR timescale is (and must be) still shorter than the hydrodynamic term. Any thoughts?

Yes, Kengo, you can use user defined boundary condition for CR. Do you mean sub-time step for CR?

I could not find an interface like EnrollCRBoundaryConditions. Can you tell me how to use user-defined BCs for CR?

And yes, I meant subcycling (sub timestep) for CR.

mesh class has EnrollUserCRBoundaryFunction. Have you tried that? It is very similar to EnrollUserBoundaryFunction

I think it will be useful to make it general to create a type of tasks that can run at a different dt. CR could be just one such tasks.

Oh sorry, somehow I missed it. I'll try it.

delaying until after the 24.0 release