blob: 94953e726726ff88a509d46d84084520d86ef9c4 [file] [log] [blame]
/*
* GenMesh.hh
*
* Created on: Jun 4, 2013
* Author: cferenba
*
* Copyright (c) 2012, Los Alamos National Security, LLC.
* All rights reserved.
* Use of this source code is governed by a BSD-style open-source
* license; see top-level LICENSE file for full license text.
*/
#ifndef GENMESH_HH_
#define GENMESH_HH_
#include <string>
#include <vector>
#include "Vec2.hh"
// forward declarations
class InputFile;
class GenMesh {
public:
std::string meshtype; // generated mesh type
int gnzx, gnzy; // global number of zones, in x and y
// directions
double lenx, leny; // length of mesh sides, in x and y
// directions
int numpex, numpey; // number of PEs to use, in x and y
// directions
int mypex, mypey; // my PE index, in x and y directions
int nzx, nzy; // (local) number of zones, in x and y
// directions
int zxoffset, zyoffset; // offsets of local zone array into
// global, in x and y directions
GenMesh(const InputFile* inp);
~GenMesh();
void generate(
std::vector<double2>& pointpos,
std::vector<int>& zonestart,
std::vector<int>& zonesize,
std::vector<int>& zonepoints,
std::vector<int>& masterpes,
std::vector<int>& mastercounts,
std::vector<int>& slavepoints,
std::vector<int>& slavepes,
std::vector<int>& slavecounts,
std::vector<int>& masterpoints);
void generateRect(
std::vector<double2>& pointpos,
std::vector<int>& zonestart,
std::vector<int>& zonesize,
std::vector<int>& zonepoints,
std::vector<int>& masterpes,
std::vector<int>& mastercounts,
std::vector<int>& slavepoints,
std::vector<int>& slavepes,
std::vector<int>& slavecounts,
std::vector<int>& masterpoints);
void generatePie(
std::vector<double2>& pointpos,
std::vector<int>& zonestart,
std::vector<int>& zonesize,
std::vector<int>& zonepoints,
std::vector<int>& masterpes,
std::vector<int>& mastercounts,
std::vector<int>& slavepoints,
std::vector<int>& slavepes,
std::vector<int>& slavecounts,
std::vector<int>& masterpoints);
void generateHex(
std::vector<double2>& pointpos,
std::vector<int>& zonestart,
std::vector<int>& zonesize,
std::vector<int>& zonepoints,
std::vector<int>& masterpes,
std::vector<int>& mastercounts,
std::vector<int>& slavepoints,
std::vector<int>& slavepes,
std::vector<int>& slavecounts,
std::vector<int>& masterpoints);
void calcNumPE();
}; // class GenMesh
#endif /* GENMESH_HH_ */