@@ -100,7 +100,6 @@ namespace amr
100100
101101 template <typename Policy>
102102 using BaseCoarsenOp = FieldCoarsenOperator<GridLayoutT, GridT, Policy>;
103- using MagneticCoarsenOp = BaseCoarsenOp<MagneticFieldCoarsener<dimension>>;
104103 using DefaultCoarsenOp = BaseCoarsenOp<DefaultFieldCoarsener<dimension>>;
105104 using ElectricFieldCoarsenOp = BaseCoarsenOp<ElectricFieldCoarsener<dimension>>;
106105
@@ -118,6 +117,7 @@ namespace amr
118117 resourcesManager_->registerResources (Jold_);
119118 resourcesManager_->registerResources (NiOld_);
120119 resourcesManager_->registerResources (ViOld_);
120+ resourcesManager_->registerResources (Eold_);
121121 }
122122
123123 virtual ~HybridHybridMessengerStrategy () = default ;
@@ -138,6 +138,7 @@ namespace amr
138138 resourcesManager_->allocate (Jold_, patch, allocateTime);
139139 resourcesManager_->allocate (NiOld_, patch, allocateTime);
140140 resourcesManager_->allocate (ViOld_, patch, allocateTime);
141+ resourcesManager_->allocate (Eold_, patch, allocateTime);
141142 }
142143
143144
@@ -337,11 +338,11 @@ namespace amr
337338 // equal to that of the shared coarse face.
338339 // This means that we now need to fill ghosts and border included
339340
340- if (!isRegriddingL0)
341- {
342- auto & E = hybridModel.state .electromag .E ;
343- elecGhostsRefiners_.fill (E, levelNumber, initDataTime);
344- }
341+ // if (!isRegriddingL0)
342+ // {
343+ // auto& E = hybridModel.state.electromag.E;
344+ // elecGhostsRefiners_.fill(E, levelNumber, initDataTime);
345+ // }
345346
346347 // we now call only levelGhostParticlesOld.fill() and not .regrid()
347348 // regrid() would refine from next coarser in regions of level not overlaping
@@ -638,19 +639,23 @@ namespace amr
638639 for (auto & patch : level)
639640 {
640641 auto dataOnPatch = resourcesManager_->setOnPatch (
641- *patch, hybridModel.state .J , hybridModel.state .ions , Jold_, NiOld_, ViOld_);
642+ *patch, hybridModel.state .electromag , hybridModel.state .J ,
643+ hybridModel.state .ions , Jold_, NiOld_, ViOld_, Eold_);
642644
643645 resourcesManager_->setTime (Jold_, *patch, currentTime);
644646 resourcesManager_->setTime (NiOld_, *patch, currentTime);
645647 resourcesManager_->setTime (ViOld_, *patch, currentTime);
648+ resourcesManager_->setTime (Eold_, *patch, currentTime);
646649
647650 auto & J = hybridModel.state .J ;
648651 auto & Vi = hybridModel.state .ions .velocity ();
649652 auto & Ni = hybridModel.state .ions .chargeDensity ();
653+ auto & E = hybridModel.state .electromag .E ;
650654
651655 Jold_.copyData (J);
652656 ViOld_.copyData (Vi);
653657 NiOld_.copyData (Ni);
658+ Eold_.copyData (E);
654659 }
655660 }
656661
@@ -707,7 +712,7 @@ namespace amr
707712 double const syncTime) override
708713 {
709714 refluxSchedules[fineLevelNumber]->coarsenData ();
710- ghostRefluxedSchedules [coarserLevelNumber]->fillData (syncTime);
715+ patchGhostRefluxedSchedules [coarserLevelNumber]->fillData (syncTime);
711716 }
712717
713718 // after coarsening, domain nodes have been updated and therefore patch ghost nodes
@@ -751,11 +756,13 @@ namespace amr
751756 return keys;
752757 };
753758
754- elecSharedNodesRefiners_.addStaticRefiners (info->ghostElectric , EfieldNodeRefineOp_,
755- makeKeys (info->ghostElectric ));
759+ elecSharedNodesRefiners_.addTimeRefiners (info->ghostElectric , info->ghostElectric ,
760+ core::VecFieldNames{Jold_},
761+ EfieldNodeRefineOp_, fieldTimeOp_);
756762
757- elecGhostsRefiners_.addStaticRefiners (info->ghostElectric , EfieldRefineOp_,
758- makeKeys (info->ghostElectric ));
763+ elecGhostsRefiners_.addTimeRefiners (info->ghostElectric , info->ghostElectric ,
764+ core::VecFieldNames{Jold_}, EfieldRefineOp_,
765+ fieldTimeOp_);
759766
760767 currentSharedNodesRefiners_.addTimeRefiners (info->ghostCurrent , info->modelCurrent ,
761768 core::VecFieldNames{Jold_},
@@ -814,9 +821,6 @@ namespace amr
814821
815822 void registerSyncComms (std::unique_ptr<HybridMessengerInfo> const & info)
816823 {
817- magnetoSynchronizers_.add (info->modelMagnetic , magneticCoarseningOp_,
818- info->modelMagnetic .vecName );
819-
820824 electroSynchronizers_.add (info->modelElectric , electricFieldCoarseningOp_,
821825 info->modelElectric .vecName );
822826
@@ -1057,6 +1061,7 @@ namespace amr
10571061 VecFieldT Jold_{stratName + " _Jold" , core::HybridQuantity::Vector::J};
10581062 VecFieldT ViOld_{stratName + " _VBulkOld" , core::HybridQuantity::Vector::V};
10591063 FieldT NiOld_{stratName + " _NiOld" , core::HybridQuantity::Scalar::rho};
1064+ VecFieldT Eold_{stratName + " _Eold" , core::HybridQuantity::Vector::E};
10601065
10611066
10621067 // ! ResourceManager shared with other objects (like the HybridModel)
@@ -1154,7 +1159,6 @@ namespace amr
11541159
11551160 using CoarsenOperator_ptr = std::shared_ptr<SAMRAI::hier::CoarsenOperator>;
11561161 CoarsenOperator_ptr fieldCoarseningOp_{std::make_shared<DefaultCoarsenOp>()};
1157- CoarsenOperator_ptr magneticCoarseningOp_{std::make_shared<MagneticCoarsenOp>()};
11581162 CoarsenOperator_ptr electricFieldCoarseningOp_{std::make_shared<ElectricFieldCoarsenOp>()};
11591163
11601164 MagneticRefinePatchStrategy<ResourcesManagerT, FieldDataT> magneticRefinePatchStrategy_{
0 commit comments