Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
A
amdis
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Backofen, Rainer
amdis
Commits
1829f405
Commit
1829f405
authored
Mar 17, 2011
by
Thomas Witkowski
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Deleted not used files. Moved compisteFEM to src directory. Work on Makefiles.
parent
1efe388f
Changes
32
Hide whitespace changes
Inline
Side-by-side
Showing
32 changed files
with
998 additions
and
2850 deletions
+998
-2850
AMDiS/src/ElInfo.h
AMDiS/src/ElInfo.h
+1
-1
AMDiS/src/Makefile.am
AMDiS/src/Makefile.am
+117
-106
AMDiS/src/Makefile.in
AMDiS/src/Makefile.in
+787
-740
AMDiS/src/MpCCIAdapter.cc
AMDiS/src/MpCCIAdapter.cc
+0
-576
AMDiS/src/MpCCIAdapter.h
AMDiS/src/MpCCIAdapter.h
+0
-110
AMDiS/src/PardisoSolver.cc
AMDiS/src/PardisoSolver.cc
+0
-223
AMDiS/src/PardisoSolver.h
AMDiS/src/PardisoSolver.h
+0
-113
AMDiS/src/PardisoSolver.hh
AMDiS/src/PardisoSolver.hh
+0
-27
AMDiS/src/QPInfo.cc
AMDiS/src/QPInfo.cc
+57
-46
AMDiS/src/QPInfo.h
AMDiS/src/QPInfo.h
+36
-99
AMDiS/src/SMIAdapter.cc
AMDiS/src/SMIAdapter.cc
+0
-676
AMDiS/src/SMIAdapter.h
AMDiS/src/SMIAdapter.h
+0
-133
AMDiS/src/compositeFEM/CFE_Integration.cc
AMDiS/src/compositeFEM/CFE_Integration.cc
+0
-0
AMDiS/src/compositeFEM/CFE_Integration.h
AMDiS/src/compositeFEM/CFE_Integration.h
+0
-0
AMDiS/src/compositeFEM/CFE_NormAndErrorFcts.cc
AMDiS/src/compositeFEM/CFE_NormAndErrorFcts.cc
+0
-0
AMDiS/src/compositeFEM/CFE_NormAndErrorFcts.h
AMDiS/src/compositeFEM/CFE_NormAndErrorFcts.h
+0
-0
AMDiS/src/compositeFEM/CompositeFEMMethods.cc
AMDiS/src/compositeFEM/CompositeFEMMethods.cc
+0
-0
AMDiS/src/compositeFEM/CompositeFEMMethods.h
AMDiS/src/compositeFEM/CompositeFEMMethods.h
+0
-0
AMDiS/src/compositeFEM/CompositeFEMOperator.cc
AMDiS/src/compositeFEM/CompositeFEMOperator.cc
+0
-0
AMDiS/src/compositeFEM/CompositeFEMOperator.h
AMDiS/src/compositeFEM/CompositeFEMOperator.h
+0
-0
AMDiS/src/compositeFEM/ElementLevelSet.cc
AMDiS/src/compositeFEM/ElementLevelSet.cc
+0
-0
AMDiS/src/compositeFEM/ElementLevelSet.h
AMDiS/src/compositeFEM/ElementLevelSet.h
+0
-0
AMDiS/src/compositeFEM/LevelSetAdaptMesh.cc
AMDiS/src/compositeFEM/LevelSetAdaptMesh.cc
+0
-0
AMDiS/src/compositeFEM/LevelSetAdaptMesh.h
AMDiS/src/compositeFEM/LevelSetAdaptMesh.h
+0
-0
AMDiS/src/compositeFEM/PenaltyOperator.cc
AMDiS/src/compositeFEM/PenaltyOperator.cc
+0
-0
AMDiS/src/compositeFEM/PenaltyOperator.h
AMDiS/src/compositeFEM/PenaltyOperator.h
+0
-0
AMDiS/src/compositeFEM/SubElementAssembler.cc
AMDiS/src/compositeFEM/SubElementAssembler.cc
+0
-0
AMDiS/src/compositeFEM/SubElementAssembler.h
AMDiS/src/compositeFEM/SubElementAssembler.h
+0
-0
AMDiS/src/compositeFEM/SubPolytope.cc
AMDiS/src/compositeFEM/SubPolytope.cc
+0
-0
AMDiS/src/compositeFEM/SubPolytope.h
AMDiS/src/compositeFEM/SubPolytope.h
+0
-0
AMDiS/src/compositeFEM/TranslateLsFct.h
AMDiS/src/compositeFEM/TranslateLsFct.h
+0
-0
AMDiS/src/compositeFEM/compositeFEM.h
AMDiS/src/compositeFEM/compositeFEM.h
+0
-0
No files found.
AMDiS/src/ElInfo.h
View file @
1829f405
...
...
@@ -230,7 +230,7 @@ namespace AMDiS {
}
/// Returns \ref parametric
inline
bool
getParametric
()
inline
bool
getParametric
()
const
{
return
parametric
;
}
...
...
AMDiS/src/Makefile.am
View file @
1829f405
...
...
@@ -2,10 +2,8 @@ lib_LTLIBRARIES = libamdis.la libcompositeFEM.la
LIB_DIR
=
../lib
PARALLEL_DIR
=
$(SOURCE_DIR)
PARMETIS_DIR
=
../lib/ParMetis-3.1
AMDIS_INCLUDES
=
-I
$(SOURCE_DIR)
AMDIS_INCLUDES
=
libamdis_la_CXXFLAGS
=
...
...
@@ -14,18 +12,17 @@ PARALLEL_INCLUDES =
if
USE_PARALLEL_DOMAIN_AMDIS
PARALLEL_AMDIS_SOURCES
+=
\
parallel/StdMpi.h parallel/StdMpi.cc
\
parallel/ParMetisPartitioner.h parallel/ParMetisPartitioner.cc
\
parallel/ZoltanPartitioner.h parallel/ZoltanPartitioner.cc
\
parallel/MeshDistributor.h parallel/MeshDistributor.cc
\
parallel/MeshPartitioner.h parallel/MeshPartitioner.cc
\
parallel/MeshManipulation.h parallel/MeshManipulation.cc
\
parallel/ParallelDebug.h parallel/ParallelDebug.cc
\
parallel/ParallelProblemStatBase.h
\
parallel/ElementObjectData.cc
\
parallel/MeshDistributor.cc
\
parallel/MeshManipulation.cc
\
parallel/MeshPartitioner.cc
\
parallel/MpiHelper.cc
\
parallel/ParallelDebug.cc
\
parallel/ParallelProblemStatBase.cc
\
parallel/PetscSolver.h parallel/PetscSolver.cc
\
parallel/MpiHelper.h parallel/MpiHelper.cc
\
parallel/ElementObjectData.h parallel/ElementObjectData.cc
parallel/ParMetisPartitioner.cc
\
parallel/PetscSolver.cc
\
parallel/StdMpi.cc
\
parallel/ZoltanPartitioner.cc
libamdis_la_CXXFLAGS
+=
-DHAVE_PARALLEL_DOMAIN_AMDIS
=
1
AMDIS_INCLUDES
+=
-I
$(PARMETIS_DIR)
AMDIS_INCLUDES
+=
-I
$(PETSC_DIR)
/include
-I
$(PETSC_DIR)
/
$(PETSC_ARCH)
/include
...
...
@@ -136,7 +133,6 @@ MatrixVector.h \
Mesh.h
\
MeshStructure.h
\
MeshStructure_ED.h
\
MpCCIAdapter.h
\
Newton.h
\
Newton.hh
\
NewtonS.h
\
...
...
@@ -152,8 +148,6 @@ OperatorTerm.h \
OperatorTerm.hh
\
Parameters.h
\
Parametric.h
\
PardisoSolver.h
\
PardisoSolver.hh
\
PeriodicBC.h
\
PeriodicConnection.h
\
PeriodicInfo.h
\
...
...
@@ -185,7 +179,6 @@ ResidualEstimator.h \
ResidualParallelEstimator.h
\
RobinBC.h
\
RobinBC.hh
\
SMIAdapter.h
\
ScalableQuadrature.h
\
SecondOrderAssembler.h
\
SecondOrderTerm.h
\
...
...
@@ -214,6 +207,17 @@ VertexInfo.h \
VertexVector.h
\
ZeroOrderAssembler.h
\
ZeroOrderTerm.h
\
compositeFEM/CFE_Integration.h
\
compositeFEM/CFE_NormAndErrorFcts.h
\
compositeFEM/CompositeFEMMethods.h
\
compositeFEM/CompositeFEMOperator.h
\
compositeFEM/ElementLevelSet.h
\
compositeFEM/LevelSetAdaptMesh.h
\
compositeFEM/PenaltyOperator.h
\
compositeFEM/SubElementAssembler.h
\
compositeFEM/SubPolytope.h
\
compositeFEM/TranslateLsFct.h
\
compositeFEM/compositeFEM.h
\
io/ArhReader.h
\
io/ArhWriter.h
\
io/DataCollector.h
\
...
...
@@ -228,141 +232,148 @@ io/MacroReader.h \
io/MacroWriter.h
\
io/PngWriter.h
\
io/PovrayWriter.h
\
io/ValueReader.h
\
io/ValueReader.h
\
io/ValueWriter.h
\
io/VtkWriter.h
\
io/VtkWriter.hh
\
itl/minres.hpp
\
parallel/ElementObjectData.h
\
parallel/InteriorBoundary.h
\
parallel/MeshDistributor.h
\
parallel/MeshManipulation.h
\
parallel/MeshPartitioner.h
\
parallel/MpiHelper.h
\
parallel/ParallelDebug.h
\
parallel/ParallelProblemStatBase.h
\
parallel/ParMetisPartitioner.h
\
parallel/PetscSolver.h
\
parallel/StdMpi.h
\
parallel/ZoltanPartitioner.h
\
time
/RosenbrockAdaptInstationary.h
\
time
/RosenbrockStationary.h
\
time
/RosenbrockMethod.h
libamdis_la_SOURCES
=
\
$(PARALLEL_AMDIS_SOURCES)
\
DOFIndexed.cc
\
io/GNUPlotWriter.cc
\
VertexVector.cc
\
PeriodicBC.cc
\
Recovery.cc
\
RecoveryEstimator.cc
\
ResidualEstimator.cc
\
Cholesky.cc
\
AdaptBase.cc
\
StandardProblemIteration.cc
\
ProblemScal.cc
\
ProblemVec.cc
\
ProblemVecDbg.cc
\
DualTraverse.cc
\
ElementData.cc
\
ComponentTraverseInfo.cc
\
CreatorMap.cc
\
ProblemInterpolScal.cc
\
ProblemInterpolVec.cc
\
Serializer.cc
\
io/MacroInfo.cc
\
io/MacroReader.cc
\
io/ValueReader.cc
\
Projection.cc
\
SubAssembler.cc
\
ZeroOrderAssembler.cc
\
FirstOrderAssembler.cc
\
SecondOrderAssembler.cc
\
Assembler.cc
\
AdaptInfo.cc
\
Marker.cc
\
SurfaceQuadrature.cc
\
LeafData.cc
\
BoundaryManager.cc
\
DirichletBC.cc
\
RobinBC.cc
\
io/FileWriter.cc
\
io/ElementFileWriter.cc
\
ElInfo.cc
\
ElInfoStack.cc
\
OperatorTerm.cc
\
ZeroOrderTerm.cc
\
FirstOrderTerm.cc
\
SecondOrderTerm.cc
\
Operator.cc
\
Mesh.cc
\
MeshStructure.cc
\
AdaptStationary.cc
\
AdaptInstationary.cc
\
DOFVector.cc
\
Estimator.cc
\
ProblemInstat.cc
\
ProblemNonLin.cc
\
NonLinUpdater.cc
\
QPsiPhi.cc
\
AdaptStationary.cc
\
Assembler.cc
\
BasisFunction.cc
\
Boundary.cc
\
BoundaryManager.cc
\
Cholesky.cc
\
CoarseningManager.cc
\
CoarseningManager1d.cc
\
CoarseningManager2d.cc
\
CoarseningManager3d.cc
\
ComponentTraverseInfo.cc
\
CreatorMap.cc
\
DOFAdmin.cc
\
DOFIndexed.cc
\
DOFMatrix.cc
\
Element.cc
\
DOFVector.cc
\
Debug.cc
\
DirichletBC.cc
\
DualTraverse.cc
\
ElInfo.cc
\
ElInfo1d.cc
\
ElInfo2d.cc
\
ElInfo3d.cc
\
ElInfoStack.cc
\
Element.cc
\
ElementData.cc
\
ElementDofIterator.cc
\
Estimator.cc
\
FiniteElemSpace.cc
\
FirstOrderAssembler.cc
\
FirstOrderTerm.cc
\
FixVec.cc
\
Global.cc
\
GlobalDOFNumbering.cc
\
GlobalElementNumbering.cc
\
Lagrange.cc
\
LeafData.cc
\
Line.cc
\
MacroElement.cc
\
io/MacroWriter.cc
\
Marker.cc
\
Mesh.cc
\
MeshStructure.cc
\
NonLinUpdater.cc
\
Operator.cc
\
OperatorTerm.cc
\
Parameters.cc
\
Parametric.cc
\
PeriodicBC.cc
\
ProblemImplicit.cc
\
ProblemInstat.cc
\
ProblemInterpolScal.cc
\
ProblemInterpolVec.cc
\
ProblemNonLin.cc
\
ProblemScal.cc
\
ProblemVec.cc
\
ProblemVecDbg.cc
\
Projection.cc
\
QPInfo.cc
\
QPsiPhi.cc
\
Quadrature.cc
\
RCNeighbourList.cc
\
Recovery.cc
\
RecoveryEstimator.cc
\
RefinementManager.cc
\
RefinementManager1d.cc
\
RefinementManager2d.cc
\
RefinementManager3d.cc
\
ResidualEstimator.cc
\
ResidualParallelEstimator.cc
\
RobinBC.cc
\
ScalableQuadrature.cc
\
SecondOrderAssembler.cc
\
SecondOrderTerm.cc
\
Serializer.cc
\
StandardProblemIteration.cc
\
SubAssembler.cc
\
SubElInfo.cc
\
SubQuadrature.cc
\
SurfaceQuadrature.cc
\
Tetrahedron.cc
\
Traverse.cc
\
TraverseParallel.cc
\
Triangle.cc
\
io/ValueWriter.cc
\
io/VtkWriter.cc
\
VertexVector.cc
\
ZeroOrderAssembler.cc
\
ZeroOrderTerm.cc
\
io/ArhReader.cc
\
io/ArhWriter.cc
\
io/DataCollector.cc
\
io/DofWriter.cc
\
io/ElementFileWriter.cc
\
io/FileWriter.cc
\
io/GNUPlotWriter.cc
\
io/MacroInfo.cc
\
io/MacroReader.cc
\
io/MacroWriter.cc
\
io/PngWriter.cc
\
io/PovrayWriter.cc
\
io/DataCollector.cc
\
ScalableQuadrature.cc
\
SubElInfo.cc
\
ElementDofIterator.cc
\
parallel/InteriorBoundary.cc
\
Debug.cc
\
io/ArhReader.cc
\
io/ArhWriter.cc
\
io/ValueReader.cc
\
io/ValueWriter.cc
\
io/VtkWriter.cc
\
time
/RosenbrockAdaptInstationary.cc
\
time
/RosenbrockStationary.cc
\
time
/RosenbrockMethod.cc
COMPOSITE_SOURCE_DIR
=
../compositeFEM/src
time
/RosenbrockMethod.cc
\
time
/RosenbrockStationary.cc
libcompositeFEM_la_CXXFLAGS
=
$(libamdis_la_CXXFLAGS)
libcompositeFEM_la_SOURCES
=
$(COMPOSITE_SOURCE_DIR)
/CFE_Integration.h
\
$(COMPOSITE_SOURCE_DIR)
/CFE_Integration.cc
\
$(COMPOSITE_SOURCE_DIR)
/CFE_NormAndErrorFcts.h
\
$(COMPOSITE_SOURCE_DIR)
/CFE_NormAndErrorFcts.cc
\
$(COMPOSITE_SOURCE_DIR)
/CompositeFEMMethods.h
\
$(COMPOSITE_SOURCE_DIR)
/CompositeFEMMethods.cc
\
$(COMPOSITE_SOURCE_DIR)
/LevelSetAdaptMesh.h
\
$(COMPOSITE_SOURCE_DIR)
/LevelSetAdaptMesh.cc
\
$(COMPOSITE_SOURCE_DIR)
/PenaltyOperator.h
\
$(COMPOSITE_SOURCE_DIR)
/PenaltyOperator.cc
\
$(COMPOSITE_SOURCE_DIR)
/ElementLevelSet.h
\
$(COMPOSITE_SOURCE_DIR)
/ElementLevelSet.cc
\
$(COMPOSITE_SOURCE_DIR)
/CompositeFEMOperator.h
\
$(COMPOSITE_SOURCE_DIR)
/CompositeFEMOperator.cc
\
$(COMPOSITE_SOURCE_DIR)
/SubPolytope.h
$(COMPOSITE_SOURCE_DIR)
/SubPolytope.cc
\
$(COMPOSITE_SOURCE_DIR)
/SubElementAssembler.h
\
$(COMPOSITE_SOURCE_DIR)
/SubElementAssembler.cc
\
$(COMPOSITE_SOURCE_DIR)
/TranslateLsFct.h
libcompositeFEM_la_CXXFLAGS
=
$(libamdis_la_CXXFLAGS)
libcompositeFEM_la_SOURCES
=
\
compositeFEM/CFE_Integration.cc
\
compositeFEM/CFE_NormAndErrorFcts.cc
\
compositeFEM/CompositeFEMMethods.cc
\
compositeFEM/CompositeFEMOperator.cc
\
compositeFEM/ElementLevelSet.cc
\
compositeFEM/LevelSetAdaptMesh.cc
\
compositeFEM/PenaltyOperator.cc
\
compositeFEM/SubElementAssembler.cc
\
compositeFEM/SubPolytope.cc
AMDiS/src/Makefile.in
View file @
1829f405
This source diff could not be displayed because it is too large. You can
view the blob
instead.
AMDiS/src/MpCCIAdapter.cc
deleted
100644 → 0
View file @
1efe388f
//
// Software License for AMDiS
//
// Copyright (c) 2010 Dresden University of Technology
// All rights reserved.
// Authors: Simon Vey, Thomas Witkowski et al.
//
// This file is part of AMDiS
//
// See also license.opensource.txt in the distribution.
#include "MpCCIAdapter.h"
#include "FiniteElemSpace.h"
#include "SMIAdapter.h"
#include "DOFVector.h"
#include "mpi.h"
namespace
AMDiS
{
MpCCIAdapter
::
MpCCIAdapter
(
int
localComm
,
int
meshID
,
int
partitionID
,
bool
useMPI
,
FiniteElemSpace
*
feSpace
,
int
elementRegion
,
int
surfaceRegion
,
int
numQuantities
,
int
*
quantityIDs
,
int
*
quantityDims
,
DOFVector
<
double
>
**
dofVectors
,
int
numSyncPoints
,
int
*
syncPointIDs
,
const
char
*
idString
,
bool
(
*
elementFct
)(
ElInfo
*
elInfo
),
bool
(
*
surfaceFct
)(
ElInfo
*
elInfo
,
int
side
))
:
localComm_
(
localComm
),
feSpace_
(
feSpace
),
applicationID_
(
1
),
meshID_
(
meshID
),
partitionID_
(
partitionID
),
useMPI_
(
useMPI
)
{
FUNCNAME
(
"MpCCIAdapter::MpCCIAdapter()"
);
int
i
;
mpiRank_
=
useMPI_
?
MPI
::
COMM_WORLD
.
Get_rank
()
:
0
;
mpiSize_
=
useMPI_
?
MPI
::
COMM_WORLD
.
Get_size
()
:
1
;
TEST_EXIT
(
surfaceRegion
==
-
1
)(
"not yet for surface regions
\n
"
);
// create SMI adapter
smiAdapter_
=
new
SMIAdapter
(
applicationID_
,
meshID_
,
feSpace_
,
elementRegion
,
surfaceRegion
,
elementFct
,
surfaceFct
);
// MpCCI initialize
//if(useMPI_) MPI::COMM_WORLD.Barrier();
//if(mpiRank_ == 0) {
int
error
;
if
(
idString
)
{
error
=
CCI_Init_with_id_string
(
NULL
,
NULL
,
idString
);
TEST_EXIT
(
error
==
0
)
(
"CCI_Init_with_id_string() failed
\n
"
);
}
else
{
error
=
CCI_Init
(
NULL
,
NULL
);
TEST_EXIT
(
error
==
0
)(
"CCI_Init() failed
\n
"
);
}
//}
//if(useMPI_) MPI::COMM_WORLD.Barrier();
//}
//if(useMPI_) MPI::COMM_WORLD.Barrier();
localCodeID_
=
CCI_MYCODEID
;
int
remoteCodeID
=
(
localCodeID_
==
1
)
?
2
:
1
;
// define communicator
int
sendQuantities
[
CCI_MAX_NQUANTITIES
];
int
sendMeshes
[
CCI_MAX_NQUANTITIES
];
int
sendNQuantities
;
int
recvQuantities
[
CCI_MAX_NQUANTITIES
];
int
recvMeshes
[
CCI_MAX_NQUANTITIES
];
int
recvNQuantities
;
if
(
localComm
==
-
1
)
{
localComm_
=
CCI_COMM_RCODE
[
remoteCodeID
];
}
else
{
error
=
CCI_Comm_info
(
localComm_
,
&
remoteCodeID_
,
&
remoteComm_
,
CCI_MAX_NQUANTITIES
,
sendQuantities
,
sendMeshes
,
&
sendNQuantities
,
CCI_MAX_NQUANTITIES
,
recvQuantities
,
recvMeshes
,
&
recvNQuantities
);
TEST_EXIT
(
error
)(
"CCI_Comm_info() failed
\n
"
);
MSG
(
"remote comm id: %d
\n
"
,
remoteComm_
);
error
=
CCI_Def_comm
(
localComm_
,
remoteCodeID_
,
remoteComm_
,
numQuantities
,
quantityIDs
,
1
,
&
meshID_
);
TEST_EXIT
(
error
)(
"CCI_Def_comm() failed
\n
"
);
}
error
=
CCI_Def_partition
(
meshID_
,
partitionID_
);
TEST_EXIT
(
error
==
0
)(
"CCI_Def_partition() failed
\n
"
);
transferMeshToMpCCI
();
for
(
i
=
0
;
i
<
numSyncPoints
;
i
++
)
{
error
=
CCI_Sync_point_info
(
syncPointIDs
[
i
],
CCI_MAX_NQUANTITIES
,
sendQuantities
,
sendMeshes
,
&
sendNQuantities
,
CCI_MAX_NQUANTITIES
,
recvQuantities
,
recvMeshes
,
&
recvNQuantities
);
TEST_EXIT
(
error
==
0
)(
"CCI_Sync_point_info() failed
\n
"
);
MSG
(
"sync point id: %d
\n
"
,
syncPointIDs
[
i
]);
int
j
;
for
(
j
=
0
;
j
<
sendNQuantities
;
j
++
)
{
MSG
(
"send quantity: %d
\n
"
,
sendQuantities
[
j
]);
}
for
(
j
=
0
;
j
<
recvNQuantities
;
j
++
)
{
MSG
(
"recv quantity: %d
\n
"
,
recvQuantities
[
j
]);
}
error
=
CCI_Def_sync_point
(
syncPointIDs
[
i
],
sendNQuantities
,
sendQuantities
,
sendNQuantities
,
sendMeshes
,
recvNQuantities
,
recvQuantities
,
recvNQuantities
,
recvMeshes
);
TEST_EXIT
(
error
==
0
)(
"CCI_Def_sync_point() failed
\n
"
);
}
// define quantities
DOFVector
<
double
>
**
ptr
=
dofVectors
;
for
(
i
=
0
;
i
<
numQuantities
;
i
++
)
{
int
dim
=
quantityDims
[
i
];
smiAdapter_
->
addQuantity
(
quantityIDs
[
i
],
dim
,
ptr
);
ptr
+=
dim
;
}
// close MpCCI setup
int
error
=
CCI_Close_setup
(
localCodeID_
);
TEST_EXIT
(
error
==
0
)(
"CCI_Close_setup() failed
\n
"
);
}
MpCCIAdapter
::~
MpCCIAdapter
()
{
delete
smiAdapter_
;
int
error
==
CCI_Finalize
();
TEST_EXIT
(
error
==
0
)(
"CCI_Finalize() failed
\n
"
);
}
void
MpCCIAdapter
::
transferMeshToMpCCI
()
{
// update SMI data
smiAdapter_
->
transferMeshToSMI
();
// read SMI data
int
error
;
int
dow
=
Global
::
getGeo
(
WORLD
);
int
dim
=
feSpace_
->
getMesh
()
->
getDim
();
int
numNodes
;
int
*
nodeIDs
;
double
*
coords
;
int
numElems
;
int
*
elemIDs
;
int
numElemNodeIDs
;
int
*
elemNodeIDs
;
int
elemType
;
int
*
nodesPerElem
;
error
=
SMI_Begin_read_transaction
(
applicationID_
,
meshID_
);
TEST_EXIT
(
error
==
SMI_OK
)(
"SMI_Begin_read_transaction() failed
\n
"
);
error
=
SMI_Get_all_nodes
(
applicationID_
,
meshID_
,
&
numNodes
,
&
nodeIDs
);
TEST_EXIT
(
error
==
SMI_OK
)(
"SMI_Get_all_nodes() failed
\n
"
);
coords
=
new
double
[
numNodes
*
dow
];
error
=
SMI_Get_nodes
(
applicationID_
,
meshID_
,
numNodes
,
dow
,
nodeIDs
,
coords
);
TEST_EXIT
(
error
==
SMI_OK
)(
"SMI_Get_nodes() failed (%d)
\n
"
,
error
);
error
=
SMI_Get_all_elems
(
applicationID_
,
meshID_
,
&
numElems
,
&
elemIDs
);
TEST_EXIT
(
error
==
SMI_OK
)(
"SMI_Get_all_elems() failed
\n
"
);
error
=
SMI_Get_elems
(
applicationID_
,
meshID_
,
numElems
,
elemIDs
,
&
numElemNodeIDs
,
&
elemNodeIDs
,
NULL
,
NULL
);
TEST_EXIT
(
error
==
SMI_OK
)(
"SMI_Get_elems() failed
\n
"
);
switch
(
dim
)
{
case
1
:
elemType
=
CCI_ELEM_LINE
;
break
;
case
2
:
elemType
=
CCI_ELEM_TRIANGLE
;
break
;
case
3
:
elemType
=
CCI_ELEM_TETRAHEDRON
;
break
;
default:
ERROR_EXIT
(
"invalid dim
\n
"
);
}
nodesPerElem
=
new
int
[
numElems
];
for
(
int
i
=
0
;
i
<
numElems
;
i
++
)
nodesPerElem
[
i
]
=
dim
+
1
;
error
=
SMI_End_read_transaction
(
applicationID_
,
meshID_
);
TEST_EXIT
(
error
==
SMI_OK
)(
"SMI_End_read_transaction() failed
\n
"
);
// transfer data to MpCCI
error
=
CCI_Def_nodes
(
meshID_
,
partitionID_
,
dow
,
numNodes
,
numNodes
,
nodeIDs
,
CCI_DOUBLE
,
coords
);
TEST_EXIT
(
error
==
0
)(
"CCI_Def_nodes() failed
\n
"
);
error
=
CCI_Def_elems
(
meshID_
,
partitionID_
,
numElems
,
numElems
,
elemIDs
,
1
,
&
elemType
,
nodesPerElem
,
elemNodeIDs
);
TEST_EXIT
(
error
==
0
)(
"CCI_Def_elems() failed
\n
"
);
// free memory
delete
[]
coords
;
delete
[]
nodesPerElem
;
}
void
MpCCIAdapter
::
remesh
()
{
int
error
;
error
=
CCI_Remesh
();
TEST_EXIT
(
error
==
0
)(
"CCI_Remesh() failed
\n
"
);
transferMeshToMpCCI
();
int
mode
=
CCI_TOTAL_REMESH
;
error
=
CCI_Close_remesh
(
1
,
&
meshID_
,
1
,
&
mode
);
TEST_EXIT
(
error
==
0
)(
"CCI_Close_remesh() failed
\n
"
);
}
void
MpCCIAdapter
::
checkConvergence
(
int
myConvergence
,
int
*
globalConvergence
)
{
int
error
=
CCI_Check_convergence
(
myConvergence
,
globalConvergence
,
CCI_ANY_CODE
);
//localComm_);
TEST_EXIT
(
error
==
0
)(
"CCI_Check_convergence() failed
\n
"
);
}
void
MpCCIAdapter
::
putNodes
(
int
quantityID
)
{
int
error
;
int
numNodes
;
int
dim
;
int
*
nodeIDs
;
double
*
values
;
smiAdapter_
->
transferQuantitiesToSMI
(
quantityID
);
error
=
SMI_Begin_read_transaction
(
applicationID_
,
meshID_
);
TEST_EXIT
(
error
==
SMI_OK
)(
"SMI_Begin_read_transaction() failed
\n
"
);