6#include <dirac_operator_experiment.h>
8using lf::uscalfe::operator-;
14int main(
int argc,
char *argv[]) {
15 if (argc != 4 && argc != 5) {
16 std::cerr <<
"Usage: " << argv[0]
17 <<
" max_refinement_level min_k max_k step=0.1 " << std::endl;
24 const unsigned refinement_level = atoi(argv[1]);
25 sscanf(argv[2],
"%lf", &min_k);
26 sscanf(argv[3],
"%lf", &max_k);
27 if (argc == 5) sscanf(argv[4],
"%lf", &step);
28 std::cout <<
"max_refinement_level : " << refinement_level << std::endl;
29 std::cout <<
"min_k : " << min_k <<
", max_k = " << max_k
30 <<
" step = " << step << std::endl;
35 std::vector<unsigned> refinement_levels(refinement_level + 1);
36 for (
int i = 0; i < refinement_level + 1; i++) {
37 refinement_levels[i] = i;
40 std::vector<double> ks;
41 for (
double i = min_k; i <= max_k; i += step) {
46 auto f_zero = [&](
const Eigen::Vector3d &x_vec) -> std::complex<double> {
51 auto f_one = [&](
const Eigen::Vector3d &x_vec) -> Eigen::VectorXcd {
52 Eigen::VectorXcd ret(3);
58 auto u_zero = [&](
const Eigen::Vector3d &x_vec) -> std::complex<double> {
63 auto u_one = [&](
const Eigen::Vector3d &x_vec) -> Eigen::Vector3cd {
64 Eigen::VectorXcd ret(3);
70 u_zero, u_one, u_zero, f_zero, f_one, f_zero, k,
"zero");
72 experiment.Compute(refinement_levels, ks);
Creates and solves the discretised Dirac Operator source problems for a given list of levels and valu...