mirror of
https://github.com/NGSolve/netgen.git
synced 2024-11-11 16:49:16 +05:00
parallel command processing
This commit is contained in:
parent
a4dcf70c69
commit
faad040fb0
@ -232,19 +232,36 @@ void Ng_LoadMeshFromStream ( istream & input )
|
||||
|
||||
void Ng_LoadMesh (const char * filename)
|
||||
{
|
||||
if ( (strlen (filename) > 4) &&
|
||||
strcmp (filename + (strlen (filename)-4), ".vol") != 0 )
|
||||
MPI_Comm_size(MPI_COMM_WORLD, &ntasks);
|
||||
MPI_Comm_rank(MPI_COMM_WORLD, &id);
|
||||
|
||||
if (id == 0)
|
||||
{
|
||||
if ( (strlen (filename) > 4) &&
|
||||
strcmp (filename + (strlen (filename)-4), ".vol") != 0 )
|
||||
{
|
||||
mesh.Reset (new Mesh());
|
||||
ReadFile(*mesh,filename);
|
||||
|
||||
//mesh->SetGlobalH (mparam.maxh);
|
||||
//mesh->CalcLocalH();
|
||||
return;
|
||||
}
|
||||
|
||||
ifstream infile(filename);
|
||||
Ng_LoadMeshFromStream(infile);
|
||||
|
||||
if (ntasks > 1)
|
||||
{
|
||||
// MyMPI_SendCmd ("mesh");
|
||||
mesh -> Distribute();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
mesh.Reset (new Mesh());
|
||||
ReadFile(*mesh,filename);
|
||||
|
||||
//mesh->SetGlobalH (mparam.maxh);
|
||||
//mesh->CalcLocalH();
|
||||
return;
|
||||
mesh->SendRecvMesh();
|
||||
}
|
||||
|
||||
ifstream infile(filename);
|
||||
Ng_LoadMeshFromStream(infile);
|
||||
}
|
||||
|
||||
void Ng_LoadMeshFromString (const char * mesh_as_string)
|
||||
|
@ -1197,16 +1197,10 @@ namespace netgen
|
||||
topology -> Update();
|
||||
clusters -> Update();
|
||||
|
||||
#ifdef PARALLEL
|
||||
if ( ntasks > 1 ) Distribute ();
|
||||
#endif
|
||||
|
||||
// Distribute();
|
||||
|
||||
SetNextMajorTimeStamp();
|
||||
// PrintMemInfo (cout);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -657,6 +657,9 @@ namespace netgen
|
||||
// call it only for the master !
|
||||
void Mesh :: Distribute ()
|
||||
{
|
||||
MPI_Comm_size(MPI_COMM_WORLD, &ntasks);
|
||||
MPI_Comm_rank(MPI_COMM_WORLD, &id);
|
||||
|
||||
if (id != 0 || ntasks == 1 ) return;
|
||||
|
||||
#ifdef METIS
|
||||
@ -666,17 +669,15 @@ namespace netgen
|
||||
(*this)[ei].SetPartition(ntasks * ei/GetNE() + 1);
|
||||
#endif
|
||||
|
||||
/*
|
||||
for (ElementIndex ei = 0; ei < GetNE(); ei++)
|
||||
*testout << "el(" << ei << ") is in part " << (*this)[ei].GetPartition() << endl;
|
||||
for (SurfaceElementIndex ei = 0; ei < GetNSE(); ei++)
|
||||
*testout << "sel(" << int(ei) << ") is in part " << (*this)[ei].GetPartition() << endl;
|
||||
*/
|
||||
|
||||
// send partition
|
||||
MyMPI_SendCmd ("mesh");
|
||||
// MyMPI_SendCmd ("mesh");
|
||||
SendRecvMesh ();
|
||||
|
||||
// paralleltop -> UpdateCoarseGrid();
|
||||
// paralleltop -> Print();
|
||||
}
|
||||
|
||||
|
||||
|
@ -221,6 +221,11 @@ namespace netgen
|
||||
ifstream infile(filename.c_str());
|
||||
mesh -> Load(infile);
|
||||
|
||||
#ifdef PARALLEL
|
||||
MyMPI_SendCmd ("mesh");
|
||||
mesh -> Distribute();
|
||||
#endif
|
||||
|
||||
for (int i = 0; i < geometryregister.Size(); i++)
|
||||
{
|
||||
NetgenGeometry * hgeom = geometryregister[i]->LoadFromMeshFile (infile);
|
||||
|
@ -2,9 +2,6 @@
|
||||
|
||||
#include "dlfcn.h"
|
||||
|
||||
#ifdef OCCGEOMETRY
|
||||
#include <occgeom.hpp>
|
||||
#endif
|
||||
|
||||
// #include <mystdlib.h>
|
||||
|
||||
@ -30,23 +27,16 @@
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
#include <geometry2d.hpp>
|
||||
#include <stlgeom.hpp>
|
||||
|
||||
// #include <incvis.hpp>
|
||||
// #include <visual.hpp>
|
||||
// #include <mystdlib.h>
|
||||
// #include <myadt.hpp>
|
||||
// #include <linalg.hpp>
|
||||
// #include <csg.hpp>
|
||||
|
||||
*/
|
||||
|
||||
|
||||
#include <meshing.hpp>
|
||||
|
||||
// #include "parallel.hpp"
|
||||
#include "parallelfunc.hpp"
|
||||
// #include "parallelfunc.hpp"
|
||||
|
||||
|
||||
// extern "C" void NGS_ParallelRun (const string & message);
|
||||
@ -72,6 +62,7 @@ namespace netgen {
|
||||
extern AutoPtr<Mesh> mesh;
|
||||
extern VisualSceneMesh vsmesh;
|
||||
extern Flags parameters;
|
||||
extern DLL_HEADER MeshingParameters mparam;
|
||||
}
|
||||
|
||||
using namespace netgen;
|
||||
|
@ -1,3 +1,7 @@
|
||||
das braucht keiner mehr
|
||||
|
||||
|
||||
|
||||
#ifndef FILE_PARALLELFUNC
|
||||
#define FILE_PARALLELFUNC
|
||||
|
||||
|
@ -5,7 +5,7 @@ dist_pkgdata_DATA = cube.surf
|
||||
AM_CPPFLAGS = -I$(top_srcdir)/libsrc/include $(MPI_INCLUDES) $(OCCFLAGS)
|
||||
|
||||
lib_LTLIBRARIES = libnglib.la
|
||||
libnglib_la_SOURCES = nglib.cpp
|
||||
libnglib_la_SOURCES = nglib.cpp parallelfunc.cpp
|
||||
|
||||
libnglib_la_LIBADD = \
|
||||
$(top_builddir)/libsrc/interface/libinterface.la \
|
||||
|
@ -31,20 +31,14 @@ namespace netgen {
|
||||
MeshingParameters & mp);
|
||||
}
|
||||
|
||||
namespace netgen
|
||||
{
|
||||
int id, ntasks;
|
||||
}
|
||||
|
||||
|
||||
#ifdef PARALLEL
|
||||
#ifdef PARALLELxxx
|
||||
#include <mpi.h>
|
||||
|
||||
namespace netgen
|
||||
{
|
||||
// MPI_Group MPI_HIGHORDER_WORLD;
|
||||
// MPI_Comm MPI_HIGHORDER_COMM;
|
||||
MPI_Comm mesh_comm;
|
||||
// MPI_Comm mesh_comm;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user