From b7a55eb66e5fb314c4e3cee31aa32fe42c5f36a8 Mon Sep 17 00:00:00 2001 From: max Date: Sun, 24 Jul 2022 23:58:23 +0300 Subject: [PATCH] updated c++ style with clang google --- README.md | Bin 1484 -> 1406 bytes package.json | 1 - src/index.cpp | 14 +- .../get-data-1d/get-data-1d.cpp | 270 +++++++------ src/transform-to-js/get-data-1d/get-data-1d.h | 2 +- .../get-data-2d/get-data-2d.cpp | 360 +++++++++--------- src/transform-to-js/get-data-2d/get-data-2d.h | 2 +- 7 files changed, 312 insertions(+), 337 deletions(-) diff --git a/README.md b/README.md index 58d74208f111270a34db9c231ee9a955c3fbb9a6..b56273a2883e24e0528533f5268aacfc8baa4a1d 100644 GIT binary patch delta 60 zcmX@Z{f}#cf?+a44nrbC9z!~VE<+kaK0^^hE|6cspa2xf2f}oqd@7Jv3>2#bu{X}w GWd#7b7Y*zH delta 125 zcmeyzb%uL_!o&`N{B(wVAWUb-VMt}r1JaocB@7u1r3^_xUM5gRpP?8iQVEt%2a0Dh zqySawGbA$<03kv|52&kzAs47lnZX&TFAuCQ5lELX#54FYBm(798HzUs>aqd=6)+ni diff --git a/package.json b/package.json index 331474c..5926f20 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,6 @@ "test": "npm install && tsc && node dist/test-addon.js" }, "keywords": [], - "author": "maxmaxkklosd99", "license": "ISC", "dependencies": { "bindings": "^1.5.0", diff --git a/src/index.cpp b/src/index.cpp index fa0eb00..21f4132 100644 --- a/src/index.cpp +++ b/src/index.cpp @@ -1,19 +1,19 @@ #include + #include #include "./transform-to-js/get-data-1d/get-data-1d.h" #include "./transform-to-js/get-data-2d/get-data-2d.h" // Callback method when module is registered with Node.js. -Napi::Object Init(Napi::Env env, Napi::Object exports) -{ - exports.Set(Napi::String::New(env, "getData1D"), - Napi::Function::New(env, GetData1D)); +Napi::Object Init(Napi::Env env, Napi::Object exports) { + exports.Set(Napi::String::New(env, "getData1D"), + Napi::Function::New(env, GetData1D)); - exports.Set(Napi::String::New(env, "getData2D"), - Napi::Function::New(env, GetData2D)); + exports.Set(Napi::String::New(env, "getData2D"), + Napi::Function::New(env, GetData2D)); - return exports; + return exports; } // Register `FDTD` module which calls `Init` method. diff --git a/src/transform-to-js/get-data-1d/get-data-1d.cpp b/src/transform-to-js/get-data-1d/get-data-1d.cpp index fd7bd2c..eb5446a 100644 --- a/src/transform-to-js/get-data-1d/get-data-1d.cpp +++ b/src/transform-to-js/get-data-1d/get-data-1d.cpp @@ -1,146 +1,134 @@ #include "./get-data-1d.h" // Fdtd method in 1D case. -Napi::Value GetData1D(const Napi::CallbackInfo &info) -{ - Napi::Env env = info.Env(); - - // 0 - conditions - [omega, tau] - // 1 - reload checker. - // 2 - material vector. - // 3 - cols (material vector size). rows x rows - // 4 - epsilon array. - // 5 - mu array. - // 6 - sigma array. - // 7 - relative source position array. - - const Napi::Array input_array_condition = info[0].As(); - double omega = (float)input_array_condition[(uint32_t)0].As(); - double tau = (float)(input_array_condition[1].As()); - - // Reload params checker. - bool reload_check = static_cast(info[1].As()); - - // Material------ matrix transformation JS -> C++. - const Napi::Array material_matrix_js = info[2].As(); - const Napi::Array eps_js = info[4].As(); - const Napi::Array mu_js = info[5].As(); - const Napi::Array sigma_js = info[6].As(); - - - - // Must be even. - int material_vector_size = static_cast(info[3].As()); - - // Temporary vector. - std::vector temp_vector; - - // Transform input vector to C++ vector. - - for (int j = 0; j < material_vector_size; j++) - { - temp_vector.push_back( - (int)material_matrix_js[j] - .As()); - } - - const size_t grid_size = FdtdPml1D::GetGridSize(); - - const Napi::Array src_position_array = info[7].As(); - double relative_src_position = (float)src_position_array[(uint32_t)0].As(); - // double relative_src_position = static_cast(info[7].As()); - size_t src_position = static_cast(relative_src_position * grid_size); - - // Matrix size coefficient. - size_t coeff = grid_size / material_vector_size; - - // Initialization eps, mu, sigma vectors. - std::vector eps_vector; - std::vector mu_vector; - std::vector sigma_vector; - - // Filling eps, mu, sigma vectors. - for (int i = 0; i < material_vector_size; i++) - { - for (int j = 0; j < coeff; j++) - { - int index = temp_vector[i]; - eps_vector.push_back(static_cast(eps_js[index].As())); - mu_vector.push_back(static_cast(mu_js[index].As())); - sigma_vector.push_back(static_cast(sigma_js[index].As())); +Napi::Value GetData1D(const Napi::CallbackInfo &info) { + Napi::Env env = info.Env(); + + // 0 - conditions - [omega, tau] + // 1 - reload checker. + // 2 - material vector. + // 3 - cols (material vector size). rows x rows + // 4 - epsilon array. + // 5 - mu array. + // 6 - sigma array. + // 7 - relative source position array. + + const Napi::Array input_array_condition = info[0].As(); + double omega = (float)input_array_condition[(uint32_t)0].As(); + double tau = (float)(input_array_condition[1].As()); + + // Reload params checker. + bool reload_check = static_cast(info[1].As()); + + // Material------ matrix transformation JS -> C++. + const Napi::Array material_matrix_js = info[2].As(); + const Napi::Array eps_js = info[4].As(); + const Napi::Array mu_js = info[5].As(); + const Napi::Array sigma_js = info[6].As(); + + // Must be even. + int material_vector_size = static_cast(info[3].As()); + + // Temporary vector. + std::vector temp_vector; + + // Transform input vector to C++ vector. + + for (int j = 0; j < material_vector_size; j++) { + temp_vector.push_back( + (int)material_matrix_js[j] + .As()); } - } - - - - // Using static variable to save save data for different function call. - static FdtdPml1D fdtd = FdtdPml1D(tau, - omega, - eps_vector, - mu_vector, - sigma_vector, - src_position); - - // (fdtd.GetLambda() != omega) || - // if ( - // (fdtd.GetTau() != tau) - // // || (fdtd.GetSourcePosition() != src) - // || reload_check) - // { - // // fdtd.setLambda(omega); - - // fdtd.setSourcePosition(src); - // // fdtd.setParams(eps_vector, sigma_vector, source_position_vector); - // fdtd.setParams(tau, lambda, epsilon_vector, mu_ve); - // } - if (reload_check) - { - fdtd.SetParams(tau, - omega, - eps_vector, - mu_vector, - sigma_vector, - src_position); - } - - - - // Containers to storage coordinates. - std::vector vect_x = {}; - std::vector vect_ex = {}; - std::vector vect_hy = {}; - - fdtd.Calculation(vect_x, vect_ex, vect_hy); - - // Creating JS data for response. - Napi::Array js_data_x = Napi::Array::New(env, grid_size); - Napi::Array js_data_ex = Napi::Array::New(env, grid_size); - Napi::Array js_data_hy = Napi::Array::New(env, grid_size); - - for (size_t i = 0; i < grid_size; i++) - { - js_data_x[i] = Napi::Number::New(env, vect_x[i]); - js_data_ex[i] = Napi::Number::New(env, vect_ex[i]); - js_data_hy[i] = Napi::Number::New(env, vect_hy[i]); - } - - double maxEx = *std::max_element(std::begin(vect_ex), std::end(vect_ex)); - double minEx = *std::min_element(std::begin(vect_ex), std::end(vect_ex)); - - double maxHy = *std::max_element(std::begin(vect_hy), std::end(vect_hy)); - double minHy = *std::min_element(std::begin(vect_hy), std::end(vect_hy)); - - Napi::Object data = Napi::Array::New(env); - data.Set("dataX", js_data_x); - data.Set("dataEx", js_data_ex); - data.Set("dataHy", js_data_hy); - data.Set("col", grid_size); - data.Set("currentTick", fdtd.GetCurrentTimeStep()); - - data.Set("maxEx", maxEx); - data.Set("minEx", minEx); - data.Set("maxHy", maxHy); - data.Set("minHy", minHy); - - return data; + + const size_t grid_size = FdtdPml1D::GetGridSize(); + + const Napi::Array src_position_array = info[7].As(); + double relative_src_position = (float)src_position_array[(uint32_t)0].As(); + // double relative_src_position = static_cast(info[7].As()); + size_t src_position = static_cast(relative_src_position * grid_size); + + // Matrix size coefficient. + size_t coeff = grid_size / material_vector_size; + + // Initialization eps, mu, sigma vectors. + std::vector eps_vector; + std::vector mu_vector; + std::vector sigma_vector; + + // Filling eps, mu, sigma vectors. + for (int i = 0; i < material_vector_size; i++) { + for (int j = 0; j < coeff; j++) { + int index = temp_vector[i]; + eps_vector.push_back(static_cast(eps_js[index].As())); + mu_vector.push_back(static_cast(mu_js[index].As())); + sigma_vector.push_back(static_cast(sigma_js[index].As())); + } + } + + // Using static variable to save save data for different function call. + static FdtdPml1D fdtd = FdtdPml1D(tau, + omega, + eps_vector, + mu_vector, + sigma_vector, + src_position); + + // (fdtd.GetLambda() != omega) || + // if ( + // (fdtd.GetTau() != tau) + // // || (fdtd.GetSourcePosition() != src) + // || reload_check) + // { + // // fdtd.setLambda(omega); + + // fdtd.setSourcePosition(src); + // // fdtd.setParams(eps_vector, sigma_vector, source_position_vector); + // fdtd.setParams(tau, lambda, epsilon_vector, mu_ve); + // } + if (reload_check) { + fdtd.SetParams(tau, + omega, + eps_vector, + mu_vector, + sigma_vector, + src_position); + } + + // Containers to storage coordinates. + std::vector vect_x = {}; + std::vector vect_ex = {}; + std::vector vect_hy = {}; + + fdtd.Calculation(vect_x, vect_ex, vect_hy); + + // Creating JS data for response. + Napi::Array js_data_x = Napi::Array::New(env, grid_size); + Napi::Array js_data_ex = Napi::Array::New(env, grid_size); + Napi::Array js_data_hy = Napi::Array::New(env, grid_size); + + for (size_t i = 0; i < grid_size; i++) { + js_data_x[i] = Napi::Number::New(env, vect_x[i]); + js_data_ex[i] = Napi::Number::New(env, vect_ex[i]); + js_data_hy[i] = Napi::Number::New(env, vect_hy[i]); + } + + double maxEx = *std::max_element(std::begin(vect_ex), std::end(vect_ex)); + double minEx = *std::min_element(std::begin(vect_ex), std::end(vect_ex)); + + double maxHy = *std::max_element(std::begin(vect_hy), std::end(vect_hy)); + double minHy = *std::min_element(std::begin(vect_hy), std::end(vect_hy)); + + Napi::Object data = Napi::Array::New(env); + data.Set("dataX", js_data_x); + data.Set("dataEx", js_data_ex); + data.Set("dataHy", js_data_hy); + data.Set("col", grid_size); + data.Set("currentTick", fdtd.GetCurrentTimeStep()); + + data.Set("maxEx", maxEx); + data.Set("minEx", minEx); + data.Set("maxHy", maxHy); + data.Set("minHy", minHy); + + return data; } \ No newline at end of file diff --git a/src/transform-to-js/get-data-1d/get-data-1d.h b/src/transform-to-js/get-data-1d/get-data-1d.h index 1a211b6..6a34bb6 100644 --- a/src/transform-to-js/get-data-1d/get-data-1d.h +++ b/src/transform-to-js/get-data-1d/get-data-1d.h @@ -1,9 +1,9 @@ #ifndef GET_DATA_1D #define GET_DATA_1D - #include #include + #include #include #include diff --git a/src/transform-to-js/get-data-2d/get-data-2d.cpp b/src/transform-to-js/get-data-2d/get-data-2d.cpp index 899dc21..1c09b9d 100644 --- a/src/transform-to-js/get-data-2d/get-data-2d.cpp +++ b/src/transform-to-js/get-data-2d/get-data-2d.cpp @@ -1,193 +1,181 @@ #include "./get-data-2d.h" -Napi::Value GetData2D(const Napi::CallbackInfo &info) -{ - Napi::Env env = info.Env(); - - // 0 - conditions - [lambda, beamsize] - // 1 - reload checker. - // 2 - material matrix(flatten). - // 3 - rows (material matrix size). rows x rows - // 4 - epsilon array. - // 5 - mu array. - // 6 - sigma array. - // 7 - data return type(number) ('Ez' = 0 | 'Hy' = 1 |'Hx' = 2 |'Energy' = 3) - // 8 - relative source position array. - const Napi::Array input_array_condition = info[0].As(); - - // Reload params checker. - bool reload_check = static_cast(info[1].As()); - - // Material matrix transformation JS -> C++. - const Napi::Array material_matrix_js = info[2].As(); - const Napi::Array eps_js = info[4].As(); - const Napi::Array mu_js = info[5].As(); - const Napi::Array sigma_js = info[6].As(); - - // Must be even. - int material_matrix_size = static_cast(info[3].As()); - - // Temporary matrix. - std::vector> temp_matrix; - - // Data return type('Ez' = 0 | 'Hy' = 1 |'Hx' = 2 |'Energy' = 3) - int data_return_type = static_cast(info[7].As()); - - // Params transformation JS -> C++. - double lambda = (double)input_array_condition[(uint32_t)0].As(); - double beamsize = (double)input_array_condition[1].As(); - - // Transform input flatten matrix into 2-dimensional matrix. - for (int i = 0; i < material_matrix_size; i++) - { - temp_matrix.push_back(std::vector()); - for (int j = 0; j < material_matrix_size; j++) - { - temp_matrix[i].push_back( - (int)material_matrix_js[i * material_matrix_size + j] - .As()); +Napi::Value GetData2D(const Napi::CallbackInfo &info) { + Napi::Env env = info.Env(); + + // 0 - conditions - [lambda, beamsize] + // 1 - reload checker. + // 2 - material matrix(flatten). + // 3 - rows (material matrix size). rows x rows + // 4 - epsilon array. + // 5 - mu array. + // 6 - sigma array. + // 7 - data return type(number) ('Ez' = 0 | 'Hy' = 1 |'Hx' = 2 |'Energy' = 3) + // 8 - relative source position array. + const Napi::Array input_array_condition = info[0].As(); + + // Reload params checker. + bool reload_check = static_cast(info[1].As()); + + // Material matrix transformation JS -> C++. + const Napi::Array material_matrix_js = info[2].As(); + const Napi::Array eps_js = info[4].As(); + const Napi::Array mu_js = info[5].As(); + const Napi::Array sigma_js = info[6].As(); + + // Must be even. + int material_matrix_size = static_cast(info[3].As()); + + // Temporary matrix. + std::vector> temp_matrix; + + // Data return type('Ez' = 0 | 'Hy' = 1 |'Hx' = 2 |'Energy' = 3) + int data_return_type = static_cast(info[7].As()); + + // Params transformation JS -> C++. + double lambda = (double)input_array_condition[(uint32_t)0].As(); + double beamsize = (double)input_array_condition[1].As(); + + // Transform input flatten matrix into 2-dimensional matrix. + for (int i = 0; i < material_matrix_size; i++) { + temp_matrix.push_back(std::vector()); + for (int j = 0; j < material_matrix_size; j++) { + temp_matrix[i].push_back( + (int)material_matrix_js[i * material_matrix_size + j] + .As()); + } } - } - - const size_t rows = FdtdPml2D::GetRows(); - const size_t cols = FdtdPml2D::GetCols(); - - // Matrix size coefficient. - size_t coeff = rows / material_matrix_size; - - // Initialization eps, mu, sigma matrixes. - std::vector> eps_matrix; - std::vector> mu_matrix; - std::vector> sigma_matrix; - for (int i = 0; i < rows; i++) - { - eps_matrix.push_back(std::vector()); - mu_matrix.push_back(std::vector()); - sigma_matrix.push_back(std::vector()); - for (int j = 0; j < cols; j++) - { - eps_matrix[i].push_back(0); - mu_matrix[i].push_back(0); - sigma_matrix[i].push_back(0); + + const size_t rows = FdtdPml2D::GetRows(); + const size_t cols = FdtdPml2D::GetCols(); + + // Matrix size coefficient. + size_t coeff = rows / material_matrix_size; + + // Initialization eps, mu, sigma matrixes. + std::vector> eps_matrix; + std::vector> mu_matrix; + std::vector> sigma_matrix; + for (int i = 0; i < rows; i++) { + eps_matrix.push_back(std::vector()); + mu_matrix.push_back(std::vector()); + sigma_matrix.push_back(std::vector()); + for (int j = 0; j < cols; j++) { + eps_matrix[i].push_back(0); + mu_matrix[i].push_back(0); + sigma_matrix[i].push_back(0); + } } - } - - // Filling eps, mu, sigma matrixes. - for (int i = 0; i < material_matrix_size; i++) - { - for (int j = 0; j < material_matrix_size; j++) - { - for (int k = 0; k < coeff; k++) - { - for (int f = 0; f < coeff; f++) - { - int index = temp_matrix[i][j]; - - // Rotate matrix on 90 degree for correctness in numerical method. - // eps_matrix[j * coeff + f][i * coeff + k] = static_cast(eps_js[index].As()); - // mu_matrix[j * coeff + f][i * coeff + k] = static_cast(mu_js[index].As()); - // sigma_matrix[j * coeff + f][i * coeff + k] = static_cast(sigma_js[index].As()); - - // Without rotate. - eps_matrix[i * coeff + k][j * coeff + f] = static_cast(eps_js[index].As()); - mu_matrix[i * coeff + k][j * coeff + f] = static_cast(mu_js[index].As()); - sigma_matrix[i * coeff + k][j * coeff + f] = static_cast(sigma_js[index].As()); + + // Filling eps, mu, sigma matrixes. + for (int i = 0; i < material_matrix_size; i++) { + for (int j = 0; j < material_matrix_size; j++) { + for (int k = 0; k < coeff; k++) { + for (int f = 0; f < coeff; f++) { + int index = temp_matrix[i][j]; + + // Rotate matrix on 90 degree for correctness in numerical method. + // eps_matrix[j * coeff + f][i * coeff + k] = static_cast(eps_js[index].As()); + // mu_matrix[j * coeff + f][i * coeff + k] = static_cast(mu_js[index].As()); + // sigma_matrix[j * coeff + f][i * coeff + k] = static_cast(sigma_js[index].As()); + + // Without rotate. + eps_matrix[i * coeff + k][j * coeff + f] = static_cast(eps_js[index].As()); + mu_matrix[i * coeff + k][j * coeff + f] = static_cast(mu_js[index].As()); + sigma_matrix[i * coeff + k][j * coeff + f] = static_cast(sigma_js[index].As()); + } + } } - } } - } - - const Napi::Array src_position_array = info[8].As(); - double relative_src_position_x = (float)src_position_array[(uint32_t)0].As(); - double relative_src_position_y = (float)src_position_array[(uint32_t)1].As(); - // double relative_src_position = static_cast(info[7].As()); - size_t src_position_row = static_cast(relative_src_position_y * rows); - size_t src_position_col = static_cast(relative_src_position_x * cols); - - static FdtdPml2D fdtd = FdtdPml2D(eps_matrix, mu_matrix, sigma_matrix, src_position_row, src_position_col); - - // (fdtd_3D.getLambda() != lambda) || (fdtd_3D.getBeamsize() != beamsize) || - if (reload_check) - { - fdtd.SetParams(eps_matrix, mu_matrix, sigma_matrix, src_position_row, src_position_col); - } - - std::vector vect_X = {}; - std::vector vect_Y = {}; - std::vector vect_Ez = {}; - std::vector vect_Hy = {}; - std::vector vect_Hx = {}; - std::vector vect_Energy = {}; - - double max = 0.001; - double min = -0.001; - - fdtd.CalcNextLayer(vect_X, vect_Y, vect_Ez, vect_Hy, vect_Hx, vect_Energy, max, min); - - // Matrix sizes. - size_t client_rows = rows / fdtd.GetStep(); - size_t client_cols = cols / fdtd.GetStep(); - - const size_t js_arrays_size = client_rows * client_cols; - - // Creating JS arrays to store C++ arrays. - Napi::Array js_data_X = Napi::Array::New(env, js_arrays_size); - Napi::Array js_data_Y = Napi::Array::New(env, js_arrays_size); - Napi::Array js_data_Ez = Napi::Array::New(env, js_arrays_size); - Napi::Array js_data_Hy = Napi::Array::New(env, js_arrays_size); - Napi::Array js_data_Hx = Napi::Array::New(env, js_arrays_size); - Napi::Array js_data_Energy = Napi::Array::New(env, js_arrays_size); - - // Filling JS arrays with C++ arrays data. - for (size_t i = 0; i < js_arrays_size; i++) - { - js_data_X[i] = Napi::Number::New(env, vect_X[i]); - js_data_Y[i] = Napi::Number::New(env, vect_Y[i]); - js_data_Ez[i] = Napi::Number::New(env, vect_Ez[i]); - js_data_Hy[i] = Napi::Number::New(env, vect_Hy[i]); - js_data_Hx[i] = Napi::Number::New(env, vect_Hx[i]); - js_data_Energy[i] = Napi::Number::New(env, vect_Energy[i]); - } - - // Creating JS object to return. - Napi::Object data = Napi::Array::New(env); - data.Set("dataX", js_data_X); - data.Set("dataY", js_data_Y); - data.Set("rows", client_rows); - data.Set("cols", client_cols); - data.Set("timeStep", fdtd.GetCurrentTimeStep()); - - switch (data_return_type) - { - case 0: - data.Set("dataEz", js_data_Ez); - // max = *std::max_element(std::begin(vect_Ez), std::end(vect_Ez)); - // min = *std::min_element(std::begin(vect_Ez), std::end(vect_Ez)); - break; - case 1: - data.Set("dataHy", js_data_Hy); - // max = *std::max_element(std::begin(vect_Hy), std::end(vect_Hy)); - // min = *std::min_element(std::begin(vect_Hy), std::end(vect_Hy)); - break; - case 2: - data.Set("dataHx", js_data_Hx); - // max = *std::max_element(std::begin(vect_Hx), std::end(vect_Hx)); - // min = *std::min_element(std::begin(vect_Hx), std::end(vect_Hx)); - break; - case 3: - data.Set("dataEnergy", js_data_Energy); - // max = *std::max_element(std::begin(vect_Energy), std::end(vect_Energy)); - // min = *std::min_element(std::begin(vect_Energy), std::end(vect_Energy)); - break; - - default: - // max = *std::max_element(std::begin(vect_Ez), std::end(vect_Ez)); - // min = *std::min_element(std::begin(vect_Ez), std::end(vect_Ez)); - break; - } - // Fill max and min values. - data.Set("max", max); - data.Set("min", min); - - return data; + + const Napi::Array src_position_array = info[8].As(); + double relative_src_position_x = (float)src_position_array[(uint32_t)0].As(); + double relative_src_position_y = (float)src_position_array[(uint32_t)1].As(); + // double relative_src_position = static_cast(info[7].As()); + size_t src_position_row = static_cast(relative_src_position_y * rows); + size_t src_position_col = static_cast(relative_src_position_x * cols); + + static FdtdPml2D fdtd = FdtdPml2D(eps_matrix, mu_matrix, sigma_matrix, src_position_row, src_position_col); + + // (fdtd_3D.getLambda() != lambda) || (fdtd_3D.getBeamsize() != beamsize) || + if (reload_check) { + fdtd.SetParams(eps_matrix, mu_matrix, sigma_matrix, src_position_row, src_position_col); + } + + std::vector vect_X = {}; + std::vector vect_Y = {}; + std::vector vect_Ez = {}; + std::vector vect_Hy = {}; + std::vector vect_Hx = {}; + std::vector vect_Energy = {}; + + double max = 0.001; + double min = -0.001; + + fdtd.CalcNextLayer(vect_X, vect_Y, vect_Ez, vect_Hy, vect_Hx, vect_Energy, max, min); + + // Matrix sizes. + size_t client_rows = rows / fdtd.GetStep(); + size_t client_cols = cols / fdtd.GetStep(); + + const size_t js_arrays_size = client_rows * client_cols; + + // Creating JS arrays to store C++ arrays. + Napi::Array js_data_X = Napi::Array::New(env, js_arrays_size); + Napi::Array js_data_Y = Napi::Array::New(env, js_arrays_size); + Napi::Array js_data_Ez = Napi::Array::New(env, js_arrays_size); + Napi::Array js_data_Hy = Napi::Array::New(env, js_arrays_size); + Napi::Array js_data_Hx = Napi::Array::New(env, js_arrays_size); + Napi::Array js_data_Energy = Napi::Array::New(env, js_arrays_size); + + // Filling JS arrays with C++ arrays data. + for (size_t i = 0; i < js_arrays_size; i++) { + js_data_X[i] = Napi::Number::New(env, vect_X[i]); + js_data_Y[i] = Napi::Number::New(env, vect_Y[i]); + js_data_Ez[i] = Napi::Number::New(env, vect_Ez[i]); + js_data_Hy[i] = Napi::Number::New(env, vect_Hy[i]); + js_data_Hx[i] = Napi::Number::New(env, vect_Hx[i]); + js_data_Energy[i] = Napi::Number::New(env, vect_Energy[i]); + } + + // Creating JS object to return. + Napi::Object data = Napi::Array::New(env); + data.Set("dataX", js_data_X); + data.Set("dataY", js_data_Y); + data.Set("rows", client_rows); + data.Set("cols", client_cols); + data.Set("timeStep", fdtd.GetCurrentTimeStep()); + + switch (data_return_type) { + case 0: + data.Set("dataEz", js_data_Ez); + // max = *std::max_element(std::begin(vect_Ez), std::end(vect_Ez)); + // min = *std::min_element(std::begin(vect_Ez), std::end(vect_Ez)); + break; + case 1: + data.Set("dataHy", js_data_Hy); + // max = *std::max_element(std::begin(vect_Hy), std::end(vect_Hy)); + // min = *std::min_element(std::begin(vect_Hy), std::end(vect_Hy)); + break; + case 2: + data.Set("dataHx", js_data_Hx); + // max = *std::max_element(std::begin(vect_Hx), std::end(vect_Hx)); + // min = *std::min_element(std::begin(vect_Hx), std::end(vect_Hx)); + break; + case 3: + data.Set("dataEnergy", js_data_Energy); + // max = *std::max_element(std::begin(vect_Energy), std::end(vect_Energy)); + // min = *std::min_element(std::begin(vect_Energy), std::end(vect_Energy)); + break; + + default: + // max = *std::max_element(std::begin(vect_Ez), std::end(vect_Ez)); + // min = *std::min_element(std::begin(vect_Ez), std::end(vect_Ez)); + break; + } + // Fill max and min values. + data.Set("max", max); + data.Set("min", min); + + return data; } \ No newline at end of file diff --git a/src/transform-to-js/get-data-2d/get-data-2d.h b/src/transform-to-js/get-data-2d/get-data-2d.h index 367bce0..b8b7f0b 100644 --- a/src/transform-to-js/get-data-2d/get-data-2d.h +++ b/src/transform-to-js/get-data-2d/get-data-2d.h @@ -1,9 +1,9 @@ #ifndef GET_DATA_2D #define GET_DATA_2D - #include #include + #include #include #include