Fixed compilation of BMWlibs with gcc 3.x

This commit is contained in:
Bastian M. Wojek 2010-11-02 14:25:57 +00:00
parent a6466e2dac
commit c4dfc3cbce
8 changed files with 62 additions and 4 deletions

View File

@ -22,6 +22,7 @@ NEW integration of a few external musrfit plug-ins into the standard build proce
NEW default estimates for 'data' and 'background' entries in RUN blocks
NEW directory with some msr- and data-files for quick testing of new musrfit installations
NEW option to musrt0: the key 'T' will set the t0 cursor to the maximum of the histogram
FIXED compilation of BMWlibs with gcc 3.x
FIXED hanging musrt0's should be eliminated now (MUSR-153)
FIXED wrong WARNING message for use_fit_ranges
FIXED bug in event handling leading to crash for non-muSR when switching between view and difference view

View File

@ -81,7 +81,7 @@ PLUGIN_LIBRARY_VERSION=1:0:0
LEM_LIBRARY_VERSION=1:5:0
PSIBIN_LIBRARY_VERSION=0:1:0
MUD_LIBRARY_VERSION=0:0:0
MUSR_LIBRARY_VERSION=0:6:0
MUSR_LIBRARY_VERSION=0:7:0
# | | |
# +------+ | +---+
# | | |

View File

@ -34,7 +34,11 @@
#endif
#include "TBofZCalc.h"
#ifdef HAVE_GOMP
#include <omp.h>
#endif
#include <cmath>
//#include <iostream>
//#include <algorithm>

View File

@ -37,7 +37,11 @@
#include <cstdlib>
#include <cmath>
#ifdef HAVE_GOMP
#include <omp.h>
#endif
#include <iostream>
using namespace std;

View File

@ -38,7 +38,11 @@
#include <cstdlib>
#include <cmath>
#ifdef HAVE_GOMP
#include <omp.h>
#endif
#include <iostream>
using namespace std;

View File

@ -40,7 +40,9 @@
#include <fstream>
#include <cassert>
#ifdef HAVE_GOMP
#include <omp.h>
#endif
/* USED FOR DEBUGGING-----------------------------------
#include <cstdio>
@ -464,6 +466,41 @@ void TPofBCalc::Calculate(const TBulkVortexFieldCalc *vortexLattice, const vecto
}
// of << endl;
}
// of.close();
} else if (para.size() == 8 && para[6] == 3.0 && para[5] != 0.0 && vortexLattice->IsTriangular()) {
// add antiferromagnetic fields in the vortex cores
double field, Rsq1, Rsq2, Rsq3, Rsq4, Rsq5, Rsq6, one_xiSq(-1.0/(para[7]*para[7]));
// ofstream of("AFfields.dat");
for (unsigned int j(0); j < numberOfSteps_2; ++j) {
for (unsigned int i(0); i < numberOfSteps_2; ++i) {
Rsq1 = static_cast<double>(3*i*i + j*j)/static_cast<double>(numberOfStepsSq);
Rsq2 = static_cast<double>(3*(numberOfSteps_2 - i)*(numberOfSteps_2 - i) \
+ (numberOfSteps_2 - j)*(numberOfSteps_2 - j))/static_cast<double>(numberOfStepsSq);
Rsq3 = static_cast<double>(3*(numberOfSteps - i)*(numberOfSteps - i) \
+ j*j)/static_cast<double>(numberOfStepsSq);
Rsq4 = static_cast<double>(3*(numberOfSteps_2 - i)*(numberOfSteps_2 - i) \
+ (numberOfSteps_2 + j)*(numberOfSteps_2 + j))/static_cast<double>(numberOfStepsSq);
Rsq5 = static_cast<double>(3*i*i \
+ (numberOfSteps - j)*(numberOfSteps - j))/static_cast<double>(numberOfStepsSq);
Rsq6 = static_cast<double>(3*(numberOfSteps_2 + i)*(numberOfSteps_2 + i) \
+ (numberOfSteps_2 - j)*(numberOfSteps_2 - j))/static_cast<double>(numberOfStepsSq);
field = vortexFields[i + numberOfSteps*j] \
+ para[5]*(exp(Rsq1*one_xiSq) + exp(Rsq2*one_xiSq) + exp(Rsq3*one_xiSq) \
+exp(Rsq4*one_xiSq) + exp(Rsq5*one_xiSq) + exp(Rsq6*one_xiSq));
// of << para[5]*(exp(Rsq1*one_xiSq) - exp(Rsq2*one_xiSq) + exp(Rsq3*one_xiSq) \
// -exp(Rsq4*one_xiSq) + exp(Rsq5*one_xiSq) - exp(Rsq6*one_xiSq)) << " ";
fill_index = static_cast<unsigned int>(ceil(fabs((field/fDB))));
if (fill_index < fPBSize) {
fPB[fill_index] += 1.0;
} else {
cout << "Field over the limit..." << endl;
}
}
// of << endl;
}
// of.close();
} else {
for (unsigned int j(0); j < numberOfSteps_2; ++j) {

View File

@ -46,7 +46,9 @@
#include <cstdio>
#include <cstdlib>
#ifdef HAVE_GOMP
#include <omp.h>
#endif
#include <TString.h>
#include <TObjArray.h>

View File

@ -166,8 +166,8 @@ TBulkTriVortexLondon::TBulkTriVortexLondon() : fCalcNeeded(true), fFirstCall(tru
fParForPofB.push_back(0.0); // Bkg-Field
fParForPofB.push_back(0.005); // Bkg-width
fParForPofB.push_back(0.0); // Bkg-weight
fParForPofB.push_back(0.0); // vortex-weighting
fParForPofB.push_back(0.0); // vortex-weighting: 0.0 homogeneous, 1.0 Gaussian, 2.0 Lorentzian
fParForPofB.push_back(0.0); // vortex-weighting || antiferromagnetic field
fParForPofB.push_back(0.0); // vortex-weighting: 0.0 homogeneous, 1.0 Gaussian, 2.0 Lorentzian || 3.0 antiferromagnetic vortex-cores
fVortex = new TBulkTriVortexLondonFieldCalc(fWisdom, fGridSteps);
@ -249,7 +249,7 @@ TBulkSqVortexLondon::TBulkSqVortexLondon() : fCalcNeeded(true), fFirstCall(true)
double TBulkTriVortexLondon::operator()(double t, const vector<double> &par) const {
assert(par.size() == 4 || par.size() == 5 || par.size() == 7); // normal, +BkgWeight, +VortexWeighting
assert(par.size() == 4 || par.size() == 5 || par.size() == 7 || par.size() == 8); // normal, +BkgWeight, +VortexWeighting, +AFfield
if(t<0.0)
return cos(par[0]*0.017453293);
@ -305,6 +305,12 @@ double TBulkTriVortexLondon::operator()(double t, const vector<double> &par) con
fParForPofB[5] = par[5];
assert((par[6] == 0.0) || (par[6] == 1.0) || (par[6] == 2.0));
fParForPofB[6] = par[6];
} else if (par.size() == 8) {
fParForPofB[5] = par[5];
assert(par[6] == 3.0);
fParForPofB[6] = par[6];
fParForPofB.resize(8);
fParForPofB[7] = par[7]; // AF-width in vortex-lattice-units
}
fVortex->SetParameters(fParForVortex);