MCPcopy Create free account
hub / github.com/AMReX-Astro/Castro / computeBCoeffs

Method computeBCoeffs

Source/radiation/RadSolve.cpp:927–992  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

925
926// <MGFLD routines>
927void RadSolve::computeBCoeffs(MultiFab& bcoefs, int idim,
928 MultiFab& kappa_r, int kcomp,
929 MultiFab& lambda, int lamcomp,
930 Real c, const Geometry& geom)
931{
932 BL_PROFILE("RadSolve::computeBCoeffs (MGFLD)");
933 BL_ASSERT(kappa_r.nGrow() == 1);
934
935 auto geomdata = geom.data();
936 auto dx = geom.CellSizeArray();
937
938#ifdef _OPENMP
939#pragma omp parallel
940#endif
941 for (MFIter mfi(lambda, TilingIfNotGPU()); mfi.isValid(); ++mfi) {
942 const Box& bx = mfi.tilebox();
943
944 auto bcoefs_arr = bcoefs[mfi].array();
945 auto lambda_arr = lambda[mfi].array(lamcomp);
946 auto kappa_r_arr = kappa_r[mfi].array(kcomp);
947
948 amrex::ParallelFor(bx,
949 [=] AMREX_GPU_HOST_DEVICE (int i, int j, int k)
950 {
951 if (idim == 0) {
952
953 Real r, s;
954 edge_center_metric(i, j, k, idim, geomdata, r, s);
955
956 if (AMREX_SPACEDIM == 1) {
957 s = 1.e0_rt;
958 }
959
960 Real kap = kavg(kappa_r_arr(i-1,j,k), kappa_r_arr(i,j,k), dx[0], -1);
961 bcoefs_arr(i,j,k) = r * s * c * lambda_arr(i,j,k) / kap;
962
963 }
964 else if (idim == 1) {
965
966 Real r, s;
967 edge_center_metric(i, j, k, idim, geomdata, r, s);
968
969 if (AMREX_SPACEDIM == 1) {
970 s = 1.e0_rt;
971 }
972
973 Real kap = kavg(kappa_r_arr(i,j-1,k), kappa_r_arr(i,j,k), dx[1], -1);
974 bcoefs_arr(i,j,k) = r * s * c * lambda_arr(i,j,k) / kap;
975
976 }
977 else {
978
979 Real r, s;
980 edge_center_metric(i, j, k, idim, geomdata, r, s);
981
982 if (AMREX_SPACEDIM == 1) {
983 s = 1.e0_rt;
984 }

Callers 1

gray_accelMethod · 0.80

Calls 1

isValidMethod · 0.80

Tested by

no test coverage detected