quiescent2.inp
来自「pic 模拟程序!面向对象」· INP 代码 · 共 180 行
INP
180 行
quiescent2{This is a quiescent plasma, with plasma-based accelerator parameters.This input file is used for testing purposes and to see how well the simplest possible XOOPIC simulation scales up to many processors.However, we do turn on the moving window in this case.}// Define variables that can be used throughout this input file.Variables{// First, define some useful constants. pi = 3.14159265358979323846 speedOfLight = 2.99792458e+08 electronMass = 9.1093897e-31 unitCharge = electronMass * 1.75881962e11 electronCharge = -1. * unitCharge electronMassEV = electronMass * speedOfLight * speedOfLight / unitCharge ionCharge = unitCharge unitMassMKS = electronMass / 5.48579903e-04 lithiumMassNum = 6.942 lithiumMass = unitMassMKS * lithiumMassNum// Define the number of grids in R and Z lengthOverRadiusAspectRatio = 128 numRgrids = 16 numZgrids = numRgrids * lengthOverRadiusAspectRatio numCells = numRgrids * numZgrids// Calculate the size of the simulation region, grid spacings, time step.// We are assuming the same grid size in both z and r rGridSize = 10.e-06 zGridSize = rGridSize maxRadiusMKS = rGridSize * numRgrids maxLengthMKS = zGridSize * numZgrids timeStep = 0.41 * rGridSize / speedOfLight// Define the plasma density, number of plasma electron macro-particles, etc. plasmaDensityMKS = 2.e+20 simulationVolume = pi * maxRadiusMKS * maxRadiusMKS * maxLengthMKS totalNumPlasma = plasmaDensityMKS * simulationVolume numPtclsPerCell = 10 numPlasmaPtcls = numPtclsPerCell * numCells plasmaNumRatio = totalNumPlasma / numPlasmaPtcls// Define plasma temperature and resulting flux of electrons into the simulation region. plasmaTempEV = 1.0 thermalSpeed = speedOfLight * sqrt( plasmaTempEV / electronMassEV )// This is the desired delay time before the moving window algorithm activates. movingWindowDelay = 0.0}// This simulation has only one "region", which contains grid, all particles, etc.Region{// Define the grid for this region.Grid{// Define number of grids along Z-axis and physical coordinates. J = numZgrids x1s = 0.0 x1f = maxLengthMKS n1 = 1.0// Define number of grids along R-axis and physical coordinates. K = numRgrids x2s = 0.0 x2f = maxRadiusMKS n2 = 1.0}// Specify "control" parameters for this regionControl{// Specify the time step. dt = timeStep// Turn on the moving window algorithm. movingWindow = 1 shiftDelayTime = movingWindowDelay// Turn on damping for the high-frequency EM fields emdamping = 0.49}// Define the plasma ions.Species{ name = ions m = lithiumMass q = ionCharge}// Load the plasma ions over the entire simulation region.Load{ speciesName = ions density = plasmaDensityMKS x1MinMKS = 0.0 x1MaxMKS = maxLengthMKS x2MinMKS = 0.0 x2MaxMKS = maxRadiusMKS// This specifies a static uniform background (no macro-particles). np2c = 0}// Define the plasma electrons.Species{ name = electrons m = electronMass q = electronCharge}// Load the plasma electrons over the entire simulation region.VarWeightLoad{ speciesName = electrons density = plasmaDensityMKS x1MinMKS = 0.0 x1MaxMKS = maxLengthMKS x2MinMKS = 0.0 x2MaxMKS = maxRadiusMKS np2c = 2 * plasmaNumRatio// Specify a finite plasma temperature (can be zero, of course). v1thermal = thermalSpeed v2thermal = thermalSpeed v3thermal = 0.0}// Specify a perfect conductor along the left boundary. This serves as a particle// boundary condition (catches particles that leave the simulation) and as a// field boundary condition (E_r is forced to vanish).Conductor{ j1 = 0 j2 = 0 k1 = 0 k2 = numRgrids normal = 1}// Specify a perfect conductor along the radial boundary. This serves as a// particle boundary condition (catches particles that leave the simulation)// and as a field boundary condition (E_z is forced to vanish).Conductor{ j1 = 0 j2 = numZgrids k1 = numRgrids k2 = numRgrids normal = -1}// Specify a perfect conductor along the right boundary. This serves as a// particle boundary condition (catches particles that leave the simulation)// and as a field boundary condition (E_r is forced to vanish).Conductor{ j1 = numZgrids j2 = numZgrids k1 = numRgrids k2 = 0 normal = -1}// Define the cylindrical symmetry axis.CylindricalAxis{ j1 = 0 j2 = numZgrids k1 = 0 k2 = 0 normal = 1}}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?