From 11fed5f5063b72c2b45b9abf4da2fbb94e23dd8a Mon Sep 17 00:00:00 2001 From: Thorsten Liebig Date: Wed, 6 Jun 2012 10:28:06 +0200 Subject: [PATCH] cylinder engine extension changed handling and priority --- FDTD/extensions/engine_ext_cylinder.cpp | 13 +++++++------ FDTD/extensions/engine_ext_cylinder.h | 4 ++-- FDTD/extensions/engine_extension.h | 2 +- FDTD/extensions/operator_ext_excitation.cpp | 12 ++++++++++-- 4 files changed, 20 insertions(+), 11 deletions(-) diff --git a/FDTD/extensions/engine_ext_cylinder.cpp b/FDTD/extensions/engine_ext_cylinder.cpp index cdb9700..af17c52 100644 --- a/FDTD/extensions/engine_ext_cylinder.cpp +++ b/FDTD/extensions/engine_ext_cylinder.cpp @@ -41,7 +41,7 @@ void Engine_Ext_Cylinder::SetEngine(Engine* eng) m_Eng_SSE = dynamic_cast(m_Eng); } -void Engine_Ext_Cylinder::Apply2Voltages() +void Engine_Ext_Cylinder::DoPostVoltageUpdates() { if (CC_closedAlpha==false) return; @@ -49,14 +49,15 @@ void Engine_Ext_Cylinder::Apply2Voltages() { unsigned int pos[3]; pos[0] = 0; + FDTD_FLOAT volt=0; for (pos[2]=0; pos[2]Engine_sse::SetVolt(2,0,0,pos[2], m_Eng_SSE->Engine_sse::GetVolt(2,0,0,pos[2])*cyl_Op->vv_R0[pos[2]]); + volt =m_Eng_SSE->Engine_sse::GetVolt(2,0,0,pos[2])*cyl_Op->vv_R0[pos[2]]; for (pos[1]=0; pos[1]Engine_sse::SetVolt(2,0,0,pos[2], m_Eng_SSE->Engine_sse::GetVolt(2,0,0,pos[2]) + cyl_Op->vi_R0[pos[2]] * m_Eng_SSE->Engine_sse::GetCurr(1,0,pos[1],pos[2]) ); - } + volt +=cyl_Op->vi_R0[pos[2]] * m_Eng_SSE->Engine_sse::GetCurr(1,0,pos[1],pos[2]); + m_Eng_SSE->Engine_sse::SetVolt(2,0,0,pos[2], volt); } + for (pos[1]=0; pos[1] diff --git a/FDTD/extensions/operator_ext_excitation.cpp b/FDTD/extensions/operator_ext_excitation.cpp index a83f75e..32e5835 100644 --- a/FDTD/extensions/operator_ext_excitation.cpp +++ b/FDTD/extensions/operator_ext_excitation.cpp @@ -82,7 +82,14 @@ bool Operator_Ext_Excitation::BuildExtension() //electric field excite for (int n=0; n<3; ++n) { - m_Op->GetYeeCoords(n,pos,volt_coord,false); + if (m_Op->GetYeeCoords(n,pos,volt_coord,false)==false) + continue; + if (m_CC_R0_included && (n==2) && (pos[0]==0)) + volt_coord[1] = m_Op->GetDiscLine(1,0); + + if (m_CC_R0_included && (n==1) && (pos[0]==0)) + continue; + for (size_t p=0; p=numLines[0]-1) || (pos[1]>=numLines[1]-1) || (pos[2]>=numLines[2]-1)) continue; //skip the last H-Line which is outside the FDTD-domain - m_Op->GetYeeCoords(n,pos,curr_coord,true); + if (m_Op->GetYeeCoords(n,pos,curr_coord,true)==false) + continue; for (size_t p=0; p