50 #include <Xyce_config.h>
102 bool bsuccess =
true;
118 ExtendedString tagES = ndParam.tag ();
123 if (std::string(tagES,0,3) ==
"reg" && ndParam.
given())
130 int periodLocation = 0;
131 bool foundPeriod =
false;
132 for (
int iloc=0;iloc<tagES.size();++iloc)
134 std::string singleChar(tagES,iloc,1);
135 if (singleChar ==
".")
137 periodLocation = iloc;
145 "::processDopingParams. The region specification needs a period\n";
146 N_ERH_ErrorMgr::report( N_ERH_ErrorMgr::DEV_FATAL_0,msg);
149 std::string regionName(tagES,0,periodLocation);
151 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS))
153 Xyce::dout() <<
"tagES = "<< tagES;
154 Xyce::dout() <<
" regionName = "<< regionName;
155 Xyce::dout() <<
" param: " << ndParam.stringValue() << std::endl;
166 dopeInfoMap[regionName]->processParam (ndParam, param, *
this);
184 ExtendedString tagES = ndParam.tag ();
187 if (std::string(tagES,0,4) ==
"node" && ndParam.
given() )
189 int periodLocation = 5;
207 bool foundPeriod =
false;
208 for (
int iloc=0;iloc<tagES.size();++iloc)
210 std::string singleChar(tagES,iloc,1);
211 if (singleChar ==
".")
213 periodLocation = iloc;
225 "::processParams. The node specification needs a period\n";
226 N_ERH_ErrorMgr::report( N_ERH_ErrorMgr::DEV_FATAL_0,msg);
229 std::string nodeName(tagES,0,periodLocation);
230 if (DEBUG_DEVICE && isActive(Diag::DEVICE_PARAMETERS))
232 Xyce::dout() <<
"tagES = "<< tagES << std::endl;
233 Xyce::dout() <<
"nodeName = "<< nodeName << std::endl;
244 int tagSize = tagES.size();
246 if (tagSize > periodLocation+1)
248 std::string tmpParam(tagES,periodLocation+1,tagSize);
250 if (tmpParam ==
"name")
253 ExtendedString dIName = ndParam.stringValue();
256 dINode.
eName = dIName;
257 dINode.
nName = nodeName;
265 if (tmpParam ==
"bc")
267 ExtendedString nmName = ndParam.stringValue();
269 if (nmName ==
"NEUMANN" ||
273 Xyce::dout() <<
"found a neumann. name = " << tagES << std::endl;
277 if (tmpParam ==
"side")
281 ExtendedString tmpstr = ndParam.stringValue();
288 if (tmpParam ==
"start")
290 electrodeMap[nodeName]->start = ndParam.getImmutableValue<
double>();
294 if (tmpParam ==
"end")
296 electrodeMap[nodeName]->end = ndParam.getImmutableValue<
double>();
300 if (tmpParam ==
"material")
302 ExtendedString tmpName = ndParam.stringValue();
308 if (tmpParam ==
"oxidebndryflag")
310 if (ndParam.
given() && ndParam.getImmutableValue<
int>() == 1)
316 if (tmpParam ==
"oxthick")
318 electrodeMap[nodeName]->oxthick = ndParam.getImmutableValue<
double>();
321 if (tmpParam ==
"oxcharge")
323 electrodeMap[nodeName]->oxcharge = ndParam.getImmutableValue<
double>();
bool processElectrodeParams(Param &ndParam)
Pure virtual class to augment a linear system.
std::map< std::string, PDE_2DElectrode * > electrodeMap
std::vector< DeviceInterfaceNode > dIVec
std::map< std::string, DopeInfo * > dopeInfoMap
bool processDopingParams(Param &ndParam, std::string param)
std::map< std::string, std::string > tmpBCmap