From 98e4790c0e0d4bc78d8452dafeec87da806acef6 Mon Sep 17 00:00:00 2001 From: Thorsten Liebig Date: Thu, 11 Mar 2010 15:03:24 +0100 Subject: [PATCH] Operator check if electrode is valid or not --- FDTD/operator.cpp | 52 ++++++++++++++++++++++++----------------------- 1 file changed, 27 insertions(+), 25 deletions(-) diff --git a/FDTD/operator.cpp b/FDTD/operator.cpp index 4886fd5..d911798 100644 --- a/FDTD/operator.cpp +++ b/FDTD/operator.cpp @@ -590,38 +590,40 @@ bool Operator::CalcEFieldExcitation() coord[0] = discLines[0][pos[0]]; coord[1] = discLines[1][pos[1]]; coord[2] = discLines[2][pos[2]]; - CSProperties* prop = CSX->GetPropertyByCoordPriority(coord,CSProperties::ELECTRODE); +// CSProperties* prop = CSX->GetPropertyByCoordPriority(coord,(CSProperties::PropertyType)(CSProperties::ELECTRODE | CSProperties::METAL)); + CSProperties* prop = CSX->GetPropertyByCoordPriority(coord,(CSProperties::PropertyType)(CSProperties::ELECTRODE)); if (prop) { CSPropElectrode* elec = prop->ToElectrode(); - if ((elec->GetExcitType()==0) || (elec->GetExcitType()==1)) //soft or hard E-Field excite! - { - vDelay.push_back((unsigned int)(elec->GetDelay()/dT)); - for (int n=0;n<3;++n) + if (elec!=NULL) + if ((elec->GetExcitType()==0) || (elec->GetExcitType()==1)) //soft or hard E-Field excite! { - coord[0] = discLines[0][pos[0]]; - coord[1] = discLines[1][pos[1]]; - coord[2] = discLines[2][pos[2]]; - double delta=0; - if (pos[n]GetActiveDir(n)) && (pos[n]GetWeightedExcitation(n,coord)*delta*gridDelta); - else - vExcit[n].push_back(0); - if ((elec->GetExcitType()==1) && (elec->GetActiveDir(n))) //hard excite + vDelay.push_back((unsigned int)(elec->GetDelay()/dT)); + for (int n=0;n<3;++n) { - vv[(n+1)%3][pos[0]][pos[1]][pos[2]] = 0; - vi[(n+1)%3][pos[0]][pos[1]][pos[2]] = 0; - vv[(n+2)%3][pos[0]][pos[1]][pos[2]] = 0; - vi[(n+2)%3][pos[0]][pos[1]][pos[2]] = 0; + coord[0] = discLines[0][pos[0]]; + coord[1] = discLines[1][pos[1]]; + coord[2] = discLines[2][pos[2]]; + double delta=0; + if (pos[n]GetActiveDir(n)) && (pos[n]GetWeightedExcitation(n,coord)*delta*gridDelta); + else + vExcit[n].push_back(0); + if ((elec->GetExcitType()==1) && (elec->GetActiveDir(n))) //hard excite + { + vv[(n+1)%3][pos[0]][pos[1]][pos[2]] = 0; + vi[(n+1)%3][pos[0]][pos[1]][pos[2]] = 0; + vv[(n+2)%3][pos[0]][pos[1]][pos[2]] = 0; + vi[(n+2)%3][pos[0]][pos[1]][pos[2]] = 0; + } } } - } } } }