@@ -680,58 +680,6 @@ void QuatFACOps::initializeOperatorState(
680
680
}
681
681
}
682
682
683
-
684
- void QuatFACOps::computeFaceCoefs (const double epsilon_q,
685
- const int diffusion_coef_id,
686
- const int grad_q_id,
687
- const double gradient_floor,
688
- const std::string grad_floor_type,
689
- const int face_coef_id) // output
690
- {
691
-
692
- // Check for negative diffusion coefficients. We don't like them.
693
- // Zero is ok since epsilon^2 is added later
694
-
695
- math::HierarchySideDataOpsReal<double > sideops (d_hierarchy, d_ln_min,
696
- d_ln_max - 1 );
697
-
698
- double diffusion_coef_min = sideops.min (diffusion_coef_id);
699
-
700
- if ((diffusion_coef_min + epsilon_q * epsilon_q) < 0 .) {
701
- TBOX_ERROR (d_object_name << " : Negative diffusion coefficient passed to "
702
- " computeFaceCoefs()." );
703
- }
704
-
705
- for (int ln = d_ln_min; ln <= d_ln_max; ++ln) {
706
- std::shared_ptr<hier::PatchLevel> level = d_hierarchy->getPatchLevel (ln);
707
-
708
- for (hier::PatchLevel::Iterator pi (level->begin ()); pi != level->end ();
709
- pi ++) {
710
- std::shared_ptr<hier::Patch> patch = *pi ;
711
-
712
- std::shared_ptr<pdat::SideData<double > > diffusion_coef_data (
713
- SAMRAI_SHARED_PTR_CAST<pdat::SideData<double >, hier::PatchData>(
714
- patch->getPatchData (diffusion_coef_id)));
715
- std::shared_ptr<pdat::SideData<double > > grad_q_data (
716
- SAMRAI_SHARED_PTR_CAST<pdat::SideData<double >, hier::PatchData>(
717
- patch->getPatchData (grad_q_id)));
718
- std::shared_ptr<pdat::SideData<double > > face_coef_data (
719
- SAMRAI_SHARED_PTR_CAST<pdat::SideData<double >, hier::PatchData>(
720
- patch->getPatchData (face_coef_id)));
721
-
722
- assert (diffusion_coef_data->getDepth () == 1 );
723
- computeFaceCoefsOnPatch (*patch, epsilon_q, *diffusion_coef_data,
724
- *grad_q_data, *face_coef_data, gradient_floor,
725
- grad_floor_type);
726
- }
727
- }
728
- #if 0
729
- double norm = sideops.L1Norm( face_coef_id );
730
- tbox::plog<<"L1 Norm face_coef_id="<<norm<<endl;
731
- #endif
732
- }
733
-
734
-
735
683
void QuatFACOps::computeDQuatDPhiFaceCoefs (const int dprime_id,
736
684
const int phi_id,
737
685
const int face_coef_id)
@@ -782,14 +730,13 @@ void QuatFACOps::takeSquareRootOnPatch(pdat::CellData<double>& data)
782
730
}
783
731
784
732
785
- void QuatFACOps::setOperatorCoefficients (
786
- const double gamma, const double epsilon_q, const int mobility_id,
787
- const int mobility_deriv_id, const int diffusion_coef_id,
788
- const int face_coef_deriv_id, const int grad_q_id, const int q_id,
789
- const double gradient_floor, const std::string grad_floor_type)
733
+ void QuatFACOps::setOperatorCoefficients (const double gamma,
734
+ const int mobility_id,
735
+ const int mobility_deriv_id,
736
+ const int face_coef_id,
737
+ const int face_coef_deriv_id,
738
+ const int grad_q_id, const int q_id)
790
739
{
791
- assert (epsilon_q > 0 .);
792
-
793
740
d_gamma = gamma ;
794
741
795
742
// Check for non-positive mobility
@@ -800,11 +747,6 @@ void QuatFACOps::setOperatorCoefficients(
800
747
" setOperatorCoefficients()." );
801
748
}
802
749
803
- // Compute the face coefficients
804
-
805
- computeFaceCoefs (epsilon_q, diffusion_coef_id, grad_q_id, gradient_floor,
806
- grad_floor_type, d_face_coef_id);
807
-
808
750
for (int ln = d_ln_min; ln <= d_ln_max; ++ln) {
809
751
std::shared_ptr<hier::PatchLevel> level = d_hierarchy->getPatchLevel (ln);
810
752
@@ -867,7 +809,7 @@ void QuatFACOps::setOperatorCoefficients(
867
809
// Set the matrix coefficients
868
810
d_quat_level_solver[ln - d_ln_min]->setMatrixCoefficients (d_gamma,
869
811
d_sqrt_m_id,
870
- d_face_coef_id );
812
+ face_coef_id );
871
813
}
872
814
}
873
815
@@ -1372,81 +1314,7 @@ void QuatFACOps::checkFluxPatchDataIndex() const
1372
1314
}
1373
1315
}
1374
1316
1375
-
1376
- /*
1377
- *******************************************************************
1378
- * *
1379
- * AMR-unaware patch-centered computational kernels. *
1380
- * *
1381
- *******************************************************************
1382
- */
1383
- void QuatFACOps::computeFaceCoefsOnPatch (
1384
- const hier::Patch& patch, const double epsilon_q,
1385
- pdat::SideData<double >& diffusion_coef_data,
1386
- pdat::SideData<double >& grad_q_data,
1387
- pdat::SideData<double >& face_coef_data, // output
1388
- const double gradient_floor, const std::string grad_floor_type) const
1389
- {
1390
- #ifdef DEBUG_CHECK_ASSERTIONS
1391
- assert (patch.inHierarchy ());
1392
- assert (diffusion_coef_data.getDepth () == 1 );
1393
- assert (grad_q_data.getDepth () == NDIM * d_qlen);
1394
- assert (face_coef_data.getDepth () == d_qlen);
1395
- #endif
1396
-
1397
- const hier::Box& box = patch.getBox ();
1398
- const hier::Index& lower = box.lower ();
1399
- const hier::Index& upper = box.upper ();
1400
-
1401
- const hier::Box& dc_gbox = diffusion_coef_data.getGhostBox ();
1402
- const hier::Index& dcglower = dc_gbox.lower ();
1403
- const hier::Index& dcgupper = dc_gbox.upper ();
1404
-
1405
- const hier::Box& gq_gbox = grad_q_data.getGhostBox ();
1406
- const hier::Index& gqlower = gq_gbox.lower ();
1407
- const hier::Index& gqupper = gq_gbox.upper ();
1408
-
1409
- const hier::Box& d_gbox = face_coef_data.getGhostBox ();
1410
- const hier::Index& dlower = d_gbox.lower ();
1411
- const hier::Index& dupper = d_gbox.upper ();
1412
-
1413
- #if NDIM == 2
1414
- COMPUTE_FACE_COEF2D (lower[0 ], upper[0 ], lower[1 ], upper[1 ], d_qlen,
1415
- epsilon_q, diffusion_coef_data.getPointer (0 ),
1416
- dcglower[0 ], dcgupper[0 ] + 1 , dcglower[1 ], dcgupper[1 ],
1417
- diffusion_coef_data.getPointer (1 ), dcglower[0 ],
1418
- dcgupper[0 ], dcglower[1 ], dcgupper[1 ] + 1 ,
1419
- grad_q_data.getPointer (0 ), gqlower[0 ], gqupper[0 ] + 1 ,
1420
- gqlower[1 ], gqupper[1 ], grad_q_data.getPointer (1 ),
1421
- gqlower[0 ], gqupper[0 ], gqlower[1 ], gqupper[1 ] + 1 ,
1422
- face_coef_data.getPointer (0 ), dlower[0 ], dupper[0 ] + 1 ,
1423
- dlower[1 ], dupper[1 ], // output
1424
- face_coef_data.getPointer (1 ), dlower[0 ], dupper[0 ],
1425
- dlower[1 ], dupper[1 ] + 1 , // output
1426
- gradient_floor, grad_floor_type.c_str ());
1427
- #endif
1428
- #if NDIM == 3
1429
- COMPUTE_FACE_COEF3D (
1430
- lower[0 ], upper[0 ], lower[1 ], upper[1 ], lower[2 ], upper[2 ], d_qlen,
1431
- epsilon_q, diffusion_coef_data.getPointer (0 ), dcglower[0 ],
1432
- dcgupper[0 ] + 1 , dcglower[1 ], dcgupper[1 ], dcglower[2 ], dcgupper[2 ],
1433
- diffusion_coef_data.getPointer (1 ), dcglower[0 ], dcgupper[0 ], dcglower[1 ],
1434
- dcgupper[1 ] + 1 , dcglower[2 ], dcgupper[2 ],
1435
- diffusion_coef_data.getPointer (2 ), dcglower[0 ], dcgupper[0 ], dcglower[1 ],
1436
- dcgupper[1 ], dcglower[2 ], dcgupper[2 ] + 1 , grad_q_data.getPointer (0 ),
1437
- gqlower[0 ], gqupper[0 ] + 1 , gqlower[1 ], gqupper[1 ], gqlower[2 ],
1438
- gqupper[2 ], grad_q_data.getPointer (1 ), gqlower[0 ], gqupper[0 ],
1439
- gqlower[1 ], gqupper[1 ] + 1 , gqlower[2 ], gqupper[2 ],
1440
- grad_q_data.getPointer (2 ), gqlower[0 ], gqupper[0 ], gqlower[1 ],
1441
- gqupper[1 ], gqlower[2 ], gqupper[2 ] + 1 , face_coef_data.getPointer (0 ),
1442
- dlower[0 ], dupper[0 ] + 1 , dlower[1 ], dupper[1 ], dlower[2 ], dupper[2 ],
1443
- face_coef_data.getPointer (1 ), dlower[0 ], dupper[0 ], dlower[1 ],
1444
- dupper[1 ] + 1 , dlower[2 ], dupper[2 ], face_coef_data.getPointer (2 ),
1445
- dlower[0 ], dupper[0 ], dlower[1 ], dupper[1 ], dlower[2 ], dupper[2 ] + 1 ,
1446
- gradient_floor, grad_floor_type.c_str ());
1447
- #endif
1448
- }
1449
-
1317
+ // compute face_coef_data using dprime_data and phi_data
1450
1318
void QuatFACOps::computeDQuatDPhiFaceCoefsOnPatch (
1451
1319
const hier::Patch& patch, pdat::SideData<double >& dprime_data,
1452
1320
pdat::CellData<double >& phi_data,
@@ -2009,20 +1877,17 @@ void QuatFACOps::evaluateRHS(
2009
1877
// Initialize the output array
2010
1878
d_hopscell->setToScalar (rhs_id, 0 ., false );
2011
1879
2012
- computeFaceCoefs (epsilon_q, diffusion_coef_id, grad_q_copy_id,
2013
- gradient_floor, gradient_floor_type,
2014
- d_face_coef_scratch_id);
2015
-
2016
1880
for (int ln = d_ln_max; ln >= d_ln_min; ln--) {
2017
- accumulateOperatorOnLevel (mobility_id, d_face_coef_scratch_id , q_id,
2018
- grad_q_id, rhs_id, ln, true , false );
1881
+ accumulateOperatorOnLevel (mobility_id, diffusion_coef_id , q_id, grad_q_id ,
1882
+ rhs_id, ln, true , false );
2019
1883
}
2020
1884
2021
1885
t_compute_rhs->stop ();
2022
1886
}
2023
1887
2024
1888
2025
- void QuatFACOps::multiplyDQuatDPhiBlock (const int phase_id, const int out_id)
1889
+ void QuatFACOps::multiplyDQuatDPhiBlock (const int phase_id, const int out_id,
1890
+ const int face_coef_id)
2026
1891
{
2027
1892
// Initialize the output array
2028
1893
d_hopscell->setToScalar (out_id, 0 ., false );
@@ -2031,7 +1896,7 @@ void QuatFACOps::multiplyDQuatDPhiBlock(const int phase_id, const int out_id)
2031
1896
// mobility derivative times the input phi
2032
1897
for (int ln = d_ln_max; ln >= d_ln_min; ln--) {
2033
1898
2034
- accumulateOperatorOnLevel (d_m_deriv_id, d_face_coef_id , d_q_local_id, -1 ,
1899
+ accumulateOperatorOnLevel (d_m_deriv_id, face_coef_id , d_q_local_id, -1 ,
2035
1900
out_id, ln, false , false );
2036
1901
2037
1902
std::shared_ptr<hier::PatchLevel> level = d_hierarchy->getPatchLevel (ln);
0 commit comments