Skip to content
This repository was archived by the owner on May 9, 2022. It is now read-only.

Commit 0c8d0da

Browse files
author
David Blom
committed
Merge pull request #165 from davidsblom/travis
Use wercker for continuous integration
2 parents 8e3daba + b51480f commit 0c8d0da

File tree

207 files changed

+1671
-712
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

207 files changed

+1671
-712
lines changed

Allclean

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,5 +26,9 @@ wclean applications/solvers/fsi/fluidFoam
2626
wclean applications/solvers/fsi/solidFoam
2727
wclean applications/solvers/fsi/fsiFluidFoam
2828
wclean applications/solvers/fsi/fsiSolidFoam
29-
wclean src/tests/app
29+
wclean src/tests/testsuite-dealii
30+
wclean src/tests/testsuite-fsi
31+
wclean src/tests/testsuite-rbf
32+
wclean src/tests/testsuite-sdc
33+
wclean src/tests/testsuite-spacemapping
3034
wclean src/tests/tubeflow

Allwmake

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,11 @@ wmake applications/solvers/unsteadyPUCoupledFoam
3030
wmake applications/solvers/fsi/fsiFoam
3131
wmake applications/solvers/fsi/solidFoam
3232
wmake applications/solvers/fsi/fluidFoam
33-
wmake src/tests/app
33+
wmake src/tests/testsuite-dealii
34+
wmake src/tests/testsuite-fsi
35+
wmake src/tests/testsuite-rbf
36+
wmake src/tests/testsuite-sdc
37+
wmake src/tests/testsuite-spacemapping
3438
wmake src/tests/tubeflow
3539
wmake applications/solvers/fsi/fsiSolidFoam
3640
wmake applications/solvers/fsi/fsiFluidFoam

README.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
FOAM-FSI
22
========
33

4+
[![wercker status](https://app.wercker.com/status/80ce1a6b7a23e394c5f07a3f27b5b43e/s/master "wercker status")](https://app.wercker.com/project/bykey/80ce1a6b7a23e394c5f07a3f27b5b43e)
5+
46
Features
57
-----------
68

@@ -41,6 +43,12 @@ With this grep command, you can ensure that the `mpicxx` compiler is used during
4143
sed -i s/"CC = g++ -m64"/"CC = mpicxx -m64"/g foam-extend-3.2/wmake/rules/linux64Gcc/c++
4244
```
4345

46+
Set the environment variable `$FOAM_INST_DIR` in case foam-extend is installed in a non-standard location:
47+
48+
``` bash
49+
export FOAM_INST_DIR=`pwd`
50+
```
51+
4452
Finally, the compilation process of `foam-extend` is started with
4553

4654
``` bash

applications/solvers/fsi/fluidFoam/fluidFoam.C

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ int main(
179179
int minSweeps = piesConfig["min-sweeps"].as<int>();
180180
int maxSweeps = piesConfig["max-sweeps"].as<int>();
181181

182-
timeSolver = std::shared_ptr<sdc::TimeIntegrationScheme> ( new sdc::PIES( solver, rho, delta, tol, minSweeps, maxSweeps ) );
182+
timeSolver = std::shared_ptr<sdc::TimeIntegrationScheme> ( new sdc::PIES<boost::multiprecision::cpp_dec_float_50>( solver, rho, delta, tol, minSweeps, maxSweeps ) );
183183
}
184184
}
185185

applications/solvers/fsi/fsiFoam/Make/options

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ EXE_INC = -std=c++11 \
2020
-isystem ../../../../src/thirdParty/yaml-cpp/include \
2121
-isystem ../../../../src/RBFMeshMotionSolver/lnInclude/ \
2222
$(WM_DECOMP_INC) \
23-
-isystem $(LIB_SRC)/tetFiniteElement/lnInclude \
2423
-isystem ../../../../src/thirdParty/boost \
2524
-isystem ../../../../src/boundaryConditions/lnInclude \
2625
-isystem ../../../../src/thirdParty/deal-fsi/include \
@@ -36,22 +35,17 @@ EXE_LIBS = \
3635
-ldynamicFvMesh \
3736
-ltopoChangerFvMesh \
3837
-ldynamicMesh \
39-
-lmeshTools \
4038
-lfiniteVolume \
4139
-lincompressibleTransportModels \
4240
-lincompressibleTurbulenceModel \
4341
-lincompressibleRASModels \
4442
-lincompressibleLESModels \
45-
-llduSolvers \
4643
-lfvSchemes \
4744
-lboundaryConditions \
4845
-lsolidModels \
49-
-lsampling \
50-
-llagrangian \
5146
-lyaml-cpp \
5247
-lRBFMeshMotionSolver \
5348
-lfsi \
54-
-ltetFiniteElement \
5549
-lbasicThermophysicalModels \
5650
-lspecie \
5751
-lcompressibleRASModels \

applications/solvers/fsi/fsiFoam/fsiFoam.C

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -848,7 +848,7 @@ int main(
848848
int minSweeps = piesConfig["min-sweeps"].as<int>();
849849
int maxSweeps = piesConfig["max-sweeps"].as<int>();
850850

851-
timeSolver = std::shared_ptr<sdc::TimeIntegrationScheme> ( new sdc::PIES( sdcFsiSolver, rho, delta, tol, minSweeps, maxSweeps ) );
851+
timeSolver = std::shared_ptr<sdc::TimeIntegrationScheme> ( new sdc::PIES<boost::multiprecision::cpp_dec_float_50>( sdcFsiSolver, rho, delta, tol, minSweeps, maxSweeps ) );
852852
}
853853

854854
assert( timeSolver );

applications/solvers/fsi/solidFoam/solidFoam.C

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ int main(
151151
int minSweeps = piesConfig["min-sweeps"].as<int>();
152152
int maxSweeps = piesConfig["max-sweeps"].as<int>();
153153

154-
timeSolver = std::shared_ptr<sdc::TimeIntegrationScheme> ( new sdc::PIES( solver, rho, delta, tol, minSweeps, maxSweeps ) );
154+
timeSolver = std::shared_ptr<sdc::TimeIntegrationScheme> ( new sdc::PIES<boost::multiprecision::cpp_dec_float_50>( solver, rho, delta, tol, minSweeps, maxSweeps ) );
155155
}
156156

157157
assert( solid || timeSolver );

src/fsi/ClenshawCurtis.C

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
2+
#include "ClenshawCurtis.H"
3+
#include "fvCFD.H"
4+
5+
namespace fsi
6+
{
7+
namespace quadrature
8+
{
9+
template class ClenshawCurtis<scalar>;
10+
}
11+
}

src/fsi/DataStorage.C

Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
2+
/*
3+
* Author
4+
* David Blom, TU Delft. All rights reserved.
5+
*/
6+
7+
#include "DataStorage.H"
8+
9+
namespace sdc
10+
{
11+
DataStorage::DataStorage(
12+
std::shared_ptr<fsi::quadrature::IQuadrature<scalar> > quadrature,
13+
int N )
14+
:
15+
quadrature( quadrature ),
16+
F( quadrature->get_num_nodes(), N ),
17+
solStages( quadrature->get_num_nodes(), N )
18+
{
19+
assert( quadrature );
20+
}
21+
22+
DataStorage::~DataStorage()
23+
{
24+
25+
}
26+
27+
const fsi::matrix DataStorage::integrate( const std::vector<scalar> & nodes, scalar dt ) const
28+
{
29+
std::vector<scalar> quadratureNodes = quadrature->get_nodes();
30+
31+
if ( not quadrature->left_is_node() )
32+
quadratureNodes.erase( quadratureNodes.begin() );
33+
34+
fsi::quadrature::Matrix<scalar> q_matrix = fsi::quadrature::compute_q_matrix( quadratureNodes, nodes );
35+
36+
if ( not quadrature->left_is_node() )
37+
{
38+
fsi::quadrature::Matrix<scalar> q_mat2( q_matrix.rows(), q_matrix.cols() + 1 );
39+
q_mat2.setZero();
40+
q_mat2.rightCols( q_matrix.cols() ) = q_matrix;
41+
q_matrix = q_mat2;
42+
}
43+
44+
fsi::quadrature::Matrix<scalar> data = dt * q_matrix * getFunctions();
45+
46+
for ( int i = 0; i < data.rows(); i++ )
47+
data.row( i ) += getSolutions().row( 0 );
48+
49+
return data;
50+
}
51+
52+
template<typename scalar>
53+
static fsi::quadrature::Matrix<scalar> compute_interpolation_matrix(
54+
const std::vector<scalar> & from,
55+
const std::vector<scalar> & to
56+
)
57+
{
58+
const size_t to_size = to.size();
59+
const size_t from_size = from.size();
60+
assert( to_size >= 1 && from_size >= 1 );
61+
62+
fsi::quadrature::Matrix<scalar> q_mat = fsi::quadrature::Matrix<scalar>::Zero( to_size, from_size );
63+
64+
for ( size_t m = 0; m < from_size; ++m )
65+
{
66+
fsi::quadrature::Polynomial<scalar> p = fsi::quadrature::build_polynomial( m, from );
67+
68+
auto den = p.evaluate( from[m] );
69+
70+
for ( size_t j = 0; j < to_size; ++j )
71+
{
72+
q_mat( j, m ) = p.evaluate( to[j] ) / den;
73+
}
74+
}
75+
76+
return q_mat;
77+
}
78+
79+
const fsi::matrix DataStorage::interpolate(
80+
const fsi::matrix functions,
81+
const std::vector<scalar> & nodes ) const
82+
{
83+
std::vector<scalar> quadratureNodes = quadrature->get_nodes();
84+
fsi::quadrature::Matrix<scalar> q_matrix = compute_interpolation_matrix( quadratureNodes, nodes );
85+
86+
return q_matrix * functions;
87+
}
88+
89+
const fsi::matrix & DataStorage::getFunctions() const
90+
{
91+
assert( F.rows() > 0 );
92+
assert( F.cols() > 0 );
93+
return F;
94+
}
95+
96+
const fsi::matrix & DataStorage::getSolutions() const
97+
{
98+
assert( solStages.rows() > 0 );
99+
return solStages;
100+
}
101+
102+
const fsi::vector DataStorage::getFunction( int substep ) const
103+
{
104+
assert( substep <= F.rows() );
105+
assert( F.cols() > 0 );
106+
assert( F.rows() > 0 );
107+
return F.row( substep );
108+
}
109+
110+
const fsi::vector DataStorage::getSolution( int substep ) const
111+
{
112+
assert( substep <= solStages.rows() );
113+
assert( solStages.cols() > 0 );
114+
assert( solStages.rows() > 0 );
115+
return solStages.row( substep );
116+
}
117+
118+
const fsi::vector DataStorage::getLastSolution() const
119+
{
120+
return getSolution( quadrature->get_num_nodes() - 1 );
121+
}
122+
123+
void DataStorage::initialize( int k, int N )
124+
{
125+
assert( N > 0 );
126+
assert( k >= 2 );
127+
F.resize( k, N );
128+
solStages.resize( k, N );
129+
F.setZero();
130+
solStages.setZero();
131+
}
132+
133+
void DataStorage::storeFunction( const fsi::vector & f, int substep )
134+
{
135+
assert( f.rows() == F.cols() );
136+
assert( substep <= F.rows() );
137+
assert( F.cols() > 0 );
138+
assert( F.rows() > 0 );
139+
F.row( substep ) = f;
140+
}
141+
142+
void DataStorage::storeSolution( const fsi::vector & sol, int substep )
143+
{
144+
assert( sol.rows() == solStages.cols() );
145+
assert( substep <= solStages.rows() );
146+
assert( solStages.cols() > 0 );
147+
assert( solStages.rows() > 0 );
148+
solStages.row( substep ) = sol;
149+
}
150+
}

src/fsi/DataStorage.H

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
2+
/*
3+
* Author
4+
* David Blom, TU Delft. All rights reserved.
5+
*/
6+
7+
#pragma once
8+
9+
#include "SDCSolver.H"
10+
#include "QuadratureInterface.H"
11+
12+
namespace sdc
13+
{
14+
class DataStorage
15+
{
16+
public:
17+
DataStorage(
18+
std::shared_ptr<fsi::quadrature::IQuadrature<scalar> >,
19+
int N );
20+
21+
~DataStorage();
22+
23+
const fsi::matrix & getFunctions() const;
24+
25+
const fsi::matrix & getSolutions() const;
26+
27+
const fsi::matrix integrate( const std::vector<scalar> & nodes, scalar dt ) const;
28+
29+
const fsi::matrix interpolate(
30+
const fsi::matrix functions,
31+
const std::vector<scalar> & nodes ) const;
32+
33+
const fsi::vector getFunction( int substep ) const;
34+
35+
const fsi::vector getSolution( int substep ) const;
36+
37+
const fsi::vector getLastSolution() const;
38+
39+
void initialize( int k, int N );
40+
41+
void storeFunction( const fsi::vector & f, int substep );
42+
43+
void storeSolution( const fsi::vector & sol, int substep );
44+
45+
private:
46+
47+
48+
49+
std::shared_ptr<fsi::quadrature::IQuadrature<scalar> > quadrature;
50+
fsi::matrix F, solStages;
51+
};
52+
}

0 commit comments

Comments
 (0)