mirror of
https://codeberg.org/vcbferreira/NuFI_deal.ii
synced 2026-08-12 22:43:17 +02:00
.
This commit is contained in:
+11
-8
@@ -83,6 +83,7 @@ void interpolate( real *coeffs, const real *values)
|
||||
|
||||
void operator()( const real *in, real *out ) const
|
||||
{
|
||||
#pragma omp parallel for
|
||||
for ( size_t i = 0; i < Parameters::SPLINE_NX; ++i )
|
||||
{
|
||||
real result = 0;
|
||||
@@ -145,24 +146,26 @@ void interpolate( real *coeffs, const real *values)
|
||||
inline double integral_space_vector(const double *current_coeffs, double dx = Parameters::SPLINE_DX, size_t Nx = Parameters::SPLINE_NX)
|
||||
{
|
||||
double integral = 0.0;
|
||||
double x = Parameters::X_DOMAIN_LEFT;
|
||||
double xmin = Parameters::X_DOMAIN_LEFT;
|
||||
#pragma omp parallel for reduction (+:integral)
|
||||
for (size_t i=0; i<Nx ; ++i) {
|
||||
x += dx;
|
||||
integral += eval<1>(x, current_coeffs)*dx;
|
||||
double x = xmin + i * dx;
|
||||
integral += eval<1>(x, current_coeffs);
|
||||
}
|
||||
return integral;
|
||||
return integral*dx;
|
||||
};
|
||||
|
||||
inline double integral_space_vector_squared(const double *current_coeffs, double dx = Parameters::SPLINE_DX, size_t Nx = Parameters::SPLINE_NX)
|
||||
{
|
||||
double integral = 0.0;
|
||||
double x = Parameters::X_DOMAIN_LEFT;
|
||||
double xmin = Parameters::X_DOMAIN_LEFT;
|
||||
#pragma omp parallel for reduction (+:integral)
|
||||
for (size_t i=0; i<Nx ; ++i) {
|
||||
x += dx;
|
||||
double x = xmin + i*dx;
|
||||
double val = eval<1>(x, current_coeffs);
|
||||
integral += val*val*dx;
|
||||
integral += val*val;
|
||||
}
|
||||
return integral;
|
||||
return integral*dx;
|
||||
};
|
||||
|
||||
class Gradient {
|
||||
|
||||
@@ -22,6 +22,7 @@ public:
|
||||
void run();
|
||||
double eval_rho(unsigned int n, double x, const double *E_coeffs, unsigned int Nv = Parameters::NV) const;
|
||||
double eval_ftilda(unsigned int n, double x, double u, const double *E_coeffs) const;
|
||||
double eval_f(unsigned int n, double x, double u, const double *E_coeffs) const;
|
||||
|
||||
private:
|
||||
|
||||
|
||||
+7
-7
@@ -13,16 +13,16 @@ namespace Parameters
|
||||
constexpr double LX = std::abs(X_DOMAIN_RIGHT- X_DOMAIN_LEFT);
|
||||
constexpr double LX_INV = 1/LX;
|
||||
|
||||
constexpr double V_DOMAIN_LEFT = -10.0;
|
||||
constexpr double V_DOMAIN_RIGHT = 10.0;
|
||||
constexpr double V_DOMAIN_LEFT = -10.;
|
||||
constexpr double V_DOMAIN_RIGHT = 10.;
|
||||
|
||||
constexpr unsigned int NV = 512;
|
||||
constexpr double DV = std::abs(V_DOMAIN_RIGHT - V_DOMAIN_LEFT)/NV;
|
||||
|
||||
// deal.ii options
|
||||
constexpr unsigned int GLOBAL_REFINEMENT = 7;
|
||||
constexpr unsigned int GLOBAL_REFINEMENT = 8;
|
||||
constexpr unsigned int FE_DEGREE = 4;
|
||||
constexpr unsigned int CONVERGENCE_ITERATIONS = 20000;
|
||||
constexpr unsigned int CONVERGENCE_ITERATIONS = 10000;
|
||||
constexpr double CONVERGENCE_LIMIT = 1e-12;
|
||||
|
||||
constexpr double EPS = 0.01;
|
||||
@@ -30,8 +30,8 @@ namespace Parameters
|
||||
constexpr double F0_FACTOR = 0.39894228040143267793994; // 1/sqrt(2pi)
|
||||
|
||||
// NUFI options
|
||||
constexpr double DT=1./10.;
|
||||
constexpr unsigned int TMAX = 50;
|
||||
constexpr double DT=1./16.;
|
||||
constexpr unsigned int TMAX = 500;
|
||||
|
||||
//spline options
|
||||
constexpr int SPLINE_NX = 256;
|
||||
@@ -40,7 +40,7 @@ namespace Parameters
|
||||
constexpr size_t SPLINE_ORDER = 4;
|
||||
|
||||
//Plotting options
|
||||
constexpr int PLOT_FREQUENCY = 5;
|
||||
constexpr int PLOT_FREQUENCY = 10;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@
|
||||
#include "nufi/nufi_solver.h"
|
||||
|
||||
|
||||
void save_ftilda( const NuFISolver &solver,
|
||||
void save_f( const NuFISolver &solver,
|
||||
unsigned int n,
|
||||
const double *E_coeffs,
|
||||
unsigned int Nx_out,
|
||||
|
||||
Reference in New Issue
Block a user