Loading graph_driver/xrays.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -99,7 +99,7 @@ void trace_ray(const size_t num_times, kz->set(j, static_cast<T> (norm_dist4(engine))); } } kx->set(static_cast<T> (-700)); kx->set(static_cast<T> (-700.0)); auto eq = equilibrium::make_efit<T, SAFE_MATH> (NC_FILE); //auto eq = equilibrium::make_slab_density<T, SAFE_MATH> (); Loading graph_framework/workflow.hpp +3 −0 Original line number Diff line number Diff line Loading @@ -123,8 +123,11 @@ namespace workflow { virtual void run() { size_t iterations = 0; T max_residule = max_kernel(); T last_max = std::numeric_limits<T>::max(); while (std::abs(max_residule) > std::abs(tolarance) && std::abs(last_max - max_residule) > 0.0 && iterations++ < max_iterations) { last_max = max_residule; max_residule = max_kernel(); } Loading utilities/fix_NaN.py +34 −3 Original line number Diff line number Diff line Loading @@ -2,10 +2,41 @@ import netCDF4 import argparse import numpy #------------------------------------------------------------------------------- # Clean up k imaginary and calculate the power absorbed. def main(**args): with netCDF4.Dataset('{}/bins.nc'.format(args['directory']), 'w') as bin_ref: nr = bin_ref.createDimension('nr', 64) nz = bin_ref.createDimension('nz', 128) bins = bin_ref.createVariable('bins', 'f8', ('nr','nz')) bins[:,:] = 0 for i in range(0, 12): with netCDF4.Dataset('{}/result{}.nc'.format(args['directory'], i), 'r+') as result: result.variables['kamp'][:] = numpy.where(numpy.isnan(result.variables['kamp'][:]), 0.0, result.variables['kamp'][:]) result.variables['kamp'][:-1] = numpy.where(numpy.abs(result.variables['kamp'][1:] - result.variables['kamp'][:-1]) > 2.0, 0.0, result.variables['kamp'][:-1]) kampim = result.variables['kamp'][:,:,1] x = result.variables['x'][:,:,0] y = result.variables['y'][:,:,0] z = result.variables['z'][:,:,0] kdl = kampim[1:,:]*numpy.sqrt(numpy.power(x[1:] - x[:-1], 2) + numpy.power(y[1:] - y[:-1], 2) + numpy.power(z[1:] - z[:-1], 2)); power = numpy.append(numpy.ones((1, len(x[1]))), numpy.exp(-2*numpy.cumsum(kdl, axis=0)), axis=0) dpower = numpy.abs(power[1:,:] - power[:-1,:]) r = numpy.sqrt(x*x + y*y) rbin = numpy.linspace(0.84, 2.5, 65) zbin = numpy.linspace(-1.6, 1.6, 129) for j in range(64): print(i, j) for k in range(128) : bin_power = numpy.sum(numpy.extract(numpy.logical_and(numpy.greater(r[1:], rbin[j]), numpy.logical_and(numpy.less(r[1:], rbin[j + 1]), numpy.logical_and(numpy.greater(z[1:], zbin[k]), numpy.less(z[1:], zbin[k + 1])))), dpower), axis=0) bins[j, k] += numpy.where(numpy.isnan(bin_power), 0.0, bin_power) if __name__ == '__main__': command_line_parser = argparse.ArgumentParser() Loading Loading
graph_driver/xrays.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -99,7 +99,7 @@ void trace_ray(const size_t num_times, kz->set(j, static_cast<T> (norm_dist4(engine))); } } kx->set(static_cast<T> (-700)); kx->set(static_cast<T> (-700.0)); auto eq = equilibrium::make_efit<T, SAFE_MATH> (NC_FILE); //auto eq = equilibrium::make_slab_density<T, SAFE_MATH> (); Loading
graph_framework/workflow.hpp +3 −0 Original line number Diff line number Diff line Loading @@ -123,8 +123,11 @@ namespace workflow { virtual void run() { size_t iterations = 0; T max_residule = max_kernel(); T last_max = std::numeric_limits<T>::max(); while (std::abs(max_residule) > std::abs(tolarance) && std::abs(last_max - max_residule) > 0.0 && iterations++ < max_iterations) { last_max = max_residule; max_residule = max_kernel(); } Loading
utilities/fix_NaN.py +34 −3 Original line number Diff line number Diff line Loading @@ -2,10 +2,41 @@ import netCDF4 import argparse import numpy #------------------------------------------------------------------------------- # Clean up k imaginary and calculate the power absorbed. def main(**args): with netCDF4.Dataset('{}/bins.nc'.format(args['directory']), 'w') as bin_ref: nr = bin_ref.createDimension('nr', 64) nz = bin_ref.createDimension('nz', 128) bins = bin_ref.createVariable('bins', 'f8', ('nr','nz')) bins[:,:] = 0 for i in range(0, 12): with netCDF4.Dataset('{}/result{}.nc'.format(args['directory'], i), 'r+') as result: result.variables['kamp'][:] = numpy.where(numpy.isnan(result.variables['kamp'][:]), 0.0, result.variables['kamp'][:]) result.variables['kamp'][:-1] = numpy.where(numpy.abs(result.variables['kamp'][1:] - result.variables['kamp'][:-1]) > 2.0, 0.0, result.variables['kamp'][:-1]) kampim = result.variables['kamp'][:,:,1] x = result.variables['x'][:,:,0] y = result.variables['y'][:,:,0] z = result.variables['z'][:,:,0] kdl = kampim[1:,:]*numpy.sqrt(numpy.power(x[1:] - x[:-1], 2) + numpy.power(y[1:] - y[:-1], 2) + numpy.power(z[1:] - z[:-1], 2)); power = numpy.append(numpy.ones((1, len(x[1]))), numpy.exp(-2*numpy.cumsum(kdl, axis=0)), axis=0) dpower = numpy.abs(power[1:,:] - power[:-1,:]) r = numpy.sqrt(x*x + y*y) rbin = numpy.linspace(0.84, 2.5, 65) zbin = numpy.linspace(-1.6, 1.6, 129) for j in range(64): print(i, j) for k in range(128) : bin_power = numpy.sum(numpy.extract(numpy.logical_and(numpy.greater(r[1:], rbin[j]), numpy.logical_and(numpy.less(r[1:], rbin[j + 1]), numpy.logical_and(numpy.greater(z[1:], zbin[k]), numpy.less(z[1:], zbin[k + 1])))), dpower), axis=0) bins[j, k] += numpy.where(numpy.isnan(bin_power), 0.0, bin_power) if __name__ == '__main__': command_line_parser = argparse.ArgumentParser() Loading