Error when attempting plot derived_fields quantities
Hi all, I have been trying to plot derived field of vorticity and the computation domain is set to be periodic. It always does not work though I tried to adjust different plotting domains. Meanwhile it can plot field figures of primitive quantities. Here is part of error info: ---------ERROR INFO----------------------------------------------------------------------------------------- P001 yt : [INFO ] 2021-10-06 19:50:59,037 Parameters: current_time = 3e-06 P001 yt : [INFO ] 2021-10-06 19:50:59,037 Parameters: domain_dimensions = [1024 128 1] P001 yt : [INFO ] 2021-10-06 19:50:59,037 Parameters: domain_left_edge = [0. 0. 0.] P001 yt : [INFO ] 2021-10-06 19:50:59,038 Parameters: domain_right_edge = [0.032 0.004 1. ] command in line argument loading data File "vorfield.py", line 76, in <module> slc = yt.SlicePlot(ds, 'z', 'vort_z', width=((0.016,'cm'),(0.002,'cm')),center=([0.016,0.002,0.],'cm')) File "/WORK/anaconde/envs/test/lib/python3.8/site-packages/yt/visualization/plot_window.py", line 1986, in SlicePlot return AxisAlignedSlicePlot(ds, normal, fields, *args, **kwargs) File "/WORK/anaconde/envs/test/lib/python3.8/site-packages/yt/visualization/plot_window.py", line 1282, in __init__ slc.get_data(fields) File "/WORK/anaconde/envs/test/lib/python3.8/site-packages/yt/data_objects/data_containers.py", line 1583, in get_data self._generate_fields(fields_to_generate) File "/WORK/anaconde/envs/test/lib/python3.8/site-packages/yt/data_objects/data_containers.py", line 1603, in _generate_fields fd = self._generate_field(field) File "/WORK/anaconde/envs/test/lib/python3.8/site-packages/yt/data_objects/data_containers.py", line 293, in _generate_field tr = self._generate_fluid_field(field) File "/WORK/anaconde/envs/test/lib/python3.8/site-packages/yt/data_objects/data_containers.py", line 311, in _generate_fluid_field rv = self._generate_spatial_fluid(field, ngt_exception.ghost_zones) File "/WORK/anaconde/envs/test/lib/python3.8/site-packages/yt/data_objects/data_containers.py", line 341, in _generate_spatial_fluid gz[field][ngz:-ngz, ngz:-ngz, ngz:-ngz], File "/WORK/anaconde/envs/test/lib/python3.8/site-packages/yt/data_objects/data_containers.py", line 256, in __getitem__ self.get_data(f) File "/WORK/anaconde/envs/test/lib/python3.8/site-packages/yt/data_objects/construction_data_containers.py", line 691, in get_data if len(fill) > 0: self._fill_fields(fill) File "/WORK/anaconde/envs/test/lib/python3.8/site-packages/yt/data_objects/construction_data_containers.py", line 1053, in _fill_fields for chunk in ls.data_source.chunks(fields, "io"): File "/WORK/anaconde/envs/test/lib/python3.8/site-packages/yt/data_objects/data_containers.py", line 1464, in chunks self.get_data() # Ensure we have built ourselves File "/WORK/anaconde/envs/test/lib/python3.8/site-packages/yt/data_objects/data_containers.py", line 1507, in get_data self.index._identify_base_chunk(self) File "/WORK/anaconde/envs/test/lib/python3.8/site-packages/yt/geometry/grid_geometry_handler.py", line 290, in _identify_base_chunk gi = dobj.selector.select_grids(self.grid_left_edge, File "/WORK/anaconde/envs/test/lib/python3.8/site-packages/yt/data_objects/data_containers.py", line 1459, in selector self._selector = sclass(self) File "yt/geometry/selection_routines.pyx", line 860, in yt.geometry.selection_routines.RegionSelector.__init__ RuntimeError: Error: yt attempted to read outside the boundaries of a non-periodic domain along dimension 2. Region left edge = -1.25 code_length, Region right edge = 2.25 code_length Dataset left edge = 0.0 code_length, Dataset right edge = 1.0 code_length This commonly happens when trying to compute ghost cells up to the domain boundary. Two possible solutions are to load a smaller region that does not border the edge or override the periodicity for this dataset. ---------ERROR INFO---------------------------------------------------------------------------------------- Here is part of python code ----------PYCODE--------------------------- ### u,v means velocity(primitive quantities) in X,Y direction ### vort_z means vorticity(derived quantity) in Z direnction def vort_z_func(field, data): return ( + data['boxlib', 'v_gradient_x'] - data['boxlib', 'u_gradient_y'] ) u_gradient = ds.add_gradient_fields(("boxlib","u")) v_gradient = ds.add_gradient_fields(("boxlib","v")) derived_fields = [ # field name, units, displayname ('vort_z', '1 / cm', 'Vorticity in z direction'), ] for name, unitstr, dispname in derived_fields: ds.add_field( ('boxlib', name), units = unitstr, function = eval(name + '_func'), sampling_type = 'cell', display_name = dispname ) slc = yt.SlicePlot(ds, 'z', 'vort_z', width=((0.016,'cm'),(0.002,'cm')),center=([0.016,0.002,0.],'cm')) ----------PYCODE--------------------------- Thanks a lot! Best Wishes, He Yifeng College of Engineering, Peking University
Hi He Yifeng, Yes, unfortunately this is a bit of a shortcoming right now in yt. We don't yet support ghost zone generation for things on non-periodic domains, and this particular field does require ghost zones. One possible way around it, which I don't generally recommend if you want to see things at the domain boundary, would be to override the periodicity by setting ds.periodicity = (True, True, True) On Wed, Oct 6, 2021 at 8:14 AM 贺一峰 <hyf@stu.pku.edu.cn> wrote:
Hi all,
I have been trying to plot derived field of vorticity and the computation domain is set to be periodic. It always does not work though I tried to adjust different plotting domains. Meanwhile it can plot field figures of primitive quantities.
Here is part of error info: ---------ERROR INFO----------------------------------------------------------------------------------------- P001 yt : [INFO ] 2021-10-06 19:50:59,037 Parameters: current_time = 3e-06 P001 yt : [INFO ] 2021-10-06 19:50:59,037 Parameters: domain_dimensions = [1024 128 1] P001 yt : [INFO ] 2021-10-06 19:50:59,037 Parameters: domain_left_edge = [0. 0. 0.] P001 yt : [INFO ] 2021-10-06 19:50:59,038 Parameters: domain_right_edge = [0.032 0.004 1. ] command in line argument loading data File "vorfield.py", line 76, in <module> slc = yt.SlicePlot(ds, 'z', 'vort_z', width=((0.016,'cm'),(0.002,'cm')),center=([0.016,0.002,0.],'cm')) File "/WORK/anaconde/envs/test/lib/python3.8/site-packages/yt/visualization/plot_window.py", line 1986, in SlicePlot return AxisAlignedSlicePlot(ds, normal, fields, *args, **kwargs) File "/WORK/anaconde/envs/test/lib/python3.8/site-packages/yt/visualization/plot_window.py", line 1282, in __init__ slc.get_data(fields) File "/WORK/anaconde/envs/test/lib/python3.8/site-packages/yt/data_objects/data_containers.py", line 1583, in get_data self._generate_fields(fields_to_generate) File "/WORK/anaconde/envs/test/lib/python3.8/site-packages/yt/data_objects/data_containers.py", line 1603, in _generate_fields fd = self._generate_field(field) File "/WORK/anaconde/envs/test/lib/python3.8/site-packages/yt/data_objects/data_containers.py", line 293, in _generate_field tr = self._generate_fluid_field(field) File "/WORK/anaconde/envs/test/lib/python3.8/site-packages/yt/data_objects/data_containers.py", line 311, in _generate_fluid_field rv = self._generate_spatial_fluid(field, ngt_exception.ghost_zones) File "/WORK/anaconde/envs/test/lib/python3.8/site-packages/yt/data_objects/data_containers.py", line 341, in _generate_spatial_fluid gz[field][ngz:-ngz, ngz:-ngz, ngz:-ngz], File "/WORK/anaconde/envs/test/lib/python3.8/site-packages/yt/data_objects/data_containers.py", line 256, in __getitem__ self.get_data(f) File "/WORK/anaconde/envs/test/lib/python3.8/site-packages/yt/data_objects/construction_data_containers.py", line 691, in get_data if len(fill) > 0: self._fill_fields(fill) File "/WORK/anaconde/envs/test/lib/python3.8/site-packages/yt/data_objects/construction_data_containers.py", line 1053, in _fill_fields for chunk in ls.data_source.chunks(fields, "io"): File "/WORK/anaconde/envs/test/lib/python3.8/site-packages/yt/data_objects/data_containers.py", line 1464, in chunks self.get_data() # Ensure we have built ourselves File "/WORK/anaconde/envs/test/lib/python3.8/site-packages/yt/data_objects/data_containers.py", line 1507, in get_data self.index._identify_base_chunk(self) File "/WORK/anaconde/envs/test/lib/python3.8/site-packages/yt/geometry/grid_geometry_handler.py", line 290, in _identify_base_chunk gi = dobj.selector.select_grids(self.grid_left_edge, File "/WORK/anaconde/envs/test/lib/python3.8/site-packages/yt/data_objects/data_containers.py", line 1459, in selector self._selector = sclass(self) File "yt/geometry/selection_routines.pyx", line 860, in yt.geometry.selection_routines.RegionSelector.__init__ RuntimeError: Error: yt attempted to read outside the boundaries of a non-periodic domain along dimension 2. Region left edge = -1.25 code_length, Region right edge = 2.25 code_length Dataset left edge = 0.0 code_length, Dataset right edge = 1.0 code_length
This commonly happens when trying to compute ghost cells up to the domain boundary. Two possible solutions are to load a smaller region that does not border the edge or override the periodicity for this dataset. ---------ERROR INFO----------------------------------------------------------------------------------------
Here is part of python code ----------PYCODE--------------------------- ### u,v means velocity(primitive quantities) in X,Y direction ### vort_z means vorticity(derived quantity) in Z direnction
def vort_z_func(field, data): return ( + data['boxlib', 'v_gradient_x'] - data['boxlib', 'u_gradient_y'] )
u_gradient = ds.add_gradient_fields(("boxlib","u")) v_gradient = ds.add_gradient_fields(("boxlib","v"))
derived_fields = [ # field name, units, displayname ('vort_z', '1 / cm', 'Vorticity in z direction'), ] for name, unitstr, dispname in derived_fields: ds.add_field( ('boxlib', name), units = unitstr, function = eval(name + '_func'), sampling_type = 'cell', display_name = dispname )
slc = yt.SlicePlot(ds, 'z', 'vort_z', width=((0.016,'cm'),(0.002,'cm')),center=([0.016,0.002,0.],'cm')) ----------PYCODE---------------------------
Thanks a lot!
Best Wishes, He Yifeng College of Engineering, Peking University
_______________________________________________ yt-users mailing list -- yt-users@python.org To unsubscribe send an email to yt-users-leave@python.org https://mail.python.org/mailman3/lists/yt-users.python.org/ Member address: matthewturk@gmail.com
Hi Matthew Turk, After I set ds.periodicity = (True, True, True), it can calculate the derived field without error info, thank you! However, when I tried to use SlicePlot for drawing the derived field, it raised RuntimeError that I do not know why. It seems that there is a function in YT(_fill_fields) failing to work. The version of my YT is 3.5.0. Here is the error info: ------------------------------------------------------------------------------------------------------------------------- P003 yt : [ERROR ] 2022-01-27 11:37:18,376 RuntimeError: 194 application called MPI_Abort(MPI_COMM_WORLD, 1) - process 3 195 command in line argument 196 loading data 197 File "vorfield.py", line 89, in <module> 198 slc = yt.SlicePlot(ds,"z",("boxlib","vort_z"),width=((0.08,'cm'),(0.04,'cm')),center=([0.20,0.02,0.01],'cm')) 199 File "/anaconde/envs/test/lib/python3.8/site-packages/yt/visualization/plot_window.py", line 1986, in SlicePlot 200 return AxisAlignedSlicePlot(ds, normal, fields, *args, **kwargs) 201 File "/anaconde/envs/test/lib/python3.8/site-packages/yt/visualization/plot_window.py", line 1282, in __init__ 202 slc.get_data(fields) 203 File "/anaconde/envs/test/lib/python3.8/site-packages/yt/data_objects/data_containers.py", line 1583, in get_data 204 self._generate_fields(fields_to_generate) 205 File "/anaconde/envs/test/lib/python3.8/site-packages/yt/data_objects/data_containers.py", line 1603, in _generate_fields 206 fd = self._generate_field(field) 207 File "/anaconde/envs/test/lib/python3.8/site-packages/yt/data_objects/data_containers.py", line 293, in _generate_field 208 tr = self._generate_fluid_field(field) 209 File "/anaconde/envs/test/lib/python3.8/site-packages/yt/data_objects/data_containers.py", line 311, in _generate_fluid_field 210 rv = self._generate_spatial_fluid(field, ngt_exception.ghost_zones) 211 File "/anaconde/envs/test/lib/python3.8/site-packages/yt/data_objects/data_containers.py", line 341, in _generate_spatial_fluid 212 gz[field][ngz:-ngz, ngz:-ngz, ngz:-ngz], 213 File "/anaconde/envs/test/lib/python3.8/site-packages/yt/data_objects/data_containers.py", line 256, in __getitem__ 214 self.get_data(f) 215 File "/anaconde/envs/test/lib/python3.8/site-packages/yt/data_objects/construction_data_containers.py", line 691, in get_data 216 if len(fill) > 0: self._fill_fields(fill) 218 File "/anaconde/envs/test/lib/python3.8/site-packages/yt/data_objects/construction_data_containers.py", line 1060, in _fill_fields 219 raise RuntimeError -------------------------------------------------------------------------------------------------------------------------- Thank you again for helping me! Best wishes, He Yifeng
participants (3)
-
hyf@stu.pku.edu.cn
-
Matthew Turk
-
贺一峰