diff --git a/FDTD/operator_cylindermultigrid.cpp b/FDTD/operator_cylindermultigrid.cpp index ce29046..3b1a49a 100644 --- a/FDTD/operator_cylindermultigrid.cpp +++ b/FDTD/operator_cylindermultigrid.cpp @@ -147,6 +147,36 @@ void Operator_CylinderMultiGrid::CalcStartStopLines(unsigned int &numThreads, ve } +void Operator_CylinderMultiGrid::FillMissingDataStorage() +{ + unsigned int pos[3]; + + double EffMat[4]; + + for (int ny=0; ny<3; ++ny) + { + for (pos[0]=0; pos[0]SetTimestep(dT); m_InnerOp->CalcECOperator(); - return Operator_Cylinder::CalcECOperator( debugFlags ); + retCode = Operator_Cylinder::CalcECOperator( debugFlags ); } + //the data storage will only be filled up to m_Split_Pos-1, fill the remaining area here... + FillMissingDataStorage(); return retCode; } diff --git a/FDTD/operator_cylindermultigrid.h b/FDTD/operator_cylindermultigrid.h index fd5e30a..dce639d 100644 --- a/FDTD/operator_cylindermultigrid.h +++ b/FDTD/operator_cylindermultigrid.h @@ -59,6 +59,9 @@ protected: void Delete(); virtual void Reset(); + //! The material data storage in the sub-grid area's will not be filled by the base-operator. Check and do this here! + void FillMissingDataStorage(); + double m_Split_Rad; vector m_Split_Radii; unsigned int m_Split_Pos;