PoissonSolver3DCylindricalGPU adalah pustaka yang dikembangkan untuk menyelesaikan persamaan Poisson 3 dimensi dalam sistem koordinat silinder dengan akselerator GPU
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

34 lines
2.0 KiB

6 years ago
/// \file PoissonSolver3DGPUTest.h
/// \brief Berkas ini berisi definisi fungs untuk memakai pustaka libPoissonSolver3DCylindrialGPU.so
///
/// \author Rifki Sadikin <rifki.sadikin@lipi.go.id>, Pusat Penelitian Informatika, Lembaga Ilmu Pengetahuan Indonesia
/// \author I Wayan Aditya Swardiana <i.wayan.aditya.swardiana@lipi.go.id>, Pusat Penelitian Informatika, Lembaga Ilmu Pengetahuan Indonesia
/// \date November 8, 2018
6 years ago
#ifndef POISSONSOLVERGPU3DGPUTEST_H
#define POISSONSOLVERGPU3DGPUTEST_H
#include <iostream>
6 years ago
#include "PoissonSolver3DCylindricalGPU.h"
6 years ago
const double fgkTPCZ0 = 249.7; ///< nominal gating grid position
const double fgkIFCRadius = 83.5; ///< radius which renders the "18 rod manifold" best -> compare calc. of Jim Thomas
const double fgkOFCRadius = 254.5; ///< Mean Radius of the Outer Field Cage (252.55 min, 256.45 max) (cm)
const double fgkZOffSet = 0.2; ///< Offset from CE: calculate all distortions closer to CE as if at this point
const double fgkCathodeV = -100000.0; ///< Cathode Voltage (volts)
const double fgkGG = -70.0; ///< Gating Grid voltage (volts)
const double fgkdvdE = 0.0024; ///< [cm/V] drift velocity dependency on the E field (from Magboltz for NeCO2N2 at standard environment)
const double fgkEM = -1.602176487e-19 / 9.10938215e-31; ///< charge/mass in [C/kg]
const double fgke0 = 8.854187817e-12; ///< vacuum permittivity [A·s/(V·m)]
const double fgConvergenceError = 1e-6; ///< vacuum permittivity [A·s/(V·m)]
void DoPoissonSolverExperiment(const int kRows, const int kColumns, const int kPhiSlices, const int kIterations, const int kSymmetry);
void InitVoltandCharge3D(float * VPotentialExact,float * VPotential,float * RhoCharge,const int kRows, const int kColumns,const int kPhiSlices,float gridSizeR,float gridSizeZ,float gridSizePhi);
float TestFunction1PotentialEval(double a, double b, double c,float radius0, float phi0, float z0);
float TestFunction1ChargeEval(double a, double b, double c, float radius0,float phi0,float z0);
6 years ago
#endif