@@ -197,20 +197,16 @@ def _tangential_dims(self) -> List[str]:
197197 return tangential_dims
198198
199199 @property
200- def _grid_corrected_fields (self ) -> Dict [str , DataArray ]:
200+ def _in_plane (self ) -> Dict [str , DataArray ]:
201201 """Dictionary of field components with finite grid correction factors applied and symmetry
202202 expanded."""
203203 if len (self .monitor .zero_dims ) != 1 :
204204 raise DataError ("Data must be 2D to apply grid corrections." )
205+
205206 normal_dim = "xyz" [self .monitor .zero_dims [0 ]]
206207 fields = {}
207- for field_name , field in self .symmetry_expanded_copy .field_components .items ():
208- eig_val = self .symmetry_eigenvalues [field_name ](normal_dim )
209- if eig_val < 0 :
210- fields [field_name ] = field * self .grid_dual_correction
211- else :
212- fields [field_name ] = field * self .grid_primal_correction
213- fields [field_name ] = fields [field_name ].squeeze (dim = normal_dim , drop = True )
208+ for field_name , field in self .grid_corrected_copy .field_components .items ():
209+ fields [field_name ] = field .squeeze (dim = normal_dim , drop = True )
214210 return fields
215211
216212 @property
@@ -307,7 +303,7 @@ def _tangential_fields(self) -> Dict[str, DataArray]:
307303 ----
308304 The finite grid correction factors are applied and symmetry is expanded.
309305 """
310- return self ._tangential_corrected (self ._grid_corrected_fields )
306+ return self ._tangential_corrected (self ._in_plane )
311307
312308 @property
313309 def _centered_fields (self ) -> Dict [str , DataArray ]:
@@ -319,7 +315,8 @@ def _centered_fields(self) -> Dict[str, DataArray]:
319315 The finite grid correction factors are applied and symmetry is expanded.
320316 """
321317
322- field_components = self ._grid_corrected_fields
318+ field_components = self ._in_plane
319+
323320 if self .monitor .colocate :
324321 return field_components
325322
@@ -346,6 +343,24 @@ def _centered_tangential_fields(self) -> Dict[str, DataArray]:
346343 """
347344 return self ._tangential_corrected (self ._centered_fields )
348345
346+ @property
347+ def grid_corrected_copy (self ) -> ElectromagneticFieldData :
348+ """Return a copy of self with grid correction factors applied (if necessary) and symmetry
349+ expanded."""
350+ field_data = self .symmetry_expanded_copy
351+ if len (self .monitor .zero_dims ) != 1 :
352+ return field_data
353+
354+ normal_dim = "xyz" [self .monitor .zero_dims [0 ]]
355+ update = {"grid_primal_correction" : 1.0 , "grid_dual_correction" : 1.0 }
356+ for field_name , field in field_data .field_components .items ():
357+ eig_val = self .symmetry_eigenvalues [field_name ](normal_dim )
358+ if eig_val < 0 :
359+ update [field_name ] = field * self .grid_dual_correction
360+ else :
361+ update [field_name ] = field * self .grid_primal_correction
362+ return field_data .copy (update = update )
363+
349364 @property
350365 def intensity (self ) -> ScalarFieldDataArray :
351366 """Return the sum of the squared absolute electric field components."""
0 commit comments