Select Git revision
Gauss_Triangle.h
monoDomain.cpp 31.94 KiB
#include "mesh.h"
#include "SubproblemDomains.h"
#include "Subproblem2D.h"
#include "Subproblem3D.h"
#include <gmshfem/GmshFem.h>
#include <gmshfem/FieldInterface.h>
#include <gmshfem/Formulation.h>
#include <gmshfem/AnalyticalFunction.h>
#include <gmshfem/Post.h>
#include <gmshfem/Function.h>
#include <gmshfem/io.h>
#include <gmshddm/GmshDdm.h>
#include <gmshddm/Subdomain.h>
#include <gmshddm/Interface.h>
#include <gmshddm/SubdomainField.h>
#include <gmshddm/InterfaceField.h>
#include <gmshddm/Formulation.h>
#include <gmshddm/MPIInterface.h>
#include <algorithm>
#include <fstream>
using gmshfem::equation::dof;
using gmshfem::equation::tf;
using gmshfem::function::operator-;
using gmshfem::function::operator*;
using gmshfem::function::abs;
namespace D2 {
void monoDomain()
{
gmshddm::common::GmshDdm *gmshDdm = gmshddm::common::GmshDdm::currentInstance();
// ************************
// P H Y S I C S
// ************************
double pi = 3.141592653589793238462643383279;
double k = 4. * pi;
gmshDdm->userDefinedParameter(k, "k");
double R = 0.5;
gmshDdm->userDefinedParameter(R, "R");
// ************************
// M E S H
// ************************
double lc = 0.03333333333333; // Marmousi = 20; other = 0.03333333333333
gmshDdm->userDefinedParameter(lc, "lc");
int meshOrder = 1;
gmshDdm->userDefinedParameter(meshOrder, "meshOrder");
// ************************
// M O D E L I N G
// ************************
std::string boundary = "sommerfeld"; // sommerfeld, pml, habc
gmshDdm->userDefinedParameter(boundary, "boundary");
std::string pmlMethod = "continuous"; // continuous, discontinuous, withoutMultiplier
gmshDdm->userDefinedParameter(pmlMethod, "pmlMethod");
std::string pmlType = "hs"; // hs, h, q
gmshDdm->userDefinedParameter(pmlType, "pmlType");
double N = 6;
gmshDdm->userDefinedParameter(N, "N");
double pmlSize = N * lc;
if(pmlSize == 0.) {
pmlSize = 0.3;
}