diff --git a/Analyse/PlotVoltage.m b/Analyse/PlotVoltage.m index 7422055..19989c1 100644 --- a/Analyse/PlotVoltage.m +++ b/Analyse/PlotVoltage.m @@ -2,6 +2,8 @@ clear all; clc +fmax = 50e6; + figure(1); tmpu = load('../tmp/u1'); tmpi = load('../tmp/i1'); @@ -58,11 +60,11 @@ grid on; figure(2); subplot(2,1,1); plot(f,real(fu./fi)); -xlim([0 1e9]); +xlim([0 fmax]); grid on; subplot(2,1,2); plot(f,imag(fu./fi)); -xlim([0 1e9]); +xlim([0 fmax]); grid on; diff --git a/examples/Coax_Cart.xml b/examples/Coax_Cart.xml index cd0032d..31f7b32 100644 --- a/examples/Coax_Cart.xml +++ b/examples/Coax_Cart.xml @@ -13,8 +13,8 @@ - - + + @@ -23,29 +23,29 @@ - - + + - - + + + + + + - + - - - - @@ -54,8 +54,8 @@ - - + + diff --git a/examples/FDTD_examples.cpp b/examples/FDTD_examples.cpp index 48d963e..d028fb4 100644 --- a/examples/FDTD_examples.cpp +++ b/examples/FDTD_examples.cpp @@ -103,7 +103,7 @@ void BuildDipol(const char* filename) void BuildPlaneWave(const char* filename) { - int maxIter = 1000; + int maxIter = 10000; double f0=0.5e9; double fc=0.5e9; int Excit_Type=0; @@ -614,6 +614,10 @@ void BuildHelix(const char* filename) double coil_length = 50; double delta[] = {0.5,0.5,0.5}; + CSPrimBox* box = NULL; + + ParameterSet* PS = CSX.GetParameterSet(); + CSPropMaterial* copper = new CSPropMaterial(CSX.GetParameterSet()); copper->SetKappa(56e6); copper->SetName("copper"); @@ -625,52 +629,58 @@ void BuildHelix(const char* filename) CSX.AddPrimitive(helix); CSPrimCylinder* cyl = new CSPrimCylinder(CSX.GetParameterSet(),copper); cyl->SetRadius(wire_rad); - cyl->SetCoord(0,coil_rad);cyl->SetCoord(1,coil_rad+feed_length); - cyl->SetCoord(2,0.0);cyl->SetCoord(3,0.0); - cyl->SetCoord(4,0.0);cyl->SetCoord(5,0.0); + cyl->SetCoord(0,coil_rad); cyl->SetCoord(1,coil_rad+feed_length); + cyl->SetCoord(2,0.0); cyl->SetCoord(3,0.0); + cyl->SetCoord(4,0.0); cyl->SetCoord(5,0.0); CSX.AddPrimitive(cyl); cyl = new CSPrimCylinder(CSX.GetParameterSet(),copper); cyl->SetRadius(wire_rad); - cyl->SetCoord(0,coil_rad);cyl->SetCoord(1,coil_rad+feed_length); - cyl->SetCoord(2,0.0);cyl->SetCoord(3,0.0); - cyl->SetCoord(4,coil_length);cyl->SetCoord(5,coil_length); + cyl->SetCoord(0,coil_rad); cyl->SetCoord(1,coil_rad+feed_length); + cyl->SetCoord(2,0.0); cyl->SetCoord(3,0.0); + cyl->SetCoord(4,coil_length); cyl->SetCoord(5,coil_length); CSX.AddPrimitive(cyl); - double kappa_resist = (coil_length-2.0*delta[2])/(PI*wire_rad*wire_rad)/50/1e-3; + double kappa_resist = (coil_length)/50/1e-3; CSPropMaterial* Src_Resist = new CSPropMaterial(CSX.GetParameterSet()); - Src_Resist->SetKappa(kappa_resist); + Src_Resist->SetKappa(kappa_resist,2); + Src_Resist->SetIsotropy(false); Src_Resist->SetName("resist"); CSX.AddProperty(Src_Resist); - cyl = new CSPrimCylinder(CSX.GetParameterSet(),Src_Resist); - cyl->SetRadius(wire_rad); - cyl->SetCoord(0,coil_rad+feed_length);cyl->SetCoord(1,coil_rad+feed_length); - cyl->SetCoord(2,0.0);cyl->SetCoord(3,0.0); - cyl->SetCoord(4,0.0);cyl->SetCoord(5,coil_length/2.0-delta[2]); - CSX.AddPrimitive(cyl); - cyl = new CSPrimCylinder(CSX.GetParameterSet(),Src_Resist); - cyl->SetRadius(wire_rad); - cyl->SetCoord(0,coil_rad+feed_length);cyl->SetCoord(1,coil_rad+feed_length); - cyl->SetCoord(2,0.0);cyl->SetCoord(3,0.0); - cyl->SetCoord(4,coil_length/2.0+delta[2]);cyl->SetCoord(5,coil_length); - CSX.AddPrimitive(cyl); + 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,0.0); box->SetCoord(5,coil_length);///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(1); + elec->SetExcitType(0); // elec->SetDelay(2.0e-9); CSX.AddProperty(elec); - cyl = new CSPrimCylinder(CSX.GetParameterSet(),elec); - cyl->SetRadius(wire_rad); - cyl->SetCoord(0,coil_rad+feed_length);cyl->SetCoord(1,coil_rad+feed_length); - cyl->SetCoord(2,0.0);cyl->SetCoord(3,0.0); - cyl->SetCoord(4,coil_length/2.0-delta[2]);cyl->SetCoord(5,coil_length/2.0+delta[2]); - CSX.AddPrimitive(cyl); + 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,0.0); box->SetCoord(5,coil_length); + 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; - CSPrimBox* box = 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); @@ -678,6 +688,20 @@ void BuildHelix(const char* filename) 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()); @@ -710,11 +734,11 @@ void BuildHelix(const char* filename) 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/2.0+delta[2]);box->SetCoord(5,coil_length/2.0-delta[2]); + box->SetCoord(4,coil_length);box->SetCoord(5,0.0); CSX.AddPrimitive(box); //current calc - double curr_dist = 2; + double curr_dist = 1; CSPropProbeBox* curr = new CSPropProbeBox(CSX.GetParameterSet()); curr->SetProbeType(1); curr->SetName("i1"); @@ -746,8 +770,10 @@ void BuildHelix(const char* filename) 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); @@ -764,7 +790,9 @@ void BuildHelix(const char* filename) 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); diff --git a/examples/Helix.xml b/examples/Helix.xml index e6fb18d..765e377 100644 --- a/examples/Helix.xml +++ b/examples/Helix.xml @@ -6,15 +6,15 @@ - -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,15,17,19,19.5,20,20.5,21,22,25,30,35,45 - -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,15,20,25,35 - -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,55,60,65,75 + -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 + -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 + -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 - - + + @@ -22,34 +22,41 @@ - - - - + + + + - + - - - + + + + + + + + + + - + - + @@ -67,29 +74,29 @@ - - - - - - - - - - - - - + + + + + + + + + - - - + + + - - - + + + + + + + diff --git a/examples/MSL.xml b/examples/MSL.xml index d8602bc..4043888 100644 --- a/examples/MSL.xml +++ b/examples/MSL.xml @@ -13,8 +13,8 @@ - - + + @@ -23,8 +23,8 @@ - - + + @@ -33,25 +33,25 @@ - - + + - - + + - - + + - - + + diff --git a/examples/PlaneWave.xml b/examples/PlaneWave.xml index bb0e251..ad0bd42 100644 --- a/examples/PlaneWave.xml +++ b/examples/PlaneWave.xml @@ -1,6 +1,6 @@ - + @@ -8,7 +8,7 @@ -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 -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 - -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 + -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,-990,-980,-970,-960,-950,-940,-930,-920,-910,-900,-890,-880,-870,-860,-850,-840,-830,-820,-810,-800,-790,-780,-770,-760,-750,-740,-730,-720,-710,-700,-690,-680,-670,-660,-650,-640,-630,-620,-610,-600,-590,-580,-570,-560,-550,-540,-530,-520,-510,-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,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 @@ -22,32 +22,22 @@ - + - - - - - - - - - - - - - + + + - - - + + + @@ -63,18 +53,14 @@ - - - - - + - +