Skip to content

Commit e019696

Browse files
authored
Build with CMake, include GoogleTest and include first tests (#8)
Build with CMake, include GoogleTest and include first tests Resolved issues #3 #4 #5 #6
1 parent c021a1c commit e019696

12 files changed

Lines changed: 336 additions & 236 deletions

File tree

CMakeLists.txt

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
cmake_minimum_required(VERSION 3.16.3)
2+
3+
project(GMGPolar VERSION 0.9.0)
4+
5+
6+
file(GLOB sources_src "./src/*.cpp" "./src/test_cases/*.cpp")
7+
8+
9+
add_library(GMGPolar ${sources_src})
10+
11+
add_executable(gmgpolar_simulation ./src/main.cpp)
12+
13+
target_include_directories(gmgpolar_simulation PRIVATE ${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/include/test_cases )
14+
target_include_directories(GMGPolar PRIVATE ${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/include/test_cases )
15+
16+
find_package(OpenMP)
17+
18+
#currently works on GNU compiler
19+
if((CMAKE_CXX_COMPILER_ID STREQUAL "GNU") AND (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 7))
20+
21+
set(CMAKE_CXX_FLAGS "-O2 -Wall -MMD -MP -Wwrite-strings")
22+
set(CMAKE_LINKER_FLAGS "-O2 -Wall -MMD -MP -Wwrite-strings")
23+
24+
if(OPENMP_FOUND)
25+
string(APPEND CMAKE_CXX_FLAGS " -fopenmp")
26+
string(APPEND CMAKE_LINKER_FLAGS " -fopenmp")
27+
28+
else()
29+
message(FATAL_ERROR "OpenMP needed")
30+
endif()
31+
else()
32+
message(FATAL_ERROR "Please use GNU compiler or change CMakeLists manually")
33+
endif()
34+
35+
target_link_libraries(gmgpolar_simulation PRIVATE GMGPolar)
36+
37+
include(thirdparty/CMakeLists.txt)
38+
add_subdirectory(tests)
39+

Makefile

Lines changed: 0 additions & 42 deletions
This file was deleted.

Makefile.inc

Lines changed: 0 additions & 31 deletions
This file was deleted.

include/constants.h

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
* limitations under the License.
2121
*/
2222

23-
2423
/*!
2524
* \file constants.h
2625
* \brief Header defining constants and enumerations of Controls/Info
@@ -334,10 +333,10 @@ enum alpha_val
334333

335334
enum problem_type
336335
{
337-
FLAT = 1,
336+
FLAT = 1,
338337
REFINED_RADIUS = 4,
339-
CARTESIAN_R2 = 5,
340-
POLAR_R6 = 6,
341-
CARTESIAN_R6 = 7,
338+
CARTESIAN_R2 = 5,
339+
POLAR_R6 = 6,
340+
CARTESIAN_R6 = 7,
342341
};
343342
#endif // CONSTANTS_HXX

include/exact_funcs.h

Lines changed: 59 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -24,36 +24,63 @@
2424
class ExactFuncs
2525
{
2626
public:
27-
virtual ~ExactFuncs() {}
28-
virtual double x(double r, double theta, double kappa_eps, double delta_e, double Rmax) const = 0;
29-
virtual void x(std::vector<double> const& r, double theta, double kappa_eps, double delta_e, double Rmax, std::vector<double>& sol) const = 0;
30-
virtual void x(double r, std::vector<double> const& theta, double kappa_eps, double delta_e, double Rmax, std::vector<double>& sol, std::vector<double>& sin_theta, std::vector<double>& cos_theta) const = 0;
31-
virtual double y(double r, double theta, double kappa_eps, double delta_e, double Rmax) const = 0;
32-
virtual void y(std::vector<double> const& r, double theta, double kappa_eps, double delta_e, double Rmax, std::vector<double>& sol) const = 0;
33-
virtual void y(double r, std::vector<double> const& theta, double kappa_eps, double delta_e, double Rmax, std::vector<double>& sol, std::vector<double>& sin_theta, std::vector<double>& cos_theta) const = 0;
34-
virtual double J_rr(double r, double theta, double kappa_eps, double delta_e, double Rmax) const = 0;
35-
virtual void J_rr(std::vector<double> const& r, double theta, double kappa_eps, double delta_e, double Rmax, std::vector<double>& sol) const = 0;
36-
virtual void J_rr(double r, std::vector<double> const& theta, double kappa_eps, double delta_e, double Rmax, std::vector<double>& sol, std::vector<double>& sin_theta, std::vector<double>& cos_theta) const = 0;
37-
virtual double J_rt(double r, double theta, double kappa_eps, double delta_e, double Rmax) const = 0;
38-
virtual void J_rt(std::vector<double> const& r, double theta, double kappa_eps, double delta_e, double Rmax, std::vector<double>& sol) const = 0;
39-
virtual void J_rt(double r, std::vector<double> const& theta, double kappa_eps, double delta_e, double Rmax, std::vector<double>& sol, std::vector<double>& sin_theta, std::vector<double>& cos_theta) const = 0;
40-
virtual double J_tr(double r, double theta, double kappa_eps, double delta_e, double Rmax) const = 0;
41-
virtual void J_tr(std::vector<double> const& r, double theta, double kappa_eps, double delta_e, double Rmax, std::vector<double>& sol) const = 0;
42-
virtual void J_tr(double r, std::vector<double> const& theta, double kappa_eps, double delta_e, double Rmax, std::vector<double>& sol, std::vector<double>& sin_theta, std::vector<double>& cos_theta) const = 0;
43-
virtual double J_tt(double r, double theta, double kappa_eps, double delta_e, double Rmax) const = 0;
44-
virtual void J_tt(std::vector<double> const& r, double theta, double kappa_eps, double delta_e, double Rmax, std::vector<double>& sol) const = 0;
45-
virtual void J_tt(double r, std::vector<double> const& theta, double kappa_eps, double delta_e, double Rmax, std::vector<double>& sol, std::vector<double>& sin_theta, std::vector<double>& cos_theta) const = 0;
46-
virtual double rho_glob(double r, double theta, double kappa_eps, double delta_e, double Rmax) const = 0;
47-
virtual void rho_glob(std::vector<double> const& r, double theta, double kappa_eps, double delta_e, double Rmax, std::vector<double>& sol) const = 0;
48-
virtual void rho_glob(double r, std::vector<double> const& theta, double kappa_eps, double delta_e, double Rmax, std::vector<double>& sol, std::vector<double>& sin_theta, std::vector<double>& cos_theta) const = 0;
49-
virtual double rho_pole(double r, double theta, double kappa_eps, double delta_e, double Rmax) const = 0;
50-
virtual void rho_pole(std::vector<double> const& r, double theta, double kappa_eps, double delta_e, double Rmax, std::vector<double>& sol) const = 0;
51-
virtual void rho_pole(double r, std::vector<double> const& theta, double kappa_eps, double delta_e, double Rmax, std::vector<double>& sol, std::vector<double>& sin_theta, std::vector<double>& cos_theta) const = 0;
52-
virtual double coeffs1(double r, double Rmax) const = 0;
53-
virtual void coeffs1(std::vector<double> const& r, double Rmax, std::vector<double>& sol) const = 0;
54-
virtual double coeffs2(double r, double Rmax) const = 0;
55-
virtual void coeffs2(std::vector<double> const& r, double Rmax, std::vector<double>& sol) const = 0;
56-
virtual double phi_exact(double r, double theta, double kappa_eps, double delta_e, double Rmax) const = 0;
57-
virtual void phi_exact(std::vector<double> const& r, double theta, double kappa_eps, double delta_e, double Rmax, std::vector<double>& sol) const = 0;
58-
virtual void phi_exact(double r, std::vector<double> const& theta, double kappa_eps, double delta_e, double Rmax, std::vector<double>& sol, std::vector<double>& sin_theta, std::vector<double>& cos_theta) const = 0;
27+
virtual ~ExactFuncs()
28+
{
29+
}
30+
virtual double x(double r, double theta, double kappa_eps, double delta_e, double Rmax) const = 0;
31+
virtual void x(std::vector<double> const& r, double theta, double kappa_eps, double delta_e, double Rmax,
32+
std::vector<double>& sol) const = 0;
33+
virtual void x(double r, std::vector<double> const& theta, double kappa_eps, double delta_e, double Rmax,
34+
std::vector<double>& sol, std::vector<double>& sin_theta, std::vector<double>& cos_theta) const = 0;
35+
virtual double y(double r, double theta, double kappa_eps, double delta_e, double Rmax) const = 0;
36+
virtual void y(std::vector<double> const& r, double theta, double kappa_eps, double delta_e, double Rmax,
37+
std::vector<double>& sol) const = 0;
38+
virtual void y(double r, std::vector<double> const& theta, double kappa_eps, double delta_e, double Rmax,
39+
std::vector<double>& sol, std::vector<double>& sin_theta, std::vector<double>& cos_theta) const = 0;
40+
virtual double J_rr(double r, double theta, double kappa_eps, double delta_e, double Rmax) const = 0;
41+
virtual void J_rr(std::vector<double> const& r, double theta, double kappa_eps, double delta_e, double Rmax,
42+
std::vector<double>& sol) const = 0;
43+
virtual void J_rr(double r, std::vector<double> const& theta, double kappa_eps, double delta_e, double Rmax,
44+
std::vector<double>& sol, std::vector<double>& sin_theta,
45+
std::vector<double>& cos_theta) const = 0;
46+
virtual double J_rt(double r, double theta, double kappa_eps, double delta_e, double Rmax) const = 0;
47+
virtual void J_rt(std::vector<double> const& r, double theta, double kappa_eps, double delta_e, double Rmax,
48+
std::vector<double>& sol) const = 0;
49+
virtual void J_rt(double r, std::vector<double> const& theta, double kappa_eps, double delta_e, double Rmax,
50+
std::vector<double>& sol, std::vector<double>& sin_theta,
51+
std::vector<double>& cos_theta) const = 0;
52+
virtual double J_tr(double r, double theta, double kappa_eps, double delta_e, double Rmax) const = 0;
53+
virtual void J_tr(std::vector<double> const& r, double theta, double kappa_eps, double delta_e, double Rmax,
54+
std::vector<double>& sol) const = 0;
55+
virtual void J_tr(double r, std::vector<double> const& theta, double kappa_eps, double delta_e, double Rmax,
56+
std::vector<double>& sol, std::vector<double>& sin_theta,
57+
std::vector<double>& cos_theta) const = 0;
58+
virtual double J_tt(double r, double theta, double kappa_eps, double delta_e, double Rmax) const = 0;
59+
virtual void J_tt(std::vector<double> const& r, double theta, double kappa_eps, double delta_e, double Rmax,
60+
std::vector<double>& sol) const = 0;
61+
virtual void J_tt(double r, std::vector<double> const& theta, double kappa_eps, double delta_e, double Rmax,
62+
std::vector<double>& sol, std::vector<double>& sin_theta,
63+
std::vector<double>& cos_theta) const = 0;
64+
virtual double rho_glob(double r, double theta, double kappa_eps, double delta_e, double Rmax) const = 0;
65+
virtual void rho_glob(std::vector<double> const& r, double theta, double kappa_eps, double delta_e, double Rmax,
66+
std::vector<double>& sol) const = 0;
67+
virtual void rho_glob(double r, std::vector<double> const& theta, double kappa_eps, double delta_e, double Rmax,
68+
std::vector<double>& sol, std::vector<double>& sin_theta,
69+
std::vector<double>& cos_theta) const = 0;
70+
virtual double rho_pole(double r, double theta, double kappa_eps, double delta_e, double Rmax) const = 0;
71+
virtual void rho_pole(std::vector<double> const& r, double theta, double kappa_eps, double delta_e, double Rmax,
72+
std::vector<double>& sol) const = 0;
73+
virtual void rho_pole(double r, std::vector<double> const& theta, double kappa_eps, double delta_e, double Rmax,
74+
std::vector<double>& sol, std::vector<double>& sin_theta,
75+
std::vector<double>& cos_theta) const = 0;
76+
virtual double coeffs1(double r, double Rmax) const = 0;
77+
virtual void coeffs1(std::vector<double> const& r, double Rmax, std::vector<double>& sol) const = 0;
78+
virtual double coeffs2(double r, double Rmax) const = 0;
79+
virtual void coeffs2(std::vector<double> const& r, double Rmax, std::vector<double>& sol) const = 0;
80+
virtual double phi_exact(double r, double theta, double kappa_eps, double delta_e, double Rmax) const = 0;
81+
virtual void phi_exact(std::vector<double> const& r, double theta, double kappa_eps, double delta_e, double Rmax,
82+
std::vector<double>& sol) const = 0;
83+
virtual void phi_exact(double r, std::vector<double> const& theta, double kappa_eps, double delta_e, double Rmax,
84+
std::vector<double>& sol, std::vector<double>& sin_theta,
85+
std::vector<double>& cos_theta) const = 0;
5986
};

src/RHS.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@
3535
*/
3636
double gyro::eval_def_rhs(double r, double theta, int verbose)
3737
{
38-
double kappa_eps = dcntl[Param::kappa_eps];
39-
double delta_e = dcntl[Param::delta_e];
40-
double Rmax = dcntl[Param::R];
38+
double kappa_eps = dcntl[Param::kappa_eps];
39+
double delta_e = dcntl[Param::delta_e];
40+
double Rmax = dcntl[Param::R];
4141

4242
double rhs_val = 0;
4343
if (r > 0) {
@@ -60,9 +60,9 @@ double gyro::eval_def_rhs(double r, double theta, int verbose)
6060
std::vector<double> gyro::eval_def_rhs(double r, std::vector<double> theta, std::vector<double> sin_theta,
6161
std::vector<double> cos_theta, int ntheta, int verbose)
6262
{
63-
double kappa_eps = dcntl[Param::kappa_eps];
64-
double delta_e = dcntl[Param::delta_e];
65-
double Rmax = dcntl[Param::R];
63+
double kappa_eps = dcntl[Param::kappa_eps];
64+
double delta_e = dcntl[Param::delta_e];
65+
double Rmax = dcntl[Param::R];
6666

6767
std::vector<double> rhs_val(ntheta);
6868
if (r > 0) {

src/main.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ int main(int argc, char* argv[])
102102

103103
//std::cout << "Initializing parameters...\n";
104104
gyro::init_params();
105+
105106
gyro::icntl[Param::verbose] = a.get<int>("verbose");
106107
gyro::icntl[Param::openmp] = a.get<int>("openmp");
107108
gyro::icntl[Param::optimized] = a.get<int>("optimized");

src/multigrid_iter.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -189,10 +189,12 @@ void gmgpolar::multigrid_iter()
189189
TIC;
190190
}
191191
// if (gyro::icntl[Param::verbose] > 0) {
192-
if (it == gyro::icntl[Param::maxiter])
192+
if (it == gyro::icntl[Param::maxiter]) {
193193
std::cout << "Multigrid reached maxiter=" << gyro::icntl[Param::maxiter] << "\n";
194-
else
194+
}
195+
else {
195196
std::cout << "Convergence after iteration " << it << std::endl;
197+
}
196198
// }
197199
//----------------------------------------------------------------------------------------------------------
198200
//!compute mean residual reduction factor rho

0 commit comments

Comments
 (0)