removed & cleanup old c-examples

This commit is contained in:
Thorsten Liebig 2010-05-05 13:04:19 +02:00
parent e237216f56
commit e3a12c959d
9 changed files with 3 additions and 1425 deletions

View File

@ -1,97 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes" ?>
<openEMS>
<FDTD NumberOfTimesteps="1000">
<Excitation Type="0" f0="1000000000" fc="1000000000" />
<BoundaryCond xmin="0" xmax="0" ymin="0" ymax="0" zmin="0" zmax="0" />
</FDTD>
<ContinuousStructure>
<RectilinearGrid DeltaUnit="0.001000">
<XLines Qty="93">-230,-225,-220,-215,-210,-205,-200,-195,-190,-185,-180,-175,-170,-165,-160,-155,-150,-145,-140,-135,-130,-125,-120,-115,-110,-105,-100,-95,-90,-85,-80,-75,-70,-65,-60,-55,-50,-45,-40,-35,-30,-25,-20,-15,-10,-5,0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100,105,110,115,120,125,130,135,140,145,150,155,160,165,170,175,180,185,190,195,200,205,210,215,220,225,230</XLines>
<YLines Qty="93">-230,-225,-220,-215,-210,-205,-200,-195,-190,-185,-180,-175,-170,-165,-160,-155,-150,-145,-140,-135,-130,-125,-120,-115,-110,-105,-100,-95,-90,-85,-80,-75,-70,-65,-60,-55,-50,-45,-40,-35,-30,-25,-20,-15,-10,-5,0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100,105,110,115,120,125,130,135,140,145,150,155,160,165,170,175,180,185,190,195,200,205,210,215,220,225,230</YLines>
<ZLines Qty="201">-500,-490,-480,-470,-460,-450,-440,-430,-420,-410,-400,-390,-380,-370,-360,-350,-340,-330,-320,-310,-300,-290,-280,-270,-260,-250,-240,-230,-220,-210,-200,-190,-180,-170,-160,-150,-140,-130,-120,-110,-100,-90,-80,-70,-60,-50,-40,-30,-20,-10,0,10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200,210,220,230,240,250,260,270,280,290,300,310,320,330,340,350,360,370,380,390,400,410,420,430,440,450,460,470,480,490,500,510,520,530,540,550,560,570,580,590,600,610,620,630,640,650,660,670,680,690,700,710,720,730,740,750,760,770,780,790,800,810,820,830,840,850,860,870,880,890,900,910,920,930,940,950,960,970,980,990,1000,1010,1020,1030,1040,1050,1060,1070,1080,1090,1100,1110,1120,1130,1140,1150,1160,1170,1180,1190,1200,1210,1220,1230,1240,1250,1260,1270,1280,1290,1300,1310,1320,1330,1340,1350,1360,1370,1380,1390,1400,1410,1420,1430,1440,1450,1460,1470,1480,1490,1500</ZLines>
</RectilinearGrid>
<ParameterSet />
<Properties>
<Material Isotropy="1" ID="0" Name="">
<Property Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="1.875000e-10" Sigma="2.661107e-05" />
<PropertyY Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="0.000000e+00" Sigma="0.000000e+00" />
<PropertyZ Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="0.000000e+00" Sigma="0.000000e+00" />
<WeightX Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="term:pow(abs(z)-1300,4)" Sigma="term:pow(abs(z)-1300,4)" />
<WeightY Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="term:pow(abs(z)-1300,4)" Sigma="term:pow(abs(z)-1300,4)" />
<WeightZ Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="term:pow(abs(z)-1300,4)" Sigma="term:pow(abs(z)-1300,4)" />
<Primitives>
<Box ID="0" Priority="10">
<P1 X="-2.300000e+02" Y="-2.300000e+02" Z="1.300000e+03" />
<P2 X="2.300000e+02" Y="2.300000e+02" Z="1.500000e+03" />
</Box>
</Primitives>
</Material>
<Electrode Number="0" Delay="0.000000e+00" ID="1" Name="">
<Excitation Type="0" Excit_X="1.000000e+00" Excit_Y="1.000000e+00" Excit_Z="0.000000e+00" />
<Weight X="term:x/pow(rho,2)" Y="term:y/pow(rho,2)" Z="1.000000e+00" />
<Primitives>
<Box ID="1" Priority="5">
<P1 X="-2.300000e+02" Y="-2.300000e+02" Z="-5.000000e+02" />
<P2 X="2.300000e+02" Y="2.300000e+02" Z="-5.000000e+02" />
</Box>
</Primitives>
</Electrode>
<DumpBox DumpType="0" DumpMode="0" ID="2" Name="Et_">
<Primitives>
<Box ID="2" Priority="0">
<P1 X="-2.300000e+02" Y="0.000000e+00" Z="-5.000000e+02" />
<P2 X="2.300000e+02" Y="0.000000e+00" Z="1.500000e+03" />
</Box>
</Primitives>
</DumpBox>
<ProbeBox Number="0" Type="0" ID="3" Name="u1">
<Primitives>
<Box ID="3" Priority="0">
<P1 X="1.000000e+02" Y="0.000000e+00" Z="0.000000e+00" />
<P2 X="2.300000e+02" Y="0.000000e+00" Z="0.000000e+00" />
</Box>
</Primitives>
</ProbeBox>
<ProbeBox Number="0" Type="1" ID="4" Name="i1">
<Primitives>
<Box ID="4" Priority="0">
<P1 X="-1.500000e+02" Y="-1.500000e+02" Z="0.000000e+00" />
<P2 X="1.500000e+02" Y="1.500000e+02" Z="0.000000e+00" />
</Box>
</Primitives>
</ProbeBox>
<Material Isotropy="1" ID="5" Name="">
<Property Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="5.600000e+10" Sigma="0.000000e+00" />
<PropertyY Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="0.000000e+00" Sigma="0.000000e+00" />
<PropertyZ Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="0.000000e+00" Sigma="0.000000e+00" />
<WeightX Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="1.000000e+00" Sigma="1.000000e+00" />
<WeightY Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="1.000000e+00" Sigma="1.000000e+00" />
<WeightZ Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="1.000000e+00" Sigma="1.000000e+00" />
<Primitives>
<Cylinder ID="5" Priority="100" Radius="1.000000e+02">
<P0 X="0.000000e+00" Y="0.000000e+00" Z="-5.000000e+02" />
<P1 X="0.000000e+00" Y="0.000000e+00" Z="1.500000e+03" />
</Cylinder>
<Box ID="6" Priority="1">
<P1 X="-2.300000e+02" Y="-2.300000e+02" Z="-5.000000e+02" />
<P2 X="2.300000e+02" Y="2.300000e+02" Z="1.500000e+03" />
</Box>
</Primitives>
</Material>
<Material Isotropy="1" ID="6" Name="">
<Property Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="0.000000e+00" Sigma="0.000000e+00" />
<PropertyY Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="0.000000e+00" Sigma="0.000000e+00" />
<PropertyZ Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="0.000000e+00" Sigma="0.000000e+00" />
<WeightX Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="1.000000e+00" Sigma="1.000000e+00" />
<WeightY Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="1.000000e+00" Sigma="1.000000e+00" />
<WeightZ Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="1.000000e+00" Sigma="1.000000e+00" />
<Primitives>
<Cylinder ID="7" Priority="9" Radius="2.300000e+02">
<P0 X="0.000000e+00" Y="0.000000e+00" Z="-5.000000e+02" />
<P1 X="0.000000e+00" Y="0.000000e+00" Z="1.500000e+03" />
</Cylinder>
</Primitives>
</Material>
</Properties>
</ContinuousStructure>
</openEMS>

View File

@ -1,41 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes" ?>
<openEMS>
<FDTD NumberOfTimesteps="1000">
<Excitation Type="0" f0="500000000" fc="500000000" />
<BoundaryCond xmin="1" xmax="1" ymin="0" ymax="0" zmin="0" zmax="0" />
</FDTD>
<ContinuousStructure>
<RectilinearGrid DeltaUnit="0.001000">
<XLines Qty="100">-990,-970,-950,-930,-910,-890,-870,-850,-830,-810,-790,-770,-750,-730,-710,-690,-670,-650,-630,-610,-590,-570,-550,-530,-510,-490,-470,-450,-430,-410,-390,-370,-350,-330,-310,-290,-270,-250,-230,-210,-190,-170,-150,-130,-110,-90,-70,-50,-30,-10,10,30,50,70,90,110,130,150,170,190,210,230,250,270,290,310,330,350,370,390,410,430,450,470,490,510,530,550,570,590,610,630,650,670,690,710,730,750,770,790,810,830,850,870,890,910,930,950,970,990</XLines>
<YLines Qty="100">-990,-970,-950,-930,-910,-890,-870,-850,-830,-810,-790,-770,-750,-730,-710,-690,-670,-650,-630,-610,-590,-570,-550,-530,-510,-490,-470,-450,-430,-410,-390,-370,-350,-330,-310,-290,-270,-250,-230,-210,-190,-170,-150,-130,-110,-90,-70,-50,-30,-10,10,30,50,70,90,110,130,150,170,190,210,230,250,270,290,310,330,350,370,390,410,430,450,470,490,510,530,550,570,590,610,630,650,670,690,710,730,750,770,790,810,830,850,870,890,910,930,950,970,990</YLines>
<ZLines Qty="100">-990,-970,-950,-930,-910,-890,-870,-850,-830,-810,-790,-770,-750,-730,-710,-690,-670,-650,-630,-610,-590,-570,-550,-530,-510,-490,-470,-450,-430,-410,-390,-370,-350,-330,-310,-290,-270,-250,-230,-210,-190,-170,-150,-130,-110,-90,-70,-50,-30,-10,10,30,50,70,90,110,130,150,170,190,210,230,250,270,290,310,330,350,370,390,410,430,450,470,490,510,530,550,570,590,610,630,650,670,690,710,730,750,770,790,810,830,850,870,890,910,930,950,970,990</ZLines>
</RectilinearGrid>
<ParameterSet />
<Properties>
<Material Isotropy="1" ID="0" Name="">
<Property Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="1.000000e-03" Sigma="0.000000e+00" />
<PropertyY Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="0.000000e+00" Sigma="0.000000e+00" />
<PropertyZ Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="0.000000e+00" Sigma="0.000000e+00" />
<WeightX Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="1.000000e+00" Sigma="1.000000e+00" />
<WeightY Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="1.000000e+00" Sigma="1.000000e+00" />
<WeightZ Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="1.000000e+00" Sigma="1.000000e+00" />
<Primitives>
<Box ID="0" Priority="0">
<P1 X="-1.000000e+03" Y="-1.000000e+03" Z="-1.000000e+03" />
<P2 X="1.000000e+03" Y="1.000000e+03" Z="1.000000e+03" />
</Box>
</Primitives>
</Material>
<Electrode Number="0" Delay="0.000000e+00" ID="1" Name="">
<Excitation Type="1" Excit_X="0.000000e+00" Excit_Y="1.000000e+00" Excit_Z="0.000000e+00" />
<Weight X="1.000000e+00" Y="1.000000e+00" Z="1.000000e+00" />
<Primitives>
<Box ID="1" Priority="0">
<P1 X="-1.000000e+01" Y="-7.500000e+01" Z="-1.000000e+01" />
<P2 X="1.000000e+01" Y="7.500000e+01" Z="1.000000e+01" />
</Box>
</Primitives>
</Electrode>
</Properties>
</ContinuousStructure>
</openEMS>

View File

@ -1,876 +0,0 @@
/*
* Copyright (C) 2010 Thorsten Liebig (Thorsten.Liebig@gmx.de)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "FDTD_examples.h"
#include "../tools/constants.h"
void BuildDipol(const char* filename)
{
int maxIter = 1000;
double f0=0.5e9;
double fc=0.5e9;
int Excit_Type=0;
int bounds[] = {1,1,0,0,0,0};
cerr << "Create Geometry..." << endl;
ContinuousStructure CSX;
CSPropMaterial* mat = new CSPropMaterial(CSX.GetParameterSet());
mat->SetKappa(0.001);
CSX.AddProperty(mat);
CSPrimBox* matbox = new CSPrimBox(CSX.GetParameterSet(),mat);
matbox->SetCoord(0,-1000.0);matbox->SetCoord(1,1000.0);
matbox->SetCoord(2,-1000.0);matbox->SetCoord(3,1000.0);
matbox->SetCoord(4,-1000.0);matbox->SetCoord(5,1000.0);
CSX.AddPrimitive(matbox);
CSPropElectrode* elec = new CSPropElectrode(CSX.GetParameterSet());
elec->SetExcitation(1,1);
elec->SetExcitType(1);
elec->SetActiveDir(0,0);//disable x
elec->SetActiveDir(0,2);//disable z
// elec->SetDelay(2.0e-9);
CSX.AddProperty(elec);
CSPrimBox* box = new CSPrimBox(CSX.GetParameterSet(),elec);
box->SetCoord(0,-10.0);box->SetCoord(1,10.0);
box->SetCoord(2,-75.0);box->SetCoord(3,75.0);
box->SetCoord(4,-10.0);box->SetCoord(5,10.0);
CSX.AddPrimitive(box);
CSRectGrid* grid = CSX.GetGrid();
for (int n=-990;n<=990;n+=20)
grid->AddDiscLine(2,(double)n);
for (int n=-990;n<=990;n+=20)
grid->AddDiscLine(0,(double)n);
for (int n=-990;n<=990;n+=20)
grid->AddDiscLine(1,(double)n);
grid->SetDeltaUnit(1e-3);
//*************** Create XML file **********************
TiXmlDocument doc(filename);
doc.InsertEndChild(TiXmlDeclaration("1.0","ISO-8859-1","yes"));
TiXmlElement openEMS("openEMS");
TiXmlElement FDTD_Opts("FDTD");
FDTD_Opts.SetAttribute("NumberOfTimesteps",maxIter);
TiXmlElement Excite("Excitation");
Excite.SetAttribute("Type",Excit_Type);
Excite.SetAttribute("f0",f0);
Excite.SetAttribute("fc",fc);
FDTD_Opts.InsertEndChild(Excite);
TiXmlElement BC("BoundaryCond");
BC.SetAttribute("xmin",bounds[0]);
BC.SetAttribute("xmax",bounds[1]);
BC.SetAttribute("ymin",bounds[2]);
BC.SetAttribute("ymax",bounds[3]);
BC.SetAttribute("zmin",bounds[4]);
BC.SetAttribute("zmax",bounds[5]);
FDTD_Opts.InsertEndChild(BC);
openEMS.InsertEndChild(FDTD_Opts);
if (CSX.Write2XML(&openEMS,true,true)==false)
{
cerr << "writing failed" << endl;
exit(-1);
}
doc.InsertEndChild(openEMS);
doc.SaveFile();
}
void BuildPlaneWave(const char* filename)
{
int maxIter = 10000;
double f0=0.5e9;
double fc=0.5e9;
int Excit_Type=0;
int bounds[] = {1,1,0,0,0,0};
cerr << "Create Geometry..." << endl;
ContinuousStructure CSX;
double width = 1000;
double hight = 1000;
double length = 4000;
double abs_l = 200;
CSPrimBox* box = NULL;
//fake pml....
CSPropMaterial* mat = new CSPropMaterial(CSX.GetParameterSet());
// mat->SetEpsilon(3.6);
double finalKappa = 0.3/pow(abs_l,4);
mat->SetKappa(finalKappa);
std::ostringstream fct;
fct << "pow(abs(z)-" << length/2.0-abs_l << ",4)";
mat->SetKappaWeightFunction(fct.str(),0);
mat->SetKappaWeightFunction(fct.str(),1);
mat->SetKappaWeightFunction(fct.str(),2);
mat->SetSigma(finalKappa*__MUE0__/__EPS0__);
mat->SetSigmaWeightFunction(fct.str(),0);
mat->SetSigmaWeightFunction(fct.str(),1);
mat->SetSigmaWeightFunction(fct.str(),2);
CSX.AddProperty(mat);
box = new CSPrimBox(CSX.GetParameterSet(),mat);
box->SetCoord(0,width/-2.0);box->SetCoord(1,width/2.0);
box->SetCoord(2,hight/-2.0);box->SetCoord(3,hight/2.0);
box->SetCoord(4,length/2.0-abs_l); box->SetCoord(5,length/2.0);
CSX.AddPrimitive(box);
box = new CSPrimBox(CSX.GetParameterSet(),mat);
box->SetCoord(0,width/-2.0);box->SetCoord(1,width/2.0);
box->SetCoord(2,hight/-2.0);box->SetCoord(3,hight/2.0);
box->SetCoord(4,length/-2.0+abs_l); box->SetCoord(5,length/-2.0);
CSX.AddPrimitive(box);
CSPropMaterial* mat2 = new CSPropMaterial(CSX.GetParameterSet());
mat2->SetEpsilon(2);
CSX.AddProperty(mat2);
CSPrimCylindricalShell* cylshell = new CSPrimCylindricalShell(CSX.GetParameterSet(),mat2);
cylshell->SetRadius(length/4.0);
cylshell->SetShellWidth(200.0);
cylshell->SetCoord(0,0.0);cylshell->SetCoord(1,0.0);
cylshell->SetCoord(2,hight/-2.0);cylshell->SetCoord(3,hight/2.0);
cylshell->SetCoord(4,0.0);cylshell->SetCoord(5,0.0);
CSX.AddPrimitive(cylshell);
CSPropElectrode* elec = new CSPropElectrode(CSX.GetParameterSet());
elec->SetExcitation(1,1);
elec->SetExcitType(0);
elec->SetActiveDir(0,0);//disable x
elec->SetActiveDir(0,2);//disable z
// elec->SetDelay(2.0e-9);
CSX.AddProperty(elec);
box = new CSPrimBox(CSX.GetParameterSet(),elec);
box->SetCoord(0,width/-2.0);box->SetCoord(1,width/2.0);
box->SetCoord(2,hight/-2.0);box->SetCoord(3,hight/2.0);
box->SetCoord(4,0.0);box->SetCoord(5,0.0);
CSX.AddPrimitive(box);
//E-field dump
CSPropDumpBox* Edump = new CSPropDumpBox(CSX.GetParameterSet());
Edump->SetDumpType(0);
Edump->SetName("Et_");
CSX.AddProperty(Edump);
box = new CSPrimBox(CSX.GetParameterSet(),Edump);
box->SetCoord(0,width/-3.0);box->SetCoord(1,width/3.0);
box->SetCoord(2,0.0);box->SetCoord(3,0.0);
box->SetCoord(4,length/-2.0+abs_l);box->SetCoord(5,length/2.0-abs_l);
CSX.AddPrimitive(box);
//H-field dump
CSPropDumpBox* Hdump = new CSPropDumpBox(CSX.GetParameterSet());
Hdump->SetDumpType(1);
Hdump->SetName("Ht_");
CSX.AddProperty(Hdump);
box = new CSPrimBox(CSX.GetParameterSet(),Hdump);
box->SetCoord(0,width/-3.0);box->SetCoord(1,width/3.0);
box->SetCoord(2,0.0);box->SetCoord(3,0.0);
box->SetCoord(4,length/-2.0+abs_l);box->SetCoord(5,length/2.0-abs_l);
CSX.AddPrimitive(box);
// CSPropMetal* metal = new CSPropMetal(CSX.GetParameterSet());
// CSX.AddProperty(metal);
// CSPrimCylinder* cyl = new CSPrimCylinder(CSX.GetParameterSet(),metal);
// cyl->SetRadius(100);
// cyl->SetCoord(0,0.0);cyl->SetCoord(1,0.0);
// cyl->SetCoord(2,-250.0);cyl->SetCoord(3,250.0);
// cyl->SetCoord(4,-0000.0);cyl->SetCoord(5,-0000.0);
// CSX.AddPrimitive(cyl);
CSRectGrid* grid = CSX.GetGrid();
for (int n=width/-2.0;n<=width/2;n+=20)
grid->AddDiscLine(0,(double)n);
for (int n=hight/-2.0;n<=hight/2.0;n+=20)
grid->AddDiscLine(1,(double)n);
for (int n=length/-2.0;n<=length/2.0;n+=20)
grid->AddDiscLine(2,(double)n);
grid->SetDeltaUnit(1e-3);
//*************** Create XML file **********************
TiXmlDocument doc(filename);
doc.InsertEndChild(TiXmlDeclaration("1.0","ISO-8859-1","yes"));
TiXmlElement openEMS("openEMS");
TiXmlElement FDTD_Opts("FDTD");
FDTD_Opts.SetAttribute("NumberOfTimesteps",maxIter);
TiXmlElement Excite("Excitation");
Excite.SetAttribute("Type",Excit_Type);
Excite.SetAttribute("f0",f0);
Excite.SetAttribute("fc",fc);
FDTD_Opts.InsertEndChild(Excite);
TiXmlElement BC("BoundaryCond");
BC.SetAttribute("xmin",bounds[0]);
BC.SetAttribute("xmax",bounds[1]);
BC.SetAttribute("ymin",bounds[2]);
BC.SetAttribute("ymax",bounds[3]);
BC.SetAttribute("zmin",bounds[4]);
BC.SetAttribute("zmax",bounds[5]);
FDTD_Opts.InsertEndChild(BC);
openEMS.InsertEndChild(FDTD_Opts);
if (CSX.Write2XML(&openEMS,true,true)==false)
{
cerr << "writing failed" << endl;
exit(-1);
}
doc.InsertEndChild(openEMS);
doc.SaveFile();
}
void BuildMSL(const char* filename)
{
int maxIter = 10000;
double f0=0.5e9;
double fc=0.5e9;
int Excit_Type=0;
int bounds[] = {1,1,0,0,0,0};
cerr << "Create Geometry..." << endl;
ContinuousStructure CSX;
double width = 1000;
double height = 500;
double length = 2000;
double abs_l = 200;
double MSL_height=50;
double MSL_width=80;
double delta[] = {20,10,20};
//substrate....
CSPropMaterial* mat = new CSPropMaterial(CSX.GetParameterSet());
// mat->SetEpsilon(3.6);
double finalKappa = 0.3/pow(abs_l,4);
mat->SetKappa(finalKappa);
std::ostringstream fct;
fct << "pow(abs(z)-" << length/2.0-abs_l << ",4)";
mat->SetKappaWeightFunction(fct.str(),0);
mat->SetKappaWeightFunction(fct.str(),1);
mat->SetKappaWeightFunction(fct.str(),2);
mat->SetSigma(finalKappa*__MUE0__/__EPS0__);
mat->SetSigmaWeightFunction(fct.str(),0);
mat->SetSigmaWeightFunction(fct.str(),1);
mat->SetSigmaWeightFunction(fct.str(),2);
CSX.AddProperty(mat);
CSPrimBox* box = new CSPrimBox(CSX.GetParameterSet(),mat);
box->SetCoord(0,width/-2.0);box->SetCoord(1,width/2.0);
box->SetCoord(2,0.0);box->SetCoord(3,height);
box->SetCoord(4,length/2.0-abs_l); box->SetCoord(5,length/2.0);
CSX.AddPrimitive(box);
// box = new CSPrimBox(CSX.GetParameterSet(),mat);
// box->SetCoord(0,width/-2.0);box->SetCoord(1,width/2.0);
// box->SetCoord(2,0.0);box->SetCoord(3,hight);
// box->SetCoord(4,length/-2.0+abs_l); box->SetCoord(5,length/-2.0);
// CSX.AddPrimitive(box);
//MSL
CSProperties* MSL = NULL;
CSPropMaterial* MSL_mat = new CSPropMaterial(CSX.GetParameterSet());
MSL_mat->SetKappa(56e6);
MSL = MSL_mat;
// MSL = new CSPropMetal(CSX.GetParameterSet());
CSX.AddProperty(MSL);
box = new CSPrimBox(CSX.GetParameterSet(),MSL);
box->SetCoord(0,MSL_width/-2.0);box->SetCoord(1,MSL_width/2.0);
box->SetCoord(2,MSL_height);box->SetCoord(3,MSL_height+delta[1]);
box->SetCoord(4,length/-2);box->SetCoord(5,length/2.0);
box->SetPriority(100);
CSX.AddPrimitive(box);
//MSL excite...
CSPropElectrode* elec = new CSPropElectrode(CSX.GetParameterSet());
elec->SetExcitation(-1,1);
elec->SetExcitType(0);
// elec->SetDelay(2.0e-9);
CSX.AddProperty(elec);
box = new CSPrimBox(CSX.GetParameterSet(),elec);
box->SetCoord(0,-40.0);box->SetCoord(1,40.0);
box->SetCoord(2,0.0);box->SetCoord(3,50.0);
box->SetCoord(4,length/-2.0);box->SetCoord(5,length/-2.0);
CSX.AddPrimitive(box);
CSPropDumpBox* Edump = NULL;
// //E-field dump xz
// Edump = new CSPropDumpBox(CSX.GetParameterSet());
// Edump->SetDumpType(0);
// Edump->SetName("Et_xz_");
// CSX.AddProperty(Edump);
// box = new CSPrimBox(CSX.GetParameterSet(),Edump);
// box->SetCoord(0,width/-2.0);box->SetCoord(1,width/2.0);
// box->SetCoord(2,25.0);box->SetCoord(3,25.);
// box->SetCoord(4,length/-2.0);box->SetCoord(5,length/2.0);
// CSX.AddPrimitive(box);
//
// //E-field dump xy
// Edump = new CSPropDumpBox(CSX.GetParameterSet());
// Edump->SetDumpType(0);
// Edump->SetName("Et_xy_");
// CSX.AddProperty(Edump);
// box = new CSPrimBox(CSX.GetParameterSet(),Edump);
// box->SetCoord(0,width/-2.0);box->SetCoord(1,width/2.0);
// box->SetCoord(2,0.0);box->SetCoord(3,height);
// box->SetCoord(4,0.0);box->SetCoord(5,0.0);
// CSX.AddPrimitive(box);
//E-field dump 3D
Edump = new CSPropDumpBox(CSX.GetParameterSet());
Edump->SetDumpType(0);
Edump->SetDumpMode(2); //cell interpolated dump
Edump->SetName("Et_");
CSX.AddProperty(Edump);
box = new CSPrimBox(CSX.GetParameterSet(),Edump);
box->SetCoord(0,MSL_width*-1.5);box->SetCoord(1,MSL_width*1.5);
box->SetCoord(2,0.0);box->SetCoord(3,MSL_height*1.5);
box->SetCoord(4,length/-2.0);box->SetCoord(5,length/2.0);
CSX.AddPrimitive(box);
//voltage calc
CSPropProbeBox* volt = new CSPropProbeBox(CSX.GetParameterSet());
volt->SetProbeType(0);
volt->SetName("u1");
CSX.AddProperty(volt);
box = new CSPrimBox(CSX.GetParameterSet(),volt);
box->SetCoord(0,0.0);box->SetCoord(1,0.0);
box->SetCoord(2,MSL_height);box->SetCoord(3,0.0);
box->SetCoord(4,0.0);box->SetCoord(5,0.0);
CSX.AddPrimitive(box);
//current calc
CSPropProbeBox* curr = new CSPropProbeBox(CSX.GetParameterSet());
curr->SetProbeType(1);
curr->SetName("i1");
CSX.AddProperty(curr);
box = new CSPrimBox(CSX.GetParameterSet(),curr);
box->SetCoord(0,MSL_width*-1.5);box->SetCoord(1,MSL_width*1.5);
box->SetCoord(2,MSL_height/2.0);box->SetCoord(3,MSL_height*1.5);
box->SetCoord(4,0.0);box->SetCoord(5,0.0);
CSX.AddPrimitive(box);
CSRectGrid* grid = CSX.GetGrid();
for (double n=width/-2.0;n<=width/2;n+=delta[0])
grid->AddDiscLine(0,n);
for (double n=0;n<=height;n+=delta[1])
grid->AddDiscLine(1,n);
for (double n=length/-2.0;n<=length/2.0;n+=delta[2])
grid->AddDiscLine(2,n);
grid->SetDeltaUnit(1e-3);
//*************** Create XML file **********************
TiXmlDocument doc(filename);
doc.InsertEndChild(TiXmlDeclaration("1.0","ISO-8859-1","yes"));
TiXmlElement openEMS("openEMS");
TiXmlElement FDTD_Opts("FDTD");
FDTD_Opts.SetAttribute("NumberOfTimesteps",maxIter);
TiXmlElement Excite("Excitation");
Excite.SetAttribute("Type",Excit_Type);
Excite.SetAttribute("f0",f0);
Excite.SetAttribute("fc",fc);
FDTD_Opts.InsertEndChild(Excite);
TiXmlElement BC("BoundaryCond");
BC.SetAttribute("xmin",bounds[0]);
BC.SetAttribute("xmax",bounds[1]);
BC.SetAttribute("ymin",bounds[2]);
BC.SetAttribute("ymax",bounds[3]);
BC.SetAttribute("zmin",bounds[4]);
BC.SetAttribute("zmax",bounds[5]);
FDTD_Opts.InsertEndChild(BC);
openEMS.InsertEndChild(FDTD_Opts);
if (CSX.Write2XML(&openEMS,true,true)==false)
{
cerr << "writing failed" << endl;
exit(-1);
}
doc.InsertEndChild(openEMS);
doc.SaveFile();
}
void BuildCoaxial_Cartesian(const char* filename)
{
int maxIter = 1000;
double f0=1e9;
double fc=1e9;
int Excit_Type=0;
int bounds[] = {0,0,0,0,0,0};
cerr << "Create Geometry..." << endl;
ContinuousStructure CSX;
double rad[] = {100, 230};
double length[] = {-500,1500};
double abs_l = 200;
double delta[] = {5,5,10};
CSPrimBox* box = NULL;
//fake pml....
CSPropMaterial* mat = new CSPropMaterial(CSX.GetParameterSet());
// mat->SetEpsilon(3.6);
double finalKappa = 0.3/pow(abs_l,4);
mat->SetKappa(finalKappa);
std::ostringstream fct;
fct << "pow(abs(z)-" << length[1]-abs_l << ",4)";
mat->SetKappaWeightFunction(fct.str(),0);
mat->SetKappaWeightFunction(fct.str(),1);
mat->SetKappaWeightFunction(fct.str(),2);
mat->SetSigma(finalKappa*__MUE0__/__EPS0__);
mat->SetSigmaWeightFunction(fct.str(),0);
mat->SetSigmaWeightFunction(fct.str(),1);
mat->SetSigmaWeightFunction(fct.str(),2);
CSX.AddProperty(mat);
box = new CSPrimBox(CSX.GetParameterSet(),mat);
box->SetCoord(0,-1.0*rad[1]);box->SetCoord(1,1.0*rad[1]);
box->SetCoord(2,-1.0*rad[1]);box->SetCoord(3,1.0*rad[1]);
box->SetCoord(4,length[1]-abs_l); box->SetCoord(5,length[1]);
box->SetPriority(10);
CSX.AddPrimitive(box);
CSPropElectrode* elec = new CSPropElectrode(CSX.GetParameterSet());
elec->SetExcitation(1.0,0);
elec->SetExcitation(1.0,1);
elec->SetWeightFunction("x/pow(rho,2)",0);
elec->SetWeightFunction("y/pow(rho,2)",1);
elec->SetExcitType(0);
// elec->SetActiveDir(0,0);//disable x
// elec->SetActiveDir(0,2);//disable z
// elec->SetDelay(2.0e-9);
CSX.AddProperty(elec);
// double coords[] = {-100,-100,0};
// cerr << elec->GetWeightedExcitation(0,coords) << endl;
// cerr << elec->GetWeightedExcitation(1,coords) << endl;
// exit(0);
box = new CSPrimBox(CSX.GetParameterSet(),elec);
box->SetCoord(0,-1.0*rad[1]);box->SetCoord(1,1.0*rad[1]);
box->SetCoord(2,-1.0*rad[1]);box->SetCoord(3,1.0*rad[1]);
box->SetCoord(4,length[0]);box->SetCoord(5,length[0]);
box->SetPriority(5);
CSX.AddPrimitive(box);
//E-field dump
CSPropDumpBox* Edump = new CSPropDumpBox(CSX.GetParameterSet());
Edump->SetDumpType(0);
Edump->SetDumpMode(0);
Edump->SetName("Et_");
CSX.AddProperty(Edump);
box = new CSPrimBox(CSX.GetParameterSet(),Edump);
box->SetCoord(0,-1*rad[1]);box->SetCoord(1,rad[1]);
box->SetCoord(2,-0*rad[1]);box->SetCoord(3,0*rad[1]);
box->SetCoord(4,length[0]);box->SetCoord(5,length[1]);
CSX.AddPrimitive(box);
//voltage calc
CSPropProbeBox* volt = new CSPropProbeBox(CSX.GetParameterSet());
volt->SetProbeType(0);
volt->SetName("u1");
CSX.AddProperty(volt);
box = new CSPrimBox(CSX.GetParameterSet(),volt);
box->SetCoord(0,rad[0]);box->SetCoord(1,rad[1]);
box->SetCoord(2,0.0);box->SetCoord(3,0.0);
box->SetCoord(4,0.0);box->SetCoord(5,0.0);
CSX.AddPrimitive(box);
//current calc
CSPropProbeBox* curr = new CSPropProbeBox(CSX.GetParameterSet());
curr->SetProbeType(1);
curr->SetName("i1");
CSX.AddProperty(curr);
box = new CSPrimBox(CSX.GetParameterSet(),curr);
box->SetCoord(0,-1.5*rad[0]);box->SetCoord(1,1.5*rad[0]);
box->SetCoord(2,-1.5*rad[0]);box->SetCoord(3,1.5*rad[0]);
box->SetCoord(4,0.0);box->SetCoord(5,0.0);
CSX.AddPrimitive(box);
CSPropMaterial* metal = new CSPropMaterial(CSX.GetParameterSet());
metal->SetKappa(56e9);
// CSPropMetal* metal = new CSPropMetal(CSX.GetParameterSet());
CSX.AddProperty(metal);
CSPrimCylinder* cyl = new CSPrimCylinder(CSX.GetParameterSet(),metal);
cyl->SetRadius(rad[0]);
cyl->SetCoord(0,0.0);cyl->SetCoord(1,0.0);
cyl->SetCoord(2,0.0);cyl->SetCoord(3,0.0);
cyl->SetCoord(4,length[0]);cyl->SetCoord(5,length[1]);
cyl->SetPriority(100);
CSX.AddPrimitive(cyl);
box = new CSPrimBox(CSX.GetParameterSet(),metal);
box->SetCoord(0,-1.0*rad[1]);box->SetCoord(1,1.0*rad[1]);
box->SetCoord(2,-1.0*rad[1]);box->SetCoord(3,1.0*rad[1]);
box->SetCoord(4,length[0]);box->SetCoord(5,length[1]);
box->SetPriority(1);
CSX.AddPrimitive(box);
CSPropMaterial* air = new CSPropMaterial(CSX.GetParameterSet());
CSX.AddProperty(air);
cyl = new CSPrimCylinder(CSX.GetParameterSet(),air);
cyl->SetRadius(rad[1]);
cyl->SetCoord(0,0.0);cyl->SetCoord(1,0.0);
cyl->SetCoord(2,0.0);cyl->SetCoord(3,0.0);
cyl->SetCoord(4,length[0]);cyl->SetCoord(5,length[1]);
cyl->SetPriority(9);
CSX.AddPrimitive(cyl);
CSRectGrid* grid = CSX.GetGrid();
for (int n=-1.0*rad[1];n<=rad[1];n+=delta[0])
grid->AddDiscLine(0,(double)n);
for (int n=-1.0*rad[1];n<=rad[1];n+=delta[1])
grid->AddDiscLine(1,(double)n);
for (int n=length[0];n<=length[1];n+=delta[2])
grid->AddDiscLine(2,(double)n);
grid->SetDeltaUnit(1e-3);
//*************** Create XML file **********************
TiXmlDocument doc(filename);
doc.InsertEndChild(TiXmlDeclaration("1.0","ISO-8859-1","yes"));
TiXmlElement openEMS("openEMS");
TiXmlElement FDTD_Opts("FDTD");
FDTD_Opts.SetAttribute("NumberOfTimesteps",maxIter);
TiXmlElement Excite("Excitation");
Excite.SetAttribute("Type",Excit_Type);
Excite.SetAttribute("f0",f0);
Excite.SetAttribute("fc",fc);
FDTD_Opts.InsertEndChild(Excite);
TiXmlElement BC("BoundaryCond");
BC.SetAttribute("xmin",bounds[0]);
BC.SetAttribute("xmax",bounds[1]);
BC.SetAttribute("ymin",bounds[2]);
BC.SetAttribute("ymax",bounds[3]);
BC.SetAttribute("zmin",bounds[4]);
BC.SetAttribute("zmax",bounds[5]);
FDTD_Opts.InsertEndChild(BC);
openEMS.InsertEndChild(FDTD_Opts);
if (CSX.Write2XML(&openEMS,true,true)==false)
{
cerr << "writing failed" << endl;
exit(-1);
}
doc.InsertEndChild(openEMS);
doc.SaveFile();
}
void BuildHelix(const char* filename)
{
int maxIter = 5e5;
double f0=0.5e9;
double fc=0.5e9;
int Excit_Type=0;
int bounds[] = {1,1,1,1,1,1};
cerr << "Create Helix Geometry..." << endl;
ContinuousStructure CSX;
double feed_length=10;
double wire_rad = sqrt(1.4/PI);
double coil_rad = 10;
double coil_length = 50;
int coil_turns = 8;
int coil_res = 10;
double delta[] = {0.5,0.5,0.5};
CSPrimBox* box = NULL;
ParameterSet* PS = CSX.GetParameterSet();
PS->AddParameter(new Parameter("rad_coil",coil_rad));
PS->AddParameter(new Parameter("rad_wire",wire_rad));
PS->AddParameter(new Parameter("turns",coil_turns));
PS->AddParameter(new Parameter("coil_length",coil_length));
CSPropMaterial* copper = new CSPropMaterial(CSX.GetParameterSet());
copper->SetKappa(56e6);
copper->SetName("copper");
CSX.AddProperty(copper);
// CSPropMetal* pec = new CSPropMetal(CSX.GetParameterSet());
// CSX.AddProperty(pec);
// CSPrimCurve* curve = new CSPrimCurve(CSX.GetParameterSet(),pec);
CSPrimWire* curve = new CSPrimWire(CSX.GetParameterSet(),copper);
curve->SetWireRadius("rad_wire");
double p[3];
double dt = 1.0/coil_res;
double height=0;
for (int n=0;n<coil_turns;++n)
{
for (int m=0;m<=coil_res;++m)
{
p[0] = coil_rad * cos(2*PI*dt*m);
p[1] = coil_rad * sin(2*PI*dt*m);
p[2] = height + coil_length/(double)coil_turns * dt*m;
// cerr << p[0] << " " << p[1] << " " << p[2] << " " << endl;
curve->AddPoint(p);
}
height += coil_length/(double)coil_turns;
}
// exit(0);
CSX.AddPrimitive(curve);
// CSPrimUserDefined* helix = new CSPrimUserDefined(CSX.GetParameterSet(),copper);
// helix->SetCoordSystem(CSPrimUserDefined::CYLINDER_SYSTEM);
// helix->SetFunction("(r>(rad_coil-rad_wire))&(r<rad_coil+rad_wire)&(sqrt(pow(x-r*cos(2*pi*z*turns/coil_length),2)+pow(y-r*sin(2*pi*z*turns/coil_length),2))<(2*rad_wire))&(z>0)&(z<coil_length)");
// CSX.AddPrimitive(helix);
box = new CSPrimBox(CSX.GetParameterSet(),copper);
box->SetCoord(0,coil_rad); box->SetCoord(1,coil_rad+feed_length);
box->SetCoord(2,-0.5); box->SetCoord(3,0.5);
box->SetCoord(4,-0.5); box->SetCoord(5,0.5);
CSX.AddPrimitive(box);
box = new CSPrimBox(CSX.GetParameterSet(),copper);
box->SetCoord(0,coil_rad); box->SetCoord(1,coil_rad+feed_length);
box->SetCoord(2,-0.5); box->SetCoord(3,0.5);
box->SetCoord(4,coil_length-0.5); box->SetCoord(5,coil_length+0.5);
CSX.AddPrimitive(box);
box = new CSPrimBox(CSX.GetParameterSet(),copper);
box->SetCoord(0,coil_rad+feed_length-0.5); box->SetCoord(1,coil_rad+feed_length+0.5);
box->SetCoord(2,-0.5); box->SetCoord(3,0.5);
box->SetCoord(4,0.0); box->SetCoord(5,coil_length);///2.0-delta[2]);
CSX.AddPrimitive(box);
double kappa_resist = (coil_length/3.0)/50/1e-3;
CSPropMaterial* Src_Resist = new CSPropMaterial(CSX.GetParameterSet());
Src_Resist->SetKappa(kappa_resist,2);
Src_Resist->SetIsotropy(false);
Src_Resist->SetName("resist");
CSX.AddProperty(Src_Resist);
box = new CSPrimBox(CSX.GetParameterSet(),Src_Resist);
box->SetPriority(100);
box->SetCoord(0,coil_rad+feed_length-0.5); box->SetCoord(1,coil_rad+feed_length+0.5);
box->SetCoord(2,-0.5); box->SetCoord(3,0.5);
box->SetCoord(4,coil_length/3.0); box->SetCoord(5,coil_length/3.0*2.0);///2.0-delta[2]);
CSX.AddPrimitive(box);
// box = new CSPrimBox(CSX.GetParameterSet(),Src_Resist);
// box->SetCoord(0,coil_rad+feed_length-0.5); box->SetCoord(1,coil_rad+feed_length+0.5);
// box->SetCoord(2,-0.5); box->SetCoord(3,0.5);
// box->SetCoord(4,coil_length/2.0+delta[2]); box->SetCoord(5,coil_length);
// CSX.AddPrimitive(box);
CSPropElectrode* elec = new CSPropElectrode(CSX.GetParameterSet());
elec->SetExcitation(1.0,2);
elec->SetExcitType(0);
// elec->SetDelay(2.0e-9);
CSX.AddProperty(elec);
box = new CSPrimBox(CSX.GetParameterSet(),elec);
box->SetCoord(0,coil_rad+feed_length+0.5); box->SetCoord(1,coil_rad+feed_length-0.5);
box->SetCoord(2,-0.5); box->SetCoord(3,0.5);
box->SetCoord(4,coil_length/3.0); box->SetCoord(5,coil_length/3.0*2.0);///2.0-delta[2]);
CSX.AddPrimitive(box);
// CSPropMetal* elec_mat = new CSPropMetal(CSX.GetParameterSet());
// CSX.AddProperty(elec_mat);
// box = new CSPrimBox(CSX.GetParameterSet(),elec_mat);
// box->SetCoord(0,coil_rad+feed_length+0.5); box->SetCoord(1,coil_rad+feed_length-0.5);
// box->SetCoord(2,-0.5); box->SetCoord(3,0.5);
// box->SetCoord(4,coil_length/2.0-delta[2]); box->SetCoord(5,coil_length/2.0+delta[2]);
// CSX.AddPrimitive(box);
CSPropDumpBox* Edump = NULL;
//E-field dump xz
Edump = new CSPropDumpBox(CSX.GetParameterSet());
Edump->SetDumpType(0);
Edump->SetDumpMode(0);
Edump->SetName("Et_xz_");
CSX.AddProperty(Edump);
box = new CSPrimBox(CSX.GetParameterSet(),Edump);
box->SetCoord(0,coil_rad/-1.0-25.0);box->SetCoord(1,coil_rad/1.0+25.0+feed_length);
box->SetCoord(2,0.0);box->SetCoord(3,0.0);
box->SetCoord(4,-25.0);box->SetCoord(5,coil_length+25.0);
CSX.AddPrimitive(box);
CSPropDumpBox* Hdump = NULL;
//H-field dump xz
Hdump = new CSPropDumpBox(CSX.GetParameterSet());
Hdump->SetDumpType(1);
Hdump->SetDumpMode(0);
Hdump->SetName("Ht_xz_");
CSX.AddProperty(Hdump);
box = new CSPrimBox(CSX.GetParameterSet(),Hdump);
box->SetCoord(0,coil_rad/-1.0-25.0);box->SetCoord(1,coil_rad/1.0+25.0+feed_length);
box->SetCoord(2,0.0);box->SetCoord(3,0.0);
box->SetCoord(4,-25.0);box->SetCoord(5,coil_length+25.0);
CSX.AddPrimitive(box);
//
// //E-field dump xy
// Edump = new CSPropDumpBox(CSX.GetParameterSet());
// Edump->SetDumpType(0);
// Edump->SetName("Et_xy_");
// CSX.AddProperty(Edump);
// box = new CSPrimBox(CSX.GetParameterSet(),Edump);
// box->SetCoord(0,width/-2.0);box->SetCoord(1,width/2.0);
// box->SetCoord(2,0.0);box->SetCoord(3,height);
// box->SetCoord(4,0.0);box->SetCoord(5,0.0);
// CSX.AddPrimitive(box);
// //E-field dump 3D
// Edump = new CSPropDumpBox(CSX.GetParameterSet());
// Edump->SetDumpType(0);
// Edump->SetDumpMode(2); //cell interpolated dump
// Edump->SetName("Et_");
// CSX.AddProperty(Edump);
// box = new CSPrimBox(CSX.GetParameterSet(),Edump);
// box->SetCoord(0,MSL_width*-1.5);box->SetCoord(1,MSL_width*1.5);
// box->SetCoord(2,0.0);box->SetCoord(3,MSL_height*1.5);
// box->SetCoord(4,length/-2.0);box->SetCoord(5,length/2.0);
// CSX.AddPrimitive(box);
//
//voltage calc
CSPropProbeBox* volt = new CSPropProbeBox(CSX.GetParameterSet());
volt->SetProbeType(0);
volt->SetName("u1");
CSX.AddProperty(volt);
box = new CSPrimBox(CSX.GetParameterSet(),volt);
box->SetCoord(0,coil_rad+feed_length);box->SetCoord(1,coil_rad+feed_length);
box->SetCoord(2,0.0);box->SetCoord(3,0.0);
box->SetCoord(4,coil_length);box->SetCoord(5,0.0);
CSX.AddPrimitive(box);
//current calc
double curr_dist = 2;
CSPropProbeBox* curr = new CSPropProbeBox(CSX.GetParameterSet());
curr->SetProbeType(1);
curr->SetName("i1");
CSX.AddProperty(curr);
box = new CSPrimBox(CSX.GetParameterSet(),curr);
box->SetCoord(0,coil_rad+feed_length-curr_dist);box->SetCoord(1,coil_rad+feed_length+curr_dist);
box->SetCoord(2,-curr_dist);box->SetCoord(3,curr_dist);
box->SetCoord(4,coil_length/2.0);box->SetCoord(5,coil_length/2.0);
CSX.AddPrimitive(box);
CSRectGrid* grid = CSX.GetGrid();
double offset[]={coil_rad/-1.0,coil_rad/-1.0,0.0};
//graded mesh
for (int n=0;n<3;++n)
{
grid->AddDiscLine(n,offset[n] - 25.0);
grid->AddDiscLine(n,offset[n] - 15.0);
grid->AddDiscLine(n,offset[n] - 10.0);
grid->AddDiscLine(n,offset[n] - 5.0);
grid->AddDiscLine(n,offset[n] - 2.0);
grid->AddDiscLine(n,offset[n] - 1.0);
grid->AddDiscLine(n,offset[n] - 0.5);
}
for (double n=coil_rad/-1.0;n<=coil_rad;n+=delta[0])
grid->AddDiscLine(0,n);
//feeding mesh
grid->AddDiscLine(0,coil_rad+0.5);
grid->AddDiscLine(0,coil_rad+1);
grid->AddDiscLine(0,coil_rad+2);
grid->AddDiscLine(0,coil_rad+3.5);
grid->AddDiscLine(0,coil_rad+5);
grid->AddDiscLine(0,coil_rad+7);
grid->AddDiscLine(0,coil_rad+8);
grid->AddDiscLine(0,coil_rad+9);
grid->AddDiscLine(0,coil_rad+9.5);
grid->AddDiscLine(0,coil_rad+10);
for (double n=coil_rad/-1.0;n<=coil_rad;n+=delta[1])
grid->AddDiscLine(1,n);
for (double n=0.0;n<=coil_length;n+=delta[2])
grid->AddDiscLine(2,n);
offset[0]=coil_rad+feed_length;
offset[1]=coil_rad;
offset[2]=coil_length;
for (int n=0;n<3;++n)
{
grid->AddDiscLine(n,offset[n] + 0.5);
grid->AddDiscLine(n,offset[n] + 1.0);
grid->AddDiscLine(n,offset[n] + 2.0);
grid->AddDiscLine(n,offset[n] + 3.0);
grid->AddDiscLine(n,offset[n] + 5.0);
grid->AddDiscLine(n,offset[n] + 7.5);
grid->AddDiscLine(n,offset[n] + 10.0);
grid->AddDiscLine(n,offset[n] + 15.0);
grid->AddDiscLine(n,offset[n] + 25.0);
grid->Sort(n);
}
grid->SetDeltaUnit(1e-3);
//*************** Create XML file **********************
TiXmlDocument doc(filename);
doc.InsertEndChild(TiXmlDeclaration("1.0","ISO-8859-1","yes"));
TiXmlElement openEMS("openEMS");
TiXmlElement FDTD_Opts("FDTD");
FDTD_Opts.SetAttribute("NumberOfTimesteps",maxIter);
FDTD_Opts.SetDoubleAttribute("endCriteria",1e-8);
TiXmlElement Excite("Excitation");
Excite.SetAttribute("Type",Excit_Type);
Excite.SetAttribute("f0",f0);
Excite.SetAttribute("fc",fc);
FDTD_Opts.InsertEndChild(Excite);
TiXmlElement BC("BoundaryCond");
BC.SetAttribute("xmin",bounds[0]);
BC.SetAttribute("xmax",bounds[1]);
BC.SetAttribute("ymin",bounds[2]);
BC.SetAttribute("ymax",bounds[3]);
BC.SetAttribute("zmin",bounds[4]);
BC.SetAttribute("zmax",bounds[5]);
FDTD_Opts.InsertEndChild(BC);
openEMS.InsertEndChild(FDTD_Opts);
if (CSX.Write2XML(&openEMS,true,true)==false)
{
cerr << "writing failed" << endl;
exit(-1);
}
doc.InsertEndChild(openEMS);
doc.SaveFile();
}

View File

@ -1,34 +0,0 @@
/*
* Copyright (C) 2010 Thorsten Liebig (Thorsten.Liebig@gmx.de)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef FDTD_EXAMPLES_H
#define FDTD_EXAMPLES_H
#include "ContinuousStructure.h"
#include "tinyxml.h"
void BuildDipol(const char* filename);
void BuildPlaneWave(const char* filename);
void BuildMSL(const char* filename);
void BuildCoaxial_Cartesian(const char* filename);
void BuildHelix(const char* filename);
#endif // FDTD_EXAMPLES_H

View File

@ -1,190 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes" ?>
<openEMS>
<FDTD NumberOfTimesteps="500000" endCriteria="0.000000">
<Excitation Type="0" f0="500000000" fc="500000000" />
<BoundaryCond xmin="1" xmax="1" ymin="1" ymax="1" zmin="1" zmax="1" />
</FDTD>
<ContinuousStructure>
<RectilinearGrid DeltaUnit="0.001000">
<XLines Qty="67">-35,-25,-20,-15,-12,-11,-10.5,-10,-9.5,-9,-8.5,-8,-7.5,-7,-6.5,-6,-5.5,-5,-4.5,-4,-3.5,-3,-2.5,-2,-1.5,-1,-0.5,0,0.5,1,1.5,2,2.5,3,3.5,4,4.5,5,5.5,6,6.5,7,7.5,8,8.5,9,9.5,10,10.5,11,12,13.5,15,17,18,19,19.5,20,20.5,21,22,23,25,27.5,30,35,45</XLines>
<YLines Qty="57">-35,-25,-20,-15,-12,-11,-10.5,-10,-9.5,-9,-8.5,-8,-7.5,-7,-6.5,-6,-5.5,-5,-4.5,-4,-3.5,-3,-2.5,-2,-1.5,-1,-0.5,0,0.5,1,1.5,2,2.5,3,3.5,4,4.5,5,5.5,6,6.5,7,7.5,8,8.5,9,9.5,10,10.5,11,12,13,15,17.5,20,25,35</YLines>
<ZLines Qty="117">-25,-15,-10,-5,-2,-1,-0.5,0,0.5,1,1.5,2,2.5,3,3.5,4,4.5,5,5.5,6,6.5,7,7.5,8,8.5,9,9.5,10,10.5,11,11.5,12,12.5,13,13.5,14,14.5,15,15.5,16,16.5,17,17.5,18,18.5,19,19.5,20,20.5,21,21.5,22,22.5,23,23.5,24,24.5,25,25.5,26,26.5,27,27.5,28,28.5,29,29.5,30,30.5,31,31.5,32,32.5,33,33.5,34,34.5,35,35.5,36,36.5,37,37.5,38,38.5,39,39.5,40,40.5,41,41.5,42,42.5,43,43.5,44,44.5,45,45.5,46,46.5,47,47.5,48,48.5,49,49.5,50,50.5,51,52,53,55,57.5,60,65,75</ZLines>
</RectilinearGrid>
<ParameterSet>
<Parameter Type="Const" name="rad_coil" Sweep="1" value="10.000000" />
<Parameter Type="Const" name="rad_wire" Sweep="1" value="0.667558" />
<Parameter Type="Const" name="turns" Sweep="1" value="8.000000" />
<Parameter Type="Const" name="coil_length" Sweep="1" value="50.000000" />
</ParameterSet>
<Properties>
<Material Isotropy="1" ID="0" Name="copper">
<Property Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="5.600000e+07" Sigma="0.000000e+00" />
<PropertyY Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="0.000000e+00" Sigma="0.000000e+00" />
<PropertyZ Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="0.000000e+00" Sigma="0.000000e+00" />
<WeightX Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="1.000000e+00" Sigma="1.000000e+00" />
<WeightY Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="1.000000e+00" Sigma="1.000000e+00" />
<WeightZ Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="1.000000e+00" Sigma="1.000000e+00" />
<Primitives>
<Wire ID="0" Priority="0" WireRadius="term:rad_wire">
<Vertex X="1.000000e+01" Y="0.000000e+00" Z="0.000000e+00" />
<Vertex X="8.090170e+00" Y="5.877853e+00" Z="6.250000e-01" />
<Vertex X="3.090170e+00" Y="9.510565e+00" Z="1.250000e+00" />
<Vertex X="-3.090170e+00" Y="9.510565e+00" Z="1.875000e+00" />
<Vertex X="-8.090170e+00" Y="5.877853e+00" Z="2.500000e+00" />
<Vertex X="-1.000000e+01" Y="1.224606e-15" Z="3.125000e+00" />
<Vertex X="-8.090170e+00" Y="-5.877853e+00" Z="3.750000e+00" />
<Vertex X="-3.090170e+00" Y="-9.510565e+00" Z="4.375000e+00" />
<Vertex X="3.090170e+00" Y="-9.510565e+00" Z="5.000000e+00" />
<Vertex X="8.090170e+00" Y="-5.877853e+00" Z="5.625000e+00" />
<Vertex X="1.000000e+01" Y="-2.449213e-15" Z="6.250000e+00" />
<Vertex X="1.000000e+01" Y="0.000000e+00" Z="6.250000e+00" />
<Vertex X="8.090170e+00" Y="5.877853e+00" Z="6.875000e+00" />
<Vertex X="3.090170e+00" Y="9.510565e+00" Z="7.500000e+00" />
<Vertex X="-3.090170e+00" Y="9.510565e+00" Z="8.125000e+00" />
<Vertex X="-8.090170e+00" Y="5.877853e+00" Z="8.750000e+00" />
<Vertex X="-1.000000e+01" Y="1.224606e-15" Z="9.375000e+00" />
<Vertex X="-8.090170e+00" Y="-5.877853e+00" Z="1.000000e+01" />
<Vertex X="-3.090170e+00" Y="-9.510565e+00" Z="1.062500e+01" />
<Vertex X="3.090170e+00" Y="-9.510565e+00" Z="1.125000e+01" />
<Vertex X="8.090170e+00" Y="-5.877853e+00" Z="1.187500e+01" />
<Vertex X="1.000000e+01" Y="-2.449213e-15" Z="1.250000e+01" />
<Vertex X="1.000000e+01" Y="0.000000e+00" Z="1.250000e+01" />
<Vertex X="8.090170e+00" Y="5.877853e+00" Z="1.312500e+01" />
<Vertex X="3.090170e+00" Y="9.510565e+00" Z="1.375000e+01" />
<Vertex X="-3.090170e+00" Y="9.510565e+00" Z="1.437500e+01" />
<Vertex X="-8.090170e+00" Y="5.877853e+00" Z="1.500000e+01" />
<Vertex X="-1.000000e+01" Y="1.224606e-15" Z="1.562500e+01" />
<Vertex X="-8.090170e+00" Y="-5.877853e+00" Z="1.625000e+01" />
<Vertex X="-3.090170e+00" Y="-9.510565e+00" Z="1.687500e+01" />
<Vertex X="3.090170e+00" Y="-9.510565e+00" Z="1.750000e+01" />
<Vertex X="8.090170e+00" Y="-5.877853e+00" Z="1.812500e+01" />
<Vertex X="1.000000e+01" Y="-2.449213e-15" Z="1.875000e+01" />
<Vertex X="1.000000e+01" Y="0.000000e+00" Z="1.875000e+01" />
<Vertex X="8.090170e+00" Y="5.877853e+00" Z="1.937500e+01" />
<Vertex X="3.090170e+00" Y="9.510565e+00" Z="2.000000e+01" />
<Vertex X="-3.090170e+00" Y="9.510565e+00" Z="2.062500e+01" />
<Vertex X="-8.090170e+00" Y="5.877853e+00" Z="2.125000e+01" />
<Vertex X="-1.000000e+01" Y="1.224606e-15" Z="2.187500e+01" />
<Vertex X="-8.090170e+00" Y="-5.877853e+00" Z="2.250000e+01" />
<Vertex X="-3.090170e+00" Y="-9.510565e+00" Z="2.312500e+01" />
<Vertex X="3.090170e+00" Y="-9.510565e+00" Z="2.375000e+01" />
<Vertex X="8.090170e+00" Y="-5.877853e+00" Z="2.437500e+01" />
<Vertex X="1.000000e+01" Y="-2.449213e-15" Z="2.500000e+01" />
<Vertex X="1.000000e+01" Y="0.000000e+00" Z="2.500000e+01" />
<Vertex X="8.090170e+00" Y="5.877853e+00" Z="2.562500e+01" />
<Vertex X="3.090170e+00" Y="9.510565e+00" Z="2.625000e+01" />
<Vertex X="-3.090170e+00" Y="9.510565e+00" Z="2.687500e+01" />
<Vertex X="-8.090170e+00" Y="5.877853e+00" Z="2.750000e+01" />
<Vertex X="-1.000000e+01" Y="1.224606e-15" Z="2.812500e+01" />
<Vertex X="-8.090170e+00" Y="-5.877853e+00" Z="2.875000e+01" />
<Vertex X="-3.090170e+00" Y="-9.510565e+00" Z="2.937500e+01" />
<Vertex X="3.090170e+00" Y="-9.510565e+00" Z="3.000000e+01" />
<Vertex X="8.090170e+00" Y="-5.877853e+00" Z="3.062500e+01" />
<Vertex X="1.000000e+01" Y="-2.449213e-15" Z="3.125000e+01" />
<Vertex X="1.000000e+01" Y="0.000000e+00" Z="3.125000e+01" />
<Vertex X="8.090170e+00" Y="5.877853e+00" Z="3.187500e+01" />
<Vertex X="3.090170e+00" Y="9.510565e+00" Z="3.250000e+01" />
<Vertex X="-3.090170e+00" Y="9.510565e+00" Z="3.312500e+01" />
<Vertex X="-8.090170e+00" Y="5.877853e+00" Z="3.375000e+01" />
<Vertex X="-1.000000e+01" Y="1.224606e-15" Z="3.437500e+01" />
<Vertex X="-8.090170e+00" Y="-5.877853e+00" Z="3.500000e+01" />
<Vertex X="-3.090170e+00" Y="-9.510565e+00" Z="3.562500e+01" />
<Vertex X="3.090170e+00" Y="-9.510565e+00" Z="3.625000e+01" />
<Vertex X="8.090170e+00" Y="-5.877853e+00" Z="3.687500e+01" />
<Vertex X="1.000000e+01" Y="-2.449213e-15" Z="3.750000e+01" />
<Vertex X="1.000000e+01" Y="0.000000e+00" Z="3.750000e+01" />
<Vertex X="8.090170e+00" Y="5.877853e+00" Z="3.812500e+01" />
<Vertex X="3.090170e+00" Y="9.510565e+00" Z="3.875000e+01" />
<Vertex X="-3.090170e+00" Y="9.510565e+00" Z="3.937500e+01" />
<Vertex X="-8.090170e+00" Y="5.877853e+00" Z="4.000000e+01" />
<Vertex X="-1.000000e+01" Y="1.224606e-15" Z="4.062500e+01" />
<Vertex X="-8.090170e+00" Y="-5.877853e+00" Z="4.125000e+01" />
<Vertex X="-3.090170e+00" Y="-9.510565e+00" Z="4.187500e+01" />
<Vertex X="3.090170e+00" Y="-9.510565e+00" Z="4.250000e+01" />
<Vertex X="8.090170e+00" Y="-5.877853e+00" Z="4.312500e+01" />
<Vertex X="1.000000e+01" Y="-2.449213e-15" Z="4.375000e+01" />
<Vertex X="1.000000e+01" Y="0.000000e+00" Z="4.375000e+01" />
<Vertex X="8.090170e+00" Y="5.877853e+00" Z="4.437500e+01" />
<Vertex X="3.090170e+00" Y="9.510565e+00" Z="4.500000e+01" />
<Vertex X="-3.090170e+00" Y="9.510565e+00" Z="4.562500e+01" />
<Vertex X="-8.090170e+00" Y="5.877853e+00" Z="4.625000e+01" />
<Vertex X="-1.000000e+01" Y="1.224606e-15" Z="4.687500e+01" />
<Vertex X="-8.090170e+00" Y="-5.877853e+00" Z="4.750000e+01" />
<Vertex X="-3.090170e+00" Y="-9.510565e+00" Z="4.812500e+01" />
<Vertex X="3.090170e+00" Y="-9.510565e+00" Z="4.875000e+01" />
<Vertex X="8.090170e+00" Y="-5.877853e+00" Z="4.937500e+01" />
<Vertex X="1.000000e+01" Y="-2.449213e-15" Z="5.000000e+01" />
</Wire>
<Box ID="1" Priority="0">
<P1 X="1.000000e+01" Y="-5.000000e-01" Z="-5.000000e-01" />
<P2 X="2.000000e+01" Y="5.000000e-01" Z="5.000000e-01" />
</Box>
<Box ID="2" Priority="0">
<P1 X="1.000000e+01" Y="-5.000000e-01" Z="4.950000e+01" />
<P2 X="2.000000e+01" Y="5.000000e-01" Z="5.050000e+01" />
</Box>
<Box ID="3" Priority="0">
<P1 X="1.950000e+01" Y="-5.000000e-01" Z="0.000000e+00" />
<P2 X="2.050000e+01" Y="5.000000e-01" Z="5.000000e+01" />
</Box>
</Primitives>
</Material>
<Material Isotropy="0" ID="1" Name="resist">
<Property Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="0.000000e+00" Sigma="0.000000e+00" />
<PropertyY Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="0.000000e+00" Sigma="0.000000e+00" />
<PropertyZ Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="3.333333e+02" Sigma="0.000000e+00" />
<WeightX Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="1.000000e+00" Sigma="1.000000e+00" />
<WeightY Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="1.000000e+00" Sigma="1.000000e+00" />
<WeightZ Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="1.000000e+00" Sigma="1.000000e+00" />
<Primitives>
<Box ID="4" Priority="100">
<P1 X="1.950000e+01" Y="-5.000000e-01" Z="1.666667e+01" />
<P2 X="2.050000e+01" Y="5.000000e-01" Z="3.333333e+01" />
</Box>
</Primitives>
</Material>
<Electrode Number="0" Delay="0.000000e+00" ID="2" Name="">
<Excitation Type="0" Excit_X="0.000000e+00" Excit_Y="0.000000e+00" Excit_Z="1.000000e+00" />
<Weight X="1.000000e+00" Y="1.000000e+00" Z="1.000000e+00" />
<Primitives>
<Box ID="5" Priority="0">
<P1 X="2.050000e+01" Y="-5.000000e-01" Z="1.666667e+01" />
<P2 X="1.950000e+01" Y="5.000000e-01" Z="3.333333e+01" />
</Box>
</Primitives>
</Electrode>
<DumpBox DumpType="0" DumpMode="0" ID="3" Name="Et_xz_">
<Primitives>
<Box ID="6" Priority="0">
<P1 X="-3.500000e+01" Y="0.000000e+00" Z="-2.500000e+01" />
<P2 X="4.500000e+01" Y="0.000000e+00" Z="7.500000e+01" />
</Box>
</Primitives>
</DumpBox>
<DumpBox DumpType="1" DumpMode="0" ID="4" Name="Ht_xz_">
<Primitives>
<Box ID="7" Priority="0">
<P1 X="-3.500000e+01" Y="0.000000e+00" Z="-2.500000e+01" />
<P2 X="4.500000e+01" Y="0.000000e+00" Z="7.500000e+01" />
</Box>
</Primitives>
</DumpBox>
<ProbeBox Number="0" Type="0" ID="5" Name="u1">
<Primitives>
<Box ID="8" Priority="0">
<P1 X="2.000000e+01" Y="0.000000e+00" Z="5.000000e+01" />
<P2 X="2.000000e+01" Y="0.000000e+00" Z="0.000000e+00" />
</Box>
</Primitives>
</ProbeBox>
<ProbeBox Number="0" Type="1" ID="6" Name="i1">
<Primitives>
<Box ID="9" Priority="0">
<P1 X="1.800000e+01" Y="-2.000000e+00" Z="2.500000e+01" />
<P2 X="2.200000e+01" Y="2.000000e+00" Z="2.500000e+01" />
</Box>
</Primitives>
</ProbeBox>
</Properties>
</ContinuousStructure>
</openEMS>

View File

@ -1,79 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes" ?>
<openEMS>
<FDTD NumberOfTimesteps="10000">
<Excitation Type="0" f0="500000000" fc="500000000" />
<BoundaryCond xmin="1" xmax="1" ymin="0" ymax="0" zmin="0" zmax="0" />
</FDTD>
<ContinuousStructure>
<RectilinearGrid DeltaUnit="0.001000">
<XLines Qty="51">-500,-480,-460,-440,-420,-400,-380,-360,-340,-320,-300,-280,-260,-240,-220,-200,-180,-160,-140,-120,-100,-80,-60,-40,-20,0,20,40,60,80,100,120,140,160,180,200,220,240,260,280,300,320,340,360,380,400,420,440,460,480,500</XLines>
<YLines Qty="51">0,10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180,190,200,210,220,230,240,250,260,270,280,290,300,310,320,330,340,350,360,370,380,390,400,410,420,430,440,450,460,470,480,490,500</YLines>
<ZLines Qty="101">-1000,-980,-960,-940,-920,-900,-880,-860,-840,-820,-800,-780,-760,-740,-720,-700,-680,-660,-640,-620,-600,-580,-560,-540,-520,-500,-480,-460,-440,-420,-400,-380,-360,-340,-320,-300,-280,-260,-240,-220,-200,-180,-160,-140,-120,-100,-80,-60,-40,-20,0,20,40,60,80,100,120,140,160,180,200,220,240,260,280,300,320,340,360,380,400,420,440,460,480,500,520,540,560,580,600,620,640,660,680,700,720,740,760,780,800,820,840,860,880,900,920,940,960,980,1000</ZLines>
</RectilinearGrid>
<ParameterSet />
<Properties>
<Material Isotropy="1" ID="0" Name="">
<Property Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="1.875000e-10" Sigma="2.661107e-05" />
<PropertyY Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="0.000000e+00" Sigma="0.000000e+00" />
<PropertyZ Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="0.000000e+00" Sigma="0.000000e+00" />
<WeightX Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="term:pow(abs(z)-800,4)" Sigma="term:pow(abs(z)-800,4)" />
<WeightY Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="term:pow(abs(z)-800,4)" Sigma="term:pow(abs(z)-800,4)" />
<WeightZ Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="term:pow(abs(z)-800,4)" Sigma="term:pow(abs(z)-800,4)" />
<Primitives>
<Box ID="0" Priority="0">
<P1 X="-5.000000e+02" Y="0.000000e+00" Z="8.000000e+02" />
<P2 X="5.000000e+02" Y="5.000000e+02" Z="1.000000e+03" />
</Box>
</Primitives>
</Material>
<Material Isotropy="1" ID="1" Name="">
<Property Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="5.600000e+07" Sigma="0.000000e+00" />
<PropertyY Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="0.000000e+00" Sigma="0.000000e+00" />
<PropertyZ Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="0.000000e+00" Sigma="0.000000e+00" />
<WeightX Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="1.000000e+00" Sigma="1.000000e+00" />
<WeightY Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="1.000000e+00" Sigma="1.000000e+00" />
<WeightZ Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="1.000000e+00" Sigma="1.000000e+00" />
<Primitives>
<Box ID="1" Priority="100">
<P1 X="-4.000000e+01" Y="5.000000e+01" Z="-1.000000e+03" />
<P2 X="4.000000e+01" Y="6.000000e+01" Z="1.000000e+03" />
</Box>
</Primitives>
</Material>
<Electrode Number="0" Delay="0.000000e+00" ID="2" Name="">
<Excitation Type="0" Excit_X="0.000000e+00" Excit_Y="-1.000000e+00" Excit_Z="0.000000e+00" />
<Weight X="1.000000e+00" Y="1.000000e+00" Z="1.000000e+00" />
<Primitives>
<Box ID="2" Priority="0">
<P1 X="-4.000000e+01" Y="0.000000e+00" Z="-1.000000e+03" />
<P2 X="4.000000e+01" Y="5.000000e+01" Z="-1.000000e+03" />
</Box>
</Primitives>
</Electrode>
<DumpBox DumpType="0" DumpMode="2" ID="3" Name="Et_">
<Primitives>
<Box ID="3" Priority="0">
<P1 X="-1.200000e+02" Y="0.000000e+00" Z="-1.000000e+03" />
<P2 X="1.200000e+02" Y="7.500000e+01" Z="1.000000e+03" />
</Box>
</Primitives>
</DumpBox>
<ProbeBox Number="0" Type="0" ID="4" Name="u1">
<Primitives>
<Box ID="4" Priority="0">
<P1 X="0.000000e+00" Y="5.000000e+01" Z="0.000000e+00" />
<P2 X="0.000000e+00" Y="0.000000e+00" Z="0.000000e+00" />
</Box>
</Primitives>
</ProbeBox>
<ProbeBox Number="0" Type="1" ID="5" Name="i1">
<Primitives>
<Box ID="5" Priority="0">
<P1 X="-1.200000e+02" Y="2.500000e+01" Z="0.000000e+00" />
<P2 X="1.200000e+02" Y="7.500000e+01" Z="0.000000e+00" />
</Box>
</Primitives>
</ProbeBox>
</Properties>
</ContinuousStructure>
</openEMS>

View File

@ -1,75 +0,0 @@
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes" ?>
<openEMS>
<FDTD NumberOfTimesteps="10000">
<Excitation Type="0" f0="500000000" fc="500000000" />
<BoundaryCond xmin="1" xmax="1" ymin="0" ymax="0" zmin="0" zmax="0" />
</FDTD>
<ContinuousStructure>
<RectilinearGrid DeltaUnit="0.001000">
<XLines Qty="51">-500,-480,-460,-440,-420,-400,-380,-360,-340,-320,-300,-280,-260,-240,-220,-200,-180,-160,-140,-120,-100,-80,-60,-40,-20,0,20,40,60,80,100,120,140,160,180,200,220,240,260,280,300,320,340,360,380,400,420,440,460,480,500</XLines>
<YLines Qty="51">-500,-480,-460,-440,-420,-400,-380,-360,-340,-320,-300,-280,-260,-240,-220,-200,-180,-160,-140,-120,-100,-80,-60,-40,-20,0,20,40,60,80,100,120,140,160,180,200,220,240,260,280,300,320,340,360,380,400,420,440,460,480,500</YLines>
<ZLines Qty="201">-2000,-1980,-1960,-1940,-1920,-1900,-1880,-1860,-1840,-1820,-1800,-1780,-1760,-1740,-1720,-1700,-1680,-1660,-1640,-1620,-1600,-1580,-1560,-1540,-1520,-1500,-1480,-1460,-1440,-1420,-1400,-1380,-1360,-1340,-1320,-1300,-1280,-1260,-1240,-1220,-1200,-1180,-1160,-1140,-1120,-1100,-1080,-1060,-1040,-1020,-1000,-980,-960,-940,-920,-900,-880,-860,-840,-820,-800,-780,-760,-740,-720,-700,-680,-660,-640,-620,-600,-580,-560,-540,-520,-500,-480,-460,-440,-420,-400,-380,-360,-340,-320,-300,-280,-260,-240,-220,-200,-180,-160,-140,-120,-100,-80,-60,-40,-20,0,20,40,60,80,100,120,140,160,180,200,220,240,260,280,300,320,340,360,380,400,420,440,460,480,500,520,540,560,580,600,620,640,660,680,700,720,740,760,780,800,820,840,860,880,900,920,940,960,980,1000,1020,1040,1060,1080,1100,1120,1140,1160,1180,1200,1220,1240,1260,1280,1300,1320,1340,1360,1380,1400,1420,1440,1460,1480,1500,1520,1540,1560,1580,1600,1620,1640,1660,1680,1700,1720,1740,1760,1780,1800,1820,1840,1860,1880,1900,1920,1940,1960,1980,2000</ZLines>
</RectilinearGrid>
<ParameterSet />
<Properties>
<Material Isotropy="1" ID="0" Name="">
<Property Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="1.875000e-10" Sigma="2.661107e-05" />
<PropertyY Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="0.000000e+00" Sigma="0.000000e+00" />
<PropertyZ Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="0.000000e+00" Sigma="0.000000e+00" />
<WeightX Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="term:pow(abs(z)-1800,4)" Sigma="term:pow(abs(z)-1800,4)" />
<WeightY Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="term:pow(abs(z)-1800,4)" Sigma="term:pow(abs(z)-1800,4)" />
<WeightZ Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="term:pow(abs(z)-1800,4)" Sigma="term:pow(abs(z)-1800,4)" />
<Primitives>
<Box ID="0" Priority="0">
<P1 X="-5.000000e+02" Y="-5.000000e+02" Z="1.800000e+03" />
<P2 X="5.000000e+02" Y="5.000000e+02" Z="2.000000e+03" />
</Box>
<Box ID="1" Priority="0">
<P1 X="-5.000000e+02" Y="-5.000000e+02" Z="-1.800000e+03" />
<P2 X="5.000000e+02" Y="5.000000e+02" Z="-2.000000e+03" />
</Box>
</Primitives>
</Material>
<Material Isotropy="1" ID="1" Name="">
<Property Epsilon="2.000000e+00" Mue="1.000000e+00" Kappa="0.000000e+00" Sigma="0.000000e+00" />
<PropertyY Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="0.000000e+00" Sigma="0.000000e+00" />
<PropertyZ Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="0.000000e+00" Sigma="0.000000e+00" />
<WeightX Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="1.000000e+00" Sigma="1.000000e+00" />
<WeightY Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="1.000000e+00" Sigma="1.000000e+00" />
<WeightZ Epsilon="1.000000e+00" Mue="1.000000e+00" Kappa="1.000000e+00" Sigma="1.000000e+00" />
<Primitives>
<CylindricalShell ID="2" Priority="0" Radius="1.000000e+03" ShellWidth="2.000000e+02">
<P0 X="0.000000e+00" Y="-5.000000e+02" Z="0.000000e+00" />
<P1 X="0.000000e+00" Y="5.000000e+02" Z="0.000000e+00" />
</CylindricalShell>
</Primitives>
</Material>
<Electrode Number="0" Delay="0.000000e+00" ID="2" Name="">
<Excitation Type="0" Excit_X="0.000000e+00" Excit_Y="1.000000e+00" Excit_Z="0.000000e+00" />
<Weight X="1.000000e+00" Y="1.000000e+00" Z="1.000000e+00" />
<Primitives>
<Box ID="3" Priority="0">
<P1 X="-5.000000e+02" Y="-5.000000e+02" Z="0.000000e+00" />
<P2 X="5.000000e+02" Y="5.000000e+02" Z="0.000000e+00" />
</Box>
</Primitives>
</Electrode>
<DumpBox DumpType="0" DumpMode="0" ID="3" Name="Et_">
<Primitives>
<Box ID="4" Priority="0">
<P1 X="-3.333333e+02" Y="0.000000e+00" Z="-1.800000e+03" />
<P2 X="3.333333e+02" Y="0.000000e+00" Z="1.800000e+03" />
</Box>
</Primitives>
</DumpBox>
<DumpBox DumpType="1" DumpMode="0" ID="4" Name="Ht_">
<Primitives>
<Box ID="5" Priority="0">
<P1 X="-3.333333e+02" Y="0.000000e+00" Z="-1.800000e+03" />
<P2 X="3.333333e+02" Y="0.000000e+00" Z="1.800000e+03" />
</Box>
</Primitives>
</DumpBox>
</Properties>
</ContinuousStructure>
</openEMS>

View File

@ -15,16 +15,14 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <fstream>
#include <sstream>
#include "openems.h"
#include "examples/FDTD_examples.h"
#define STANDALONE
#ifndef GIT_VERSION
#define GIT_VERSION "unknown:compiled@" __DATE__
#endif
@ -35,7 +33,6 @@ int main(int argc, char *argv[])
{
openEMS FDTD;
#ifdef STANDALONE
if (argc<=1)
{
cout << " | openEMS version " GIT_VERSION << endl;
@ -53,32 +50,7 @@ int main(int argc, char *argv[])
}
}
char* file = argv[1];
#else
//*************** setup/read geometry ************//
const char* fileDP="../examples/Dipol.xml";
BuildDipol(fileDP);
const char* filePW="../examples/PlaneWave.xml";
BuildPlaneWave(filePW);
const char* fileMSL="../examples/MSL.xml";
BuildMSL(fileMSL);
const char* fileCoax="../examples/Coax_Cart.xml";
BuildCoaxial_Cartesian(fileCoax);
const char* fileHelix="../examples/Helix.xml";
BuildHelix(fileHelix);
const char* file=fileHelix;
FDTD.DebugMaterial();
// FDTD.DebugOperator();
#endif
int EC = FDTD.SetupFDTD(file);
int EC = FDTD.SetupFDTD(argv[1]);
if (EC) return EC;
FDTD.RunFDTD();

View File

@ -41,7 +41,6 @@ SOURCES += main.cpp \
FDTD/processfields.cpp \
FDTD/processfields_td.cpp \
FDTD/processcurrent.cpp \
examples/FDTD_examples.cpp \
openems.cpp \
FDTD/engine_multithread.cpp \
FDTD/operator_cylinder.cpp \
@ -64,7 +63,6 @@ HEADERS += tools/ErrorMsg.h \
FDTD/processfields.h \
FDTD/processfields_td.h \
FDTD/processcurrent.h \
examples/FDTD_examples.h \
openems.h \
FDTD/engine_multithread.h \
FDTD/operator_cylinder.h \