Commit efd6a256 authored by Thomas Witkowski's avatar Thomas Witkowski
Browse files

Removed some *_MEMORY macros

parent f696ed01
......@@ -15,7 +15,7 @@ namespace AMDiS {
dofIndices.resize(omp_get_overall_max_threads());
allocatedMemoryLocalBounds = feSpace->getBasisFcts()->getNumber();
for (int i = 0; i < static_cast<int>(localBounds.size()); i++)
localBounds[i] = GET_MEMORY(BoundaryType, allocatedMemoryLocalBounds);
localBounds[i] = new BoundaryType[allocatedMemoryLocalBounds];
}
BoundaryManager::BoundaryManager(BoundaryManager &bm)
......@@ -25,13 +25,13 @@ namespace AMDiS {
localBounds.resize(bm.localBounds.size());
dofIndices.resize(bm.localBounds.size());
for (int i = 0; i < static_cast<int>(localBounds.size()); i++)
localBounds[i] = GET_MEMORY(BoundaryType, allocatedMemoryLocalBounds);
localBounds[i] = new BoundaryType[allocatedMemoryLocalBounds];
}
BoundaryManager::~BoundaryManager()
{
for (int i = 0; i < static_cast<int>(localBounds.size()); i++)
FREE_MEMORY(localBounds[i], BoundaryType, allocatedMemoryLocalBounds);
delete [] localBounds[i];
}
double BoundaryManager::boundResidual(ElInfo *elInfo,
......@@ -40,10 +40,10 @@ namespace AMDiS {
{
double result = 0.0;
std::map<BoundaryType, BoundaryCondition*>::iterator it;
for (it = localBCs.begin(); it != localBCs.end(); ++it) {
for (it = localBCs.begin(); it != localBCs.end(); ++it)
if ((*it).second)
result += (*it).second->boundResidual(elInfo, matrix, dv);
}
return result;
}
......
......@@ -484,7 +484,7 @@ namespace AMDiS {
this->set(0.0);
DegreeOfFreedom *myLocalIndices = localIndices[omp_get_thread_num()];
double *sourceLocalCoeffs = GET_MEMORY(double, nSourceBasisFcts);
double *sourceLocalCoeffs = new double[nSourceBasisFcts];
if (feSpace->getMesh() == sourceFeSpace->getMesh()) {
DimVec<double> *coords = NULL;
......@@ -552,7 +552,7 @@ namespace AMDiS {
}
}
FREE_MEMORY(sourceLocalCoeffs, double, nSourceBasisFcts);
delete [] sourceLocalCoeffs;
}
......@@ -564,12 +564,10 @@ namespace AMDiS {
this->set(nul);
DimVec<double> *coords = NULL;
const FiniteElemSpace *vFESpace = v->getFESpace();
if (feSpace == vFESpace) {
if (feSpace == vFESpace)
WARNING("same FE-spaces\n");
}
const BasisFunction *basFcts = feSpace->getBasisFcts();
const BasisFunction *vBasFcts = vFESpace->getBasisFcts();
......
......@@ -124,7 +124,7 @@ namespace AMDiS {
basisFcts_ = const_cast<BasisFunction*>(feSpace_->getBasisFcts());
nBasisFcts_ = basisFcts_->getNumber();
localDOFs_ = GET_MEMORY(DegreeOfFreedom, nBasisFcts_);
localDOFs_ = new DegreeOfFreedom[nBasisFcts_];
TraverseStack stack;
......@@ -161,10 +161,10 @@ namespace AMDiS {
}
}
FREE_MEMORY(localDOFs_, DegreeOfFreedom, nBasisFcts_);
delete [] localDOFs_;
valueDataCollected_ = true;
return(0);
return 0;
}
int DataCollector::startCollectingPeriodicData()
......
......@@ -103,7 +103,7 @@ namespace AMDiS {
if (dof[j]) {
if (deletedDOFs.count(dof[j]) == 0) {
deletedDOFs[dof[j]] = true;
FREE_MEMORY(dof[j], DegreeOfFreedom, ndof);
delete [] dof[j];
}
}
j++;
......@@ -113,13 +113,11 @@ namespace AMDiS {
FREE_MEMORY(dof, DegreeOfFreedom*, mesh->getNumberOfNodes());
if (child[0]) {
if (child[0])
child[0]->deleteElementDOFs();
}
if (child[1]) {
if (child[1])
child[1]->deleteElementDOFs();
}
}
Element* Element::cloneWithDOFs()
{
......@@ -144,7 +142,7 @@ namespace AMDiS {
/* =========== And here we clone the DOFs =========== */
el->dof = GET_MEMORY(DegreeOfFreedom*, mesh->getNumberOfNodes());
el->dof = new DegreeOfFreedom*[mesh->getNumberOfNodes()];
int dim = mesh->getDim();
int j = 0;
......@@ -153,18 +151,17 @@ namespace AMDiS {
GeoIndex position = INDEX_OF_DIM(pos, dim);
int ndof = 0;
for (int i = 0; i < mesh->getNumberOfDOFAdmin(); i++) {
for (int i = 0; i < mesh->getNumberOfDOFAdmin(); i++)
ndof += mesh->getDOFAdmin(i).getNumberOfDOFs(position);
}
if (ndof > 0) {
for (int i = 0; i < mesh->getGeo(position); i++) {
if (dof[j] != NULL) {
if (Mesh::serializedDOFs[dof[j][0]] == NULL) {
el->dof[j] = GET_MEMORY(DegreeOfFreedom, ndof);
for (int k = 0; k < ndof; k++) {
el->dof[j] = new DegreeOfFreedom[ndof];
for (int k = 0; k < ndof; k++)
el->dof[j][k] = dof[j][k];
}
Mesh::serializedDOFs[dof[j][0]] = el->dof[j];
} else {
el->dof[j] = Mesh::serializedDOFs[dof[j][0]];
......@@ -466,7 +463,7 @@ namespace AMDiS {
int nodes;
in.read(reinterpret_cast<char*>(&nodes), sizeof(int));
dof = GET_MEMORY(DegreeOfFreedom*, nodes);
dof = new DegreeOfFreedom*[nodes];
for (int i = 0; i < nodes; i++) {
int dofs;
......@@ -474,11 +471,11 @@ namespace AMDiS {
if (dofs) {
if (dofs != -1) {
dof[i] = GET_MEMORY(DegreeOfFreedom, dofs);
dof[i] = new DegreeOfFreedom[dofs];
in.read(reinterpret_cast<char*>(dof[i]), dofs * sizeof(DegreeOfFreedom));
if (Mesh::serializedDOFs[dof[i][0]] != NULL) {
DegreeOfFreedom *dofPtr = Mesh::serializedDOFs[dof[i][0]];
FREE_MEMORY(dof[i], DegreeOfFreedom, dofs);
delete [] dof[i];
dof[i] = dofPtr;
} else {
Mesh::serializedDOFs[dof[i][0]] = dof[i];
......
......@@ -9,24 +9,21 @@ namespace AMDiS {
va_start(arg, size);
VectorOfFixVecs<DimVec<double> > *result =
new VectorOfFixVecs<DimVec<double> >(dim, size, NO_INIT);
for (int i = 0; i < size; i++) {
for (int j = 0; j < dim + 1; j++) {
for (int i = 0; i < size; i++)
for (int j = 0; j < dim + 1; j++)
(*result)[i][j] = va_arg(arg, double);
}
}
va_end(arg);
return result;
};
}
double* createAndInitArray(int size, ...)
{
va_list arg;
va_start(arg, size);
double *result = GET_MEMORY(double, size);
double *result = new double[size];
for (int i = 0; i < size; i++) {
for (int i = 0; i < size; i++)
result[i] = va_arg(arg, double);
}
va_end(arg);
return result;
......
......@@ -22,51 +22,44 @@ namespace AMDiS {
void GNUPlotWriter::writeFiles(AdaptInfo *adaptInfo, bool force)
{
DOFVector<WorldVector<double> > coords(feSpace_, "coords");
Mesh *mesh = feSpace_->getMesh();
int dow = Global::getGeo(WORLD);
const BasisFunction *basFcts = feSpace_->getBasisFcts();
int i, numFcts = basFcts->getNumber();
DegreeOfFreedom *localDOFs = GET_MEMORY(DegreeOfFreedom, numFcts);
int numFcts = basFcts->getNumber();
DegreeOfFreedom *localDOFs = new DegreeOfFreedom[numFcts];
TraverseStack stack;
ElInfo *elInfo = stack.traverseFirst(mesh, -1,
Mesh::CALL_LEAF_EL |
Mesh::FILL_COORDS);
while(elInfo) {
while (elInfo) {
basFcts->getLocalIndices(elInfo->getElement(),
feSpace_->getAdmin(),
localDOFs);
for(i = 0; i < numFcts; i++) {
for (int i = 0; i < numFcts; i++)
coords[localDOFs[i]] = elInfo->getCoord(i);
}
elInfo = stack.traverseNext(elInfo);
}
FREE_MEMORY(localDOFs, DegreeOfFreedom, numFcts);
delete [] localDOFs;
FILE *file = NULL;
if (!(file = fopen(filename_.c_str(), "w")))
{
ERROR("could not open file %s for writing\n", filename_.c_str());
}
fprintf(file, "# line format: time x y z val1[x,y,z] val2[x,y,z] ...\n");
DOFVector<WorldVector<double> >::Iterator coordsIt(&coords, USED_DOFS);
int index, numVecs = static_cast<int>(dofVectors_.size());
for(coordsIt.reset(); !coordsIt.end(); ++coordsIt) {
for (coordsIt.reset(); !coordsIt.end(); ++coordsIt) {
index = coordsIt.getDOFIndex();
fprintf(file, "%e ", adaptInfo->getTime());
for(i = 0; i < dow; i++) {
for (int i = 0; i < dow; i++)
fprintf(file, "%e ", (*coordsIt)[i]);
}
for(i = 0; i < numVecs; i++) {
for (int i = 0; i < numVecs; i++)
fprintf(file, "%e ", (*(dofVectors_[i]))[index]);
}
fprintf(file, "\n");
}
}
......
......@@ -494,7 +494,7 @@ namespace AMDiS {
if (ndof <= 0)
return NULL;
DegreeOfFreedom *dof = GET_MEMORY(DegreeOfFreedom, ndof);
DegreeOfFreedom *dof = new DegreeOfFreedom[ndof];
for (int i = 0; i < getNumberOfDOFAdmin(); i++) {
const DOFAdmin *localAdmin = &getDOFAdmin(i);
......@@ -505,10 +505,9 @@ namespace AMDiS {
TEST_EXIT_DBG(n + n0 <= ndof)("n=%d, n0=%d too large: ndof=%d\n", n, n0, ndof);
for (int j = 0; j < n; j++) {
for (int j = 0; j < n; j++)
dof[n0 + j] = const_cast<DOFAdmin*>(localAdmin)->getDOFIndex();
}
}
return dof;
}
......@@ -521,7 +520,7 @@ namespace AMDiS {
if (nNodeEl <= 0)
return NULL;
DegreeOfFreedom **ptrs = GET_MEMORY(DegreeOfFreedom*, nNodeEl);
DegreeOfFreedom **ptrs = new DegreeOfFreedom*[nNodeEl];
for (int i = 0; i < nNodeEl; i++)
ptrs[i] = NULL;
......@@ -537,7 +536,7 @@ namespace AMDiS {
if (nNodeEl <= 0)
return;
FREE_MEMORY(ptrs, DegreeOfFreedom*, nNodeEl);
delete [] ptrs;
}
......@@ -606,7 +605,7 @@ namespace AMDiS {
localAdmin->freeDOFIndex(dof[n0 + j]);
}
FREE_MEMORY(dof, DegreeOfFreedom, ndof);
delete [] dof;
}
void Mesh::freeElement(Element* el)
......
......@@ -26,9 +26,8 @@ namespace AMDiS {
const FiniteElemSpace *feSpace =
F ? F->getFESpace() : df->getFESpace();
if (updateDF) {
if (updateDF)
df->clear();
}
BasisFunction *basFcts = const_cast<BasisFunction*>(feSpace->getBasisFcts());
......@@ -43,24 +42,21 @@ namespace AMDiS {
Mesh::FILL_DET|
Mesh::FILL_GRD_LAMBDA;
BoundaryType *bound = GET_MEMORY(BoundaryType, feSpace->getBasisFcts()->getNumber());
BoundaryType *bound = new BoundaryType[feSpace->getBasisFcts()->getNumber()];
el_info = stack.traverseFirst(feSpace->getMesh(), -1, fill_flag);
while (el_info) {
basFcts->getBound(el_info, bound);
if (updateDF) {
if (updateDF)
df->assemble(1.0, el_info, bound);
}
if (F) {
if (F)
F->assemble(1.0, el_info, bound);
}
el_info = stack.traverseNext(el_info);
}
FREE_MEMORY(bound, BoundaryType, feSpace->getBasisFcts()->getNumber());
delete [] bound;
}
void NonLinUpdaterVec::update(bool updateDF,
......@@ -89,14 +85,11 @@ namespace AMDiS {
if (updateDF) {
TEST_EXIT(df)("df not set but update tried!\n");
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
if ((*df)[i][j]) {
for (int i = 0; i < size; i++)
for (int j = 0; j < size; j++)
if ((*df)[i][j])
(*df)[i][j]->clear();
}
}
}
}
BasisFunction *basFcts = const_cast<BasisFunction*>(feSpace->getBasisFcts());
......@@ -113,32 +106,26 @@ namespace AMDiS {
Mesh::FILL_DET|
Mesh::FILL_GRD_LAMBDA;
BoundaryType *bound = GET_MEMORY(BoundaryType, basFcts->getNumber());
BoundaryType *bound = new BoundaryType[basFcts->getNumber()];
el_info = stack.traverseFirst(feSpace->getMesh(), -1, fill_flag);
while (el_info) {
basFcts->getBound(el_info, bound);
if (updateDF) {
for (int i = 0; i < size; i++) {
for (int j = 0; j < size; j++) {
if ((*df)[i][j]) {
if (updateDF)
for (int i = 0; i < size; i++)
for (int j = 0; j < size; j++)
if ((*df)[i][j])
(*df)[i][j]->assemble(1.0, el_info, bound);
}
}
}
}
if (F) {
for(int i = 0; i < size; i++) {
if (F)
for(int i = 0; i < size; i++)
F->getDOFVector(i)->assemble(1.0, el_info, bound);
}
}
el_info = stack.traverseNext(el_info);
}
FREE_MEMORY(bound, BoundaryType, basFcts->getNumber());
};
delete [] bound;
}
}
......@@ -9,18 +9,17 @@
namespace AMDiS {
::std::vector<PeriodicDOFMapping*> PeriodicDOFMapping::mappings_;
std::vector<PeriodicDOFMapping*> PeriodicDOFMapping::mappings_;
PeriodicDOFMapping*
PeriodicDOFMapping::providePeriodicDOFMapping(const BasisFunction *basFcts)
{
::std::vector<PeriodicDOFMapping*>::iterator it;
::std::vector<PeriodicDOFMapping*>::iterator end = mappings_.end();
for(it = mappings_.begin(); it != end; ++it) {
if((*it)->basFcts_ == basFcts) {
std::vector<PeriodicDOFMapping*>::iterator it;
std::vector<PeriodicDOFMapping*>::iterator end = mappings_.end();
for (it = mappings_.begin(); it != end; ++it)
if ((*it)->basFcts_ == basFcts)
return *it;
}
}
PeriodicDOFMapping *newMapping = new PeriodicDOFMapping(basFcts);
mappings_.push_back(newMapping);
return newMapping;
......@@ -32,9 +31,9 @@ namespace AMDiS {
{
FUNCNAME("PeriodicDOFMapping::PeriodicDOFMapping()");
TEST_EXIT(basFcts_->getDim() > 1)("dim == 1\n");
int i, num = basFcts_->getNumber();
int num = basFcts_->getNumber();
DimVec<double> *lambda;
for(i = 0; i < num; i++) {
for (int i = 0; i < num; i++) {
lambda = basFcts_->getCoords(i);
indexOfCoords_[*lambda] = i;
}
......@@ -42,16 +41,13 @@ namespace AMDiS {
PeriodicDOFMapping::~PeriodicDOFMapping()
{
::std::map<DimVec<int>, DegreeOfFreedom*, DimVecLess<int> >::iterator it;
for(it = dofPermutation_.begin(); it != dofPermutation_.end(); ++it) {
if(it->second) {
FREE_MEMORY(it->second, DegreeOfFreedom, basFcts_->getNumber());
}
}
std::map<DimVec<int>, DegreeOfFreedom*, DimVecLess<int> >::iterator it;
for (it = dofPermutation_.begin(); it != dofPermutation_.end(); ++it)
if (it->second)
delete [] it->second;
}
const DegreeOfFreedom
*PeriodicDOFMapping::getDOFPermutation(const DimVec<int> &vertexPermutation)
const DegreeOfFreedom *PeriodicDOFMapping::getDOFPermutation(const DimVec<int> &vertexPermutation)
{
FUNCNAME("PeriodicDOFMapping::getDOFPermutation()");
......@@ -74,7 +70,7 @@ namespace AMDiS {
DimVec<double> *lambda;
DimVec<double> newLambda(dim, NO_INIT);
DegreeOfFreedom *mapping = GET_MEMORY(DegreeOfFreedom, num);
DegreeOfFreedom *mapping = new DegreeOfFreedom[num];
for(i = 0; i < num; i++) {
lambda = basFcts_->getCoords(i);
......@@ -121,7 +117,7 @@ namespace AMDiS {
boundaryType);
const BasisFunction *basFcts = rowFESpace->getBasisFcts();
neighIndices_ = GET_MEMORY(DegreeOfFreedom, basFcts->getNumber());
neighIndices_ = new DegreeOfFreedom[basFcts->getNumber()];
}
}
......@@ -210,8 +206,7 @@ namespace AMDiS {
TEST_EXIT(matrix)("no matrix\n");
if (matrix == masterMatrix_) {
FREE_MEMORY(neighIndices_, DegreeOfFreedom,
rowFESpace()->getBasisFcts()->getNumber());
delete [] neighIndices_;
masterMatrix_ = NULL;
}
......
......@@ -21,12 +21,11 @@ namespace AMDiS {
lambda = new VectorOfFixVecs<DimVec<double> >(*(q.lambda));
// copy weights
w = GET_MEMORY(double, n_points);
w = new double[n_points];
for (int i = 0; i < n_points; i++) {
for (int i = 0; i < n_points; i++)
w[i] = q.w[i];
}
}
/****************************************************************************/
/* initialize gradient values of a function f in local coordinates at the */
......@@ -83,16 +82,15 @@ namespace AMDiS {
} else {
if (static_cast<int>( size) < n_points) {
size_t new_size = std::max(maxNQuadPoints[dim], n_points);
FREE_MEMORY(quad_vec, double, size);
quad_vec = GET_MEMORY(double, new_size);
delete [] quad_vec;
quad_vec = new double[new_size];
size = new_size;
}
val = quad_vec;
}
for (int i = 0; i < n_points; i++) {
for (int i = 0; i < n_points; i++)
val[i] = f((*lambda)[i]);
}
return(const_cast<const double *>(val));
}
......@@ -1509,18 +1507,16 @@ namespace AMDiS {
if (!phi && init_flag.isSet(INIT_PHI)) { // check flag
// allocate memory
phi = GET_MEMORY(double*, nPoints);
for (int i = 0; i < nPoints; i++) {
phi[i] = GET_MEMORY(double, nBasFcts);
}
phi = new double*[nPoints];
for (int i = 0; i < nPoints; i++)
phi[i] = new double[nBasFcts];
// fill memory
for (int i = 0; i< nPoints; i++) {
lambda = quadrature->getLambda(i);
for (int j = 0; j < nBasFcts; j++) {
for (int j = 0; j < nBasFcts; j++)
phi[i][j] = (*(basisFunctions->getPhi(j)))(lambda);
}
}
// update flag
init_flag |= INIT_PHI;
......@@ -1584,52 +1580,48 @@ namespace AMDiS {
int nBasFcts = basisFunctions->getNumber();
if (fastQuad.phi) {
phi = GET_MEMORY(double*, nPoints);
phi = new double*[nPoints];
for (int i = 0; i < nPoints; i++) {
phi[i] = GET_MEMORY(double, nBasFcts);
for (int j = 0; j < nBasFcts; j++) {
phi[i] = new double[nBasFcts];
for (int j = 0; j < nBasFcts; j++)
phi[i][j] = fastQuad.phi[i][j];
}
}
}
if (fastQuad.grdPhi) {
grdPhi = new MatrixOfFixVecs<DimVec<double> >(dim, nPoints, nBasFcts, NO_INIT);
for (int i = 0; i < nPoints; i++) {
for (int j = 0; j < nBasFcts; j++) {
for (int i = 0; i < nPoints; i++)
for (int j = 0; j < nBasFcts; j++)
(*grdPhi)[i][j] = (*(fastQuad.grdPhi))[i][j];
}
}
}
if (fastQuad.D2Phi) {
D2Phi = new MatrixOfFixVecs<DimMat<double> >(dim, nPoints, nBasFcts, NO_INIT);
for (int i = 0; i < nPoints; i++) {
for (int j = 0; j < nBasFcts; j++) {
for (int i = 0; i < nPoints; i++)
for (int j = 0; j < nBasFcts; j++)
(*D2Phi)[i][j] = (*(fastQuad.D2Phi))[i][j];
}
}
}
}
FastQuadrature::~FastQuadrature()
{
int nPoints = quadrature->getNumPoints();
for (int i = 0; i < nPoints; i++) {
FREE_MEMORY(phi[i], double, basisFunctions->getNumber());