Print

Print


Commit in lcdd/src on MAIN
G4RZFieldMap.cc+58-311.6 -> 1.7
Fixed problem with wrong field array assignment.

lcdd/src
G4RZFieldMap.cc 1.6 -> 1.7
diff -u -r1.6 -r1.7
--- G4RZFieldMap.cc	31 Aug 2005 18:56:57 -0000	1.6
+++ G4RZFieldMap.cc	31 Aug 2005 22:08:20 -0000	1.7
@@ -1,12 +1,17 @@
-// $Header: /cvs/lcd/lcdd/src/G4RZFieldMap.cc,v 1.6 2005/08/31 18:56:57 jeremy Exp $
+// $Header: /cvs/lcd/lcdd/src/G4RZFieldMap.cc,v 1.7 2005/08/31 22:08:20 jeremy Exp $
 #include "G4RZFieldMap.hh"
 
 #include "globals.hh"
 
 #include <cmath>
 
+//#define FIELD_MAP_DEBUG 1
+
+#ifdef FIELD_MAP_DEBUG
+#include <iostream>
 using std::cout;
 using std::endl;
+#endif
 
 G4RZFieldMap::G4RZFieldMap(int numBinsR,
 			   int numBinsZ,
@@ -43,6 +48,26 @@
   fillArrays(fieldData);
 }
 
+void G4RZFieldMap::initializeArrays()
+{
+  /* Make two 2D arrays of numBinsZ x numBinsR */
+  m_BrArray = new double*[m_numBinsZ];
+  m_BzArray = new double*[m_numBinsZ];
+
+  for (int i=0; i<m_numBinsZ; i++) {
+    m_BrArray[i] = new double[m_numBinsR];
+    m_BzArray[i] = new double[m_numBinsR];
+  }
+
+  /* Init arrays to all 0's */
+  for ( int i=0; i<m_numBinsZ; i++) {
+    for ( int j=0; j<m_numBinsR; j++) {
+      m_BrArray[i][j]=0;
+      m_BzArray[i][j]=0;
+    }
+  }
+}
+
 void G4RZFieldMap::fillArrays(std::vector<RZBData> fieldData)
 {
   for ( std::vector<RZBData>::iterator iter = fieldData.begin();
@@ -55,8 +80,14 @@
     int ir=(int) ((rzb.r() + 0.0001)/m_gridSizeR);
     ir = ir;
 
-    m_BzArray[iz][ir] = rzb.Br();
-    m_BrArray[iz][ir] = rzb.Bz();
+    m_BzArray[iz][ir] = rzb.Bz();
+    m_BrArray[iz][ir] = rzb.Br();
+
+#ifdef FIELD_MAP_DEBUG
+    cout << "ir iz = " << ir << " " << iz << endl;
+    cout << "Br Bz = " << m_BrArray[iz][ir] << " " << m_BzArray[iz][ir] << endl;
+    cout << endl;
+#endif
   }
 }
 
@@ -67,7 +98,7 @@
 
 void G4RZFieldMap::deleteArrays()
 {
-  for (int i=0; i<m_numBinsR; i++) {
+  for (int i=0; i<m_numBinsZ; i++) {
     delete[] m_BrArray[i];
     delete[] m_BzArray[i];
   }
@@ -87,6 +118,10 @@
  */
 void G4RZFieldMap::GetFieldValue( const double Point[3], double *Bfield ) const
 {
+#ifdef FIELD_MAP_DEBUG
+  cout << "Point = " << Point[0] << " " << Point[1] << " " << Point[2] << endl;
+#endif
+
   double r = sqrt( ( Point[0] * Point[0] ) + ( Point[1] * Point[1] ) );
   double z = Point[2];
 
@@ -94,24 +129,27 @@
   double hr = 0;
 
   if(fabs(z)>m_maxZ || r>m_maxR) {
-    hz = 0.0;
-    hr = 0.0;
+#ifdef FIELD_MAP_DEBUG
+    cout << "OUT OF RANGE: z r = " << fabs(z) << " " << r << endl;
+    cout << "MAX: maxZ maxR " << m_maxZ << " " << m_maxR << endl;
+#endif
     return;
   }
 
   int iz = (int) ((fabs(z)+0.001)/m_gridSizeZ);
   int ir = (int) ((r+0.001)/m_gridSizeR);
 
+#ifdef FIELD_MAP_DEBUG
   cout << "dz " << m_gridSizeZ << " dr " << m_gridSizeR << endl;
   cout << "z " << z << " r " << r << endl;
   cout << "iz " << iz << " ir " << ir << endl;
-  iz = iz;
-  ir = ir;
+#endif
 
   // outside
   if(iz<0 || ir>m_numBinsR) {
-    hz = 0.0;
-    hr = 0.0;
+#ifdef FIELD_MAP_DEBUG
+    cout << "BIN OVERFLOW: iz ir = " << iz << " " << ir << endl;
+#endif
     return;
   }
 
@@ -124,7 +162,9 @@
   double bz0 = m_BzArray[iz][ir];
   double br0 = m_BrArray[iz][ir];
 
+#ifdef FIELD_MAP_DEBUG
   cout << "bz0 " << bz0 << " br0 " << br0 << endl;
+#endif
 
   double delz = 0.;
   double delr = 0.;
@@ -136,19 +176,25 @@
     delr = r - float(ir) * m_gridSizeR;
     brdz = (m_BrArray[iz+1][ir]-br0)/m_gridSizeZ;
     brdr = (m_BrArray[iz][ir+1]-br0)/m_gridSizeR;
+#ifdef FIELD_MAP_DEBUG
     cout << "br= " << m_BrArray[iz+1][ir] << " " << m_BrArray[iz][ir+1] << endl;
+#endif
   }
 
   delz = fabs(z) - float(iz) * m_gridSizeZ;
 
+#ifdef FIELD_MAP_DEBUG
   cout << " z " << z << " abs(z) " << fabs(z) << " iz " << iz << endl;
   cout << " float(iz-1) " << float(iz-1) << " dz " << m_gridSizeZ << endl;
   cout << " delz " << delz << endl;
+#endif
 
   double bzdz = (m_BzArray[iz+1][ir]-bz0)/m_gridSizeZ;
   double bzdr = (m_BzArray[iz][ir+1]-bz0)/m_gridSizeR;
 
+#ifdef FIELD_MAP_DEBUG
   cout << "bz= " << m_BzArray[iz+1][ir] << " " << m_BzArray[iz][ir+1] << endl;
+#endif
 
   if(izfar==1) {
     hz = bz0+bzdr*delr;
@@ -174,27 +220,8 @@
     Bfield[2] = -Bfield[2];
   }
 
+#ifdef FIELD_MAP_DEBUG
   cout << "Bfield XYZ = " << Bfield[0] << " " << Bfield[1] << " " << Bfield[2] << endl;
-
   cout << endl;
-}
-
-void G4RZFieldMap::initializeArrays()
-{
-  /* Make two 2D arrays of numBinsR x numBinsZ */
-  m_BrArray = new double*[m_numBinsR];
-  m_BzArray = new double*[m_numBinsR];
-
-  for (int i=0; i<m_numBinsR; i++) {
-    m_BrArray[i] = new double[m_numBinsZ];
-    m_BzArray[i] = new double[m_numBinsZ];
-  }
-
-  /* Init arrays to all 0's */
-  for ( int i=0; i<m_numBinsR; i++) {
-    for ( int j=0; j<m_numBinsZ; j++) {
-      m_BrArray[i][j]=0;
-      m_BzArray[i][j]=0;
-    }
-  }
+#endif
 }
CVSspam 0.2.8