From 78b1e6a4e75cca0acaeb45bfb046ea4bc2845555 Mon Sep 17 00:00:00 2001 From: Yifeng Li Date: Thu, 14 Nov 2024 14:23:40 +0000 Subject: [PATCH] engine_ext_upml: convert to ArrayLib. Signed-off-by: Yifeng Li --- FDTD/extensions/engine_ext_upml.cpp | 8 ++----- FDTD/extensions/engine_ext_upml.h | 4 ++-- FDTD/extensions/operator_ext_upml.cpp | 32 +++++---------------------- FDTD/extensions/operator_ext_upml.h | 14 +++++++----- 4 files changed, 18 insertions(+), 40 deletions(-) diff --git a/FDTD/extensions/engine_ext_upml.cpp b/FDTD/extensions/engine_ext_upml.cpp index 74c77742..24567930 100644 --- a/FDTD/extensions/engine_ext_upml.cpp +++ b/FDTD/extensions/engine_ext_upml.cpp @@ -29,18 +29,14 @@ Engine_Ext_UPML::Engine_Ext_UPML(Operator_Ext_UPML* op_ext) : Engine_Extension(o //this ABC extension should be executed first! m_Priority = ENG_EXT_PRIO_UPML; - volt_flux = Create_N_3DArray(m_Op_UPML->m_numLines); - curr_flux = Create_N_3DArray(m_Op_UPML->m_numLines); + volt_flux.Init("volt_flux", m_Op_UPML->m_numLines); + curr_flux.Init("curr_flux", m_Op_UPML->m_numLines); SetNumberOfThreads(1); } Engine_Ext_UPML::~Engine_Ext_UPML() { - Delete_N_3DArray(volt_flux,m_Op_UPML->m_numLines); - volt_flux=NULL; - Delete_N_3DArray(curr_flux,m_Op_UPML->m_numLines); - curr_flux=NULL; } void Engine_Ext_UPML::SetNumberOfThreads(int nrThread) diff --git a/FDTD/extensions/engine_ext_upml.h b/FDTD/extensions/engine_ext_upml.h index 808a8e00..3effff53 100644 --- a/FDTD/extensions/engine_ext_upml.h +++ b/FDTD/extensions/engine_ext_upml.h @@ -61,8 +61,8 @@ class Engine_Ext_UPML : public Engine_Extension vector m_start; vector m_numX; - FDTD_FLOAT**** volt_flux; - FDTD_FLOAT**** curr_flux; + ArrayLib::ArrayNIJK volt_flux; + ArrayLib::ArrayNIJK curr_flux; }; #endif // ENGINE_EXT_UPML_H diff --git a/FDTD/extensions/operator_ext_upml.cpp b/FDTD/extensions/operator_ext_upml.cpp index bbec3c98..59e7f2a4 100644 --- a/FDTD/extensions/operator_ext_upml.cpp +++ b/FDTD/extensions/operator_ext_upml.cpp @@ -40,13 +40,6 @@ Operator_Ext_UPML::Operator_Ext_UPML(Operator* op) : Operator_Extension(op) m_StartPos[n]=0; m_numLines[n]=0; } - - vv = NULL; - vvfo = NULL; - vvfn = NULL; - ii = NULL; - iifo = NULL; - iifn = NULL; } Operator_Ext_UPML::~Operator_Ext_UPML() @@ -257,18 +250,6 @@ bool Operator_Ext_UPML::Create_UPML(Operator* op, const int ui_BC[6], const unsi void Operator_Ext_UPML::DeleteOp() { - Delete_N_3DArray(vv,m_numLines); - vv = NULL; - Delete_N_3DArray(vvfo,m_numLines); - vvfo = NULL; - Delete_N_3DArray(vvfn,m_numLines); - vvfn = NULL; - Delete_N_3DArray(ii,m_numLines); - ii = NULL; - Delete_N_3DArray(iifo,m_numLines); - iifo = NULL; - Delete_N_3DArray(iifn,m_numLines); - iifn = NULL; } @@ -372,13 +353,12 @@ bool Operator_Ext_UPML::BuildExtension() if (m_Op==NULL) return false; - DeleteOp(); - vv = Create_N_3DArray(m_numLines); - vvfo = Create_N_3DArray(m_numLines); - vvfn = Create_N_3DArray(m_numLines); - ii = Create_N_3DArray(m_numLines); - iifo = Create_N_3DArray(m_numLines); - iifn = Create_N_3DArray(m_numLines); + vv.Init("vv", m_numLines); + vvfo.Init("vvfo", m_numLines); + vvfn.Init("vvfn", m_numLines); + ii.Init("ii", m_numLines); + iifo.Init("iifo", m_numLines); + iifn.Init("iifn", m_numLines); unsigned int pos[3]; unsigned int loc_pos[3]; diff --git a/FDTD/extensions/operator_ext_upml.h b/FDTD/extensions/operator_ext_upml.h index 0649d704..3d19671d 100644 --- a/FDTD/extensions/operator_ext_upml.h +++ b/FDTD/extensions/operator_ext_upml.h @@ -21,6 +21,8 @@ #include "FDTD/operator.h" #include "operator_extension.h" +#include "tools/arraylib/array_nijk.h" + class FunctionParser; //! Operator extension implementation an uniaxial perfectly matched layer (upml) @@ -95,12 +97,12 @@ class Operator_Ext_UPML : public Operator_Extension virtual FDTD_FLOAT& GetIIFO(int ny, unsigned int pos[3]) {return iifo[ny][pos[0]][pos[1]][pos[2]];} virtual FDTD_FLOAT& GetIIFN(int ny, unsigned int pos[3]) {return iifn[ny][pos[0]][pos[1]][pos[2]];} - FDTD_FLOAT**** vv; //calc new voltage from old voltage - FDTD_FLOAT**** vvfo; //calc new voltage from old voltage flux - FDTD_FLOAT**** vvfn; //calc new voltage from new voltage flux - FDTD_FLOAT**** ii; //calc new current from old current - FDTD_FLOAT**** iifo; //calc new current from old current flux - FDTD_FLOAT**** iifn; //calc new current from new current flux + ArrayLib::ArrayNIJK vv; //calc new voltage from old voltage + ArrayLib::ArrayNIJK vvfo; //calc new voltage from old voltage flux + ArrayLib::ArrayNIJK vvfn; //calc new voltage from new voltage flux + ArrayLib::ArrayNIJK ii; //calc new current from old current + ArrayLib::ArrayNIJK iifo; //calc new current from old current flux + ArrayLib::ArrayNIJK iifn; //calc new current from new current flux }; #endif // OPERATOR_EXT_UPML_H