data.cpp 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274
  1. /*************** To set global variables ********************/
  2. #include "stdafx.h"
  3. extern double Pi; /* Pi number ****************/
  4. extern double Pih; /* Pi/2.0 *******************/
  5. extern double Pit; /* Pi*2.0 *******************/
  6. extern double wn; /* wave number **************/
  7. extern double mu; /* impedance of free space **/
  8. extern int Np;
  9. extern int Nh; /* for Coifman, L = 4 *******/
  10. extern int Nc4; /* for Coifman, L = 4 *******/
  11. extern int Nit; /* number of iterations *****/
  12. extern int J; /* maximum resolution level */
  13. extern Complex Ic; /* cmplx( 0.0, 1.0 ) ********/
  14. extern double step_w; /* 1.0 / power( 2.0, J ) ****/
  15. extern int Nw; /* number of wavelets *******/
  16. extern int Nwx; /* number of Gauss points ***/
  17. extern int Nwy; /* number of Gauss points ***/
  18. extern int Nws; /* number of subdivisons ****/
  19. extern int Nc; /* number of conductors *****/
  20. extern int Die, Rec, Cir, Tri, Ell, Pol, Gnd, Tra;
  21. extern Matrix Gnddi;
  22. extern Matrix Recdi; /* rectangular conductors ***/
  23. extern Matrix Cirdi;
  24. extern Matrix Tradix;
  25. extern Matrix Tradiy;
  26. extern Vector ag, bg, cg;
  27. extern Vector a, b, c;
  28. extern Vector at, bt, ct;
  29. extern Vector Circum; /* circumference of conduct**/
  30. extern Vector Diec; /* circum of die conductors */
  31. extern Vector Recc; /* circum of rec conductors */
  32. extern Vector Circ; /* circum of cir conductors */
  33. extern Vector Trac; /* circum of tra conductors */
  34. extern Vector Tric; /* circum of tri conductors */
  35. extern Vector Ellc; /* circum of ell conductors */
  36. extern Vector Polc; /* circum of pol conductors */
  37. extern Vector Gndc; /* circum of gnd conductors */
  38. extern double hw;
  39. extern double hwh;
  40. extern double freq, sqrtoms;
  41. extern double sigma;
  42. extern double omega;
  43. extern double oms, omegamu;
  44. extern double sft;
  45. extern Matrix uns;
  46. extern int matr;
  47. extern double EPS;
  48. extern Vector Iq_sq;
  49. extern double Uniti;
  50. void getparam() {
  51. int i;
  52. extern char fileIn[1024];
  53. fstream fp(fileIn, ios::in);
  54. if( fp.fail() ) {
  55. cerr << "getparam"
  56. << ": can't open input file: " << fileIn
  57. << endl;
  58. exit(1);
  59. }
  60. fp >> Gnd; fp.ignore(100,'\n');
  61. fp >> Rec; fp.ignore(100,'\n');
  62. fp >> Cir; fp.ignore(100,'\n');
  63. fp >> Tra; fp.ignore(100,'\n');
  64. if( Gnd > 1 ) {
  65. cerr << "The Number of Ground Plane should be one!" << endl;
  66. exit(1);
  67. } else if ( Gnd < 1 ) {
  68. cerr << "You need to specify one ground plane!" << endl;
  69. exit(1);
  70. }
  71. Die = 0;
  72. Tri = 0;
  73. Ell = 0;
  74. Pol = 0;
  75. Nc = Die+Rec+Cir+Tra+Tri+Ell+Pol+Gnd;
  76. Circum.resize(Nc);
  77. ag.resize(Gnd);
  78. bg.resize(Gnd);
  79. cg.resize(Gnd);
  80. a.resize(Rec);
  81. b.resize(Rec);
  82. c.resize(Rec);
  83. at.resize(Tra);
  84. bt.resize(Tra);
  85. ct.resize(Tra);
  86. Diec.resize(Die);
  87. Recc.resize(Rec);
  88. Circ.resize(Cir);
  89. Trac.resize(Tra);
  90. Tric.resize(Tri);
  91. Ellc.resize(Ell);
  92. Polc.resize(Pol);
  93. Gndc.resize(Gnd);
  94. Gnddi.resize(Gnd,4);
  95. Recdi.resize(Rec,4);
  96. Cirdi.resize(Cir,3);
  97. Tradix.resize(Tra,4);
  98. Tradiy.resize(Tra,4);
  99. Iq_sq.resize(Nc);
  100. if( Gnd > 0 ) {
  101. for( i = 0; i < Gnd; i ++ ) {
  102. fp >> Gnddi(i,0); fp.ignore(100,'\n');
  103. fp >> Gnddi(i,1); fp.ignore(100,'\n');
  104. fp >> Gnddi(i,2); fp.ignore(100,'\n');
  105. fp >> Gnddi(i,3); fp.ignore(100,'\n');
  106. fp >> Iq_sq[i]; fp.ignore(100,'\n');
  107. }
  108. }
  109. if( Rec > 0 ) {
  110. for( i = 0; i < Rec; i ++ ) {
  111. fp >> Recdi(i,0); fp.ignore(100,'\n');
  112. fp >> Recdi(i,1); fp.ignore(100,'\n');
  113. fp >> Recdi(i,2); fp.ignore(100,'\n');
  114. fp >> Recdi(i,3); fp.ignore(100,'\n');
  115. fp >> Iq_sq[i+Gnd]; fp.ignore(100,'\n');
  116. }
  117. }
  118. if( Cir > 0 ) {
  119. for( i = 0; i < Cir; i ++ ) {
  120. fp >> Cirdi(i,0); fp.ignore(100,'\n');
  121. fp >> Cirdi(i,1); fp.ignore(100,'\n');
  122. fp >> Cirdi(i,2); fp.ignore(100,'\n');
  123. fp >> Iq_sq[i+Gnd+Rec]; fp.ignore(100,'\n');
  124. }
  125. }
  126. if( Tra > 0 ) {
  127. for( i = 0; i < Tra; i ++ ) {
  128. fp >> Tradix(i,0); fp.ignore(100,'\n');
  129. fp >> Tradiy(i,0); fp.ignore(100,'\n');
  130. fp >> Tradix(i,1); fp.ignore(100,'\n');
  131. fp >> Tradiy(i,1); fp.ignore(100,'\n');
  132. fp >> Tradix(i,2); fp.ignore(100,'\n');
  133. fp >> Tradiy(i,2); fp.ignore(100,'\n');
  134. fp >> Tradix(i,3); fp.ignore(100,'\n');
  135. fp >> Tradiy(i,3); fp.ignore(100,'\n');
  136. fp >> Iq_sq[i+Gnd+Rec+Cir]; fp.ignore(100,'\n');
  137. }
  138. }
  139. fp >> Nh; fp.ignore(100,'\n');
  140. fp >> Nit; fp.ignore(100,'\n');
  141. fp >> J; fp.ignore(100,'\n');
  142. fp >> Nwx; fp.ignore(100,'\n');
  143. fp >> Nwy; fp.ignore(100,'\n');
  144. fp >> Nws; fp.ignore(100,'\n');
  145. fp >> Np; fp.ignore(100,'\n');
  146. fp >> EPS; fp.ignore(100,'\n');
  147. fp >> matr; fp.ignore(100,'\n');
  148. fp >> freq; fp.ignore(100,'\n');
  149. fp >> sigma; fp.ignore(100,'\n');
  150. fp.close();
  151. Uniti=1.0;
  152. Pi = 4.0*atan(1.0);
  153. Pih = Pi/2.0;
  154. Pit = Pi*2.0;
  155. wn = 2.0*Pi;
  156. mu = 120.0*Pi;
  157. if (Gnd > 0) {
  158. for ( i = 0; i < Gnd; i ++ ) {
  159. Gndc[i] = 2.0*(Gnddi(i,2)+Gnddi(i,3));
  160. Circum[i] = Gndc[i];
  161. ag[i] = Gnddi(i,2);
  162. bg[i] = Gnddi(i,2)+Gnddi(i,3);
  163. cg[i] = 2*Gnddi(i,2)+Gnddi(i,3);
  164. }
  165. }
  166. if (Rec > 0) {
  167. for ( i = 0; i < Rec; i ++ ) {
  168. Recc[i] = 2.0*(Recdi(i,2)+Recdi(i,3));
  169. Circum[i+Gnd] = Recc[i];
  170. a[i] = Recdi(i,2);
  171. b[i] = Recdi(i,2)+Recdi(i,3);
  172. c[i] = 2*Recdi(i,2)+Recdi(i,3);
  173. }
  174. }
  175. if (Cir > 0) {
  176. for ( i = 0 ; i < Cir; i ++ ) {
  177. Circ[i] = 2.0*Pi*Cirdi(i,2);
  178. Circum[Gnd+Rec+i] = Circ[i];
  179. }
  180. }
  181. if (Tra > 0) {
  182. for ( i = 0 ; i < Tra; i ++ ) {
  183. at[i] = sidelen(Tradix(i,0),Tradiy(i,0),Tradix(i,1),Tradiy(i,1));
  184. bt[i] = at[i]+sidelen(Tradix(i,1),Tradiy(i,1),Tradix(i,2),Tradiy(i,2));
  185. ct[i] = bt[i]+sidelen(Tradix(i,2),Tradiy(i,2),Tradix(i,3),Tradiy(i,3));
  186. Trac[i] = ct[i]+sidelen(Tradix(i,0),Tradiy(i,0),Tradix(i,3),Tradiy(i,3));
  187. Circum[Gnd+Rec+Cir+i] = Trac[i];
  188. }
  189. }
  190. Ic = cmplx( 0.0, 1.0 );
  191. Nc4 = 11*Nh+1;
  192. step_w = 1.0/power( 2.0, J );
  193. Nw = int(power( 2.0, J ));
  194. hw = 11.0*step_w/double(Nws);
  195. hwh = hw/2.0;
  196. omega = 2.0*Pi*freq;
  197. mu = 4.0*Pi*1.0e-7;
  198. omegamu = omega*mu;
  199. oms = omega*mu*sigma;
  200. sqrtoms = sqrt(oms);
  201. cout << freq << endl;
  202. cout << sigma << endl;
  203. }