Liebe Gitlab-Nutzer, lieber Gitlab-Nutzer, es ist nun möglich sich mittels des ZIH-Logins/LDAP an unserem Dienst anzumelden. Ein Anmelden über dieses erzeugt ein neues Konto. Das alte Konto ist über den Reiter "Standard" erreichbar. Die Administratoren

Dear Gitlab user, it is now possible to log in to our service using the ZIH login/LDAP. Logging in via this will create a new account. The old account can be accessed via the "Standard" tab. The administrators

Commit d2f8df57 authored by Praetorius, Simon's avatar Praetorius, Simon
Browse files

PngReader added to io

parent 9878746e
......@@ -17,7 +17,7 @@ namespace AMDiS {
/** \brief
* Copies the values of a value file to a DOF vector.
*/
void PngReader::readValue(std::string filename,
void PngReader::readValues(std::string filename,
DOFVector<double> *vec)
{
FUNCNAME("ValueReader::readValue()");
......@@ -67,6 +67,9 @@ namespace AMDiS {
const BasisFunction *basFcts = vec->getFeSpace()->getBasisFcts();
int numBasFcts = basFcts->getNumber();
DegreeOfFreedom *localIndices = new DegreeOfFreedom[numBasFcts];
double xMin = 0.0, xMax = 1.0, yMin = 0.0, yMax = 1.0;
getMeshDimension(vec->getFeSpace()->getMesh(), xMin, xMax, yMin, yMax);
TraverseStack stack;
ElInfo *elInfo = stack.traverseFirst(vec->getFeSpace()->getMesh(), -1,
......@@ -78,8 +81,10 @@ namespace AMDiS {
basFcts->getLocalIndices(el, vec->getFeSpace()->getAdmin(), localIndices);
for (int i = 0; i < numBasFcts; i++) {
col = static_cast<int>(((elInfo->getCoords())[i][0])*(info_ptr->width-1));
row = static_cast<int>((1.0-(elInfo->getCoords())[i][1])*(info_ptr->height-1));
double lambdaX = ((elInfo->getCoords())[i][0] - xMin)/(xMax - xMin);
double lambdaY = ((elInfo->getCoords())[i][1] - yMin)/(yMax - yMin);
col = static_cast<int>(lambdaX*(info_ptr->width-1));
row = static_cast<int>((1.0-lambdaY)*(info_ptr->height-1));
switch (bytesPerPixel) {
case 1:
value = static_cast<double>(info_ptr->row_pointers[row][col]);
......
......@@ -36,9 +36,32 @@ namespace AMDiS {
{
public:
/// Copies the values of a value file to a DOF vector.
static void readValue(std::string filename,
static void readValues(std::string filename,
DOFVector<double> *dofVector);
};
private:
static void getMeshDimension(Mesh* mesh, double &xMin, double &xMax, double &yMin, double &yMax)
{
WorldVector<double> minDim; minDim.set(1.e10);
WorldVector<double> maxDim; maxDim.set(-1.e10);
TraverseStack stack;
ElInfo *elInfo = stack.traverseFirst(mesh, 0, Mesh::CALL_EL_LEVEL | Mesh::FILL_COORDS);
while (elInfo) {
for (int i = 0; i <= mesh->getDim(); i++) {
WorldVector<double> &coords = elInfo->getMacroElement()->getCoord(i);
for (int j = 0; j < coords.getSize(); ++j) {
minDim[j] = std::min(minDim[j], coords[j]);
maxDim[j] = std::max(maxDim[j], coords[j]);
}
}
elInfo = stack.traverseNext(elInfo);
}
xMin = minDim[0]; xMax = maxDim[0];
yMin = minDim[1]; yMax = maxDim[1];
};
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment