NAN occurs when calculating secondorder gradient fields
Hi everyone， I have tried to use the function 'add_gradient_fields' to calculate the secondorder derivative of density 'rho' with xdirection, i.e., 'rho_gradient_x_gradient_x'. Here is the code: rho_gradientx = ds.add_gradient_fields(('boxlib','rho')) ds.periodicity = (True, True, True) rho_gradientxx = ds.add_gradient_fields(('boxlib','rho_gradient_x')) Unfortunately, nan occurs when I tried to plot the field 'rho_gradient_x_gradient_x' I will be appreciate if anyone can give me suggestions about how to fix it or provide other solutions to calculate higher order(more than 1st order) gradient fields. Best wishes, He Yifeng
Hi He Yifeng, So I am not *sure*, but I *think* that you may need to change how it sets up the number of ghost zones that it acquires. I think that the nested nature won't increase the requested ghost zones quite right. What I would actually suggest is, instead of doing the gradientofthegradient, is to implement this yourself with a derived field. The original code that gets used is in: https://github.com/ytproject/yt/blob/8c9193965329f536cba35c85fa23e9447f90cf... For your purposes, there's a lot that isn't necessary  including stuff related to nonCartesian axes, block ordering, etc. The essence is in defining the slice_3d, the manipulation of the 'f' variable, and setting `new_field`. And, when it gets added, note that it sets 'ValidateSpatial' to have an argument of 1  this is the tricky bit, as it'll need to be 2, to get an extra ghost zone for your results. (You *could* try setting that to 2 and seeing if it 'magically fixes everything' but I'm not sure, and it'll definitely be a lot slower.) What you'll want to do is write the stencil to operate on each individual grid, add the field with the ValidateSpatial argument set to 2 instead of 1, and name it something like second_order_gradient_x or something. If you run into trouble, hit us back here on the list, or on slack! On Wed, May 10, 2023 at 9:07 AM <hyf@stu.pku.edu.cn> wrote:
Hi everyone，
I have tried to use the function 'add_gradient_fields' to calculate the secondorder derivative of density 'rho' with xdirection, i.e., 'rho_gradient_x_gradient_x'. Here is the code:
rho_gradientx = ds.add_gradient_fields(('boxlib','rho')) ds.periodicity = (True, True, True) rho_gradientxx = ds.add_gradient_fields(('boxlib','rho_gradient_x'))
Unfortunately, nan occurs when I tried to plot the field 'rho_gradient_x_gradient_x'
I will be appreciate if anyone can give me suggestions about how to fix it or provide other solutions to calculate higher order(more than 1st order) gradient fields.
Best wishes,
He Yifeng _______________________________________________ ytusers mailing list  ytusers@python.org To unsubscribe send an email to ytusersleave@python.org https://mail.python.org/mailman3/lists/ytusers.python.org/ Member address: matthewturk@gmail.com
participants (2)

hyf＠stu.pku.edu.cn

Matthew Turk