pic 模拟程序!面向对象
源代码在线查看: orionwp.inp
OrionWP { - An electromagnetic wave with a Gaussian profile is launched from the left boundary in Cartesian geometry for a short pulse in an uniform plasma. - The wave is defined by the variables: - gauss_w = spot size at beam waist. - gauss_rl = Rayleigh length. - omegag = frequency. - zf = position of focus. - Agw = wave amplitude. } Variables { // Grid variables Nx = 1600 Ny = 150 Lx = 1.6e-04 Ly = 4.0e-05 // General parameters electronMass = 9.1094e-31 electronCharge = -1.6022e-19 permit = 8.8542e-12 speedLight = 2.9979e8 speedLight2 = speedLight*speedLight electronCharge2 = electronCharge*electronCharge qOverm = electronCharge/electronMass // Plasma parameters elecPlasmaDensity = 6.9e23 elecPlasmaFreq = sqrt(electronCharge*qOverm*elecPlasmaDensity*electronCharge/permit) // Gaussian wave parameters waist = 2.0e-05 angFreq = 1.88e15 angFreq2 = angFreq*angFreq waveVector = sqrt((angFreq2 - elecPlasmaFreq*elecPlasmaFreq)/speedLight2) rayleighLength = waist*waist*waveVector/2. focus = Lx*0.5 } Region { Grid { J = Nx x1s = 0.0 x1f = Lx n1 = 1.0 K = Ny x2s = 0.0 x2f = Ly n2 = 1.0 Geometry = 1 Rule { Limit n1 < 0.25 Fatal -- n1 < 0.25 grid spacing too nonuniform to ensure accuracy } Rule { Algebra J * K > 10000 Warning -- J*K >= 10000 may mean memory problems! } } Control { dt = 1.6e-16 ElectrostaticFlag = 0 } Species { name = electrons m = electronMass q = electronCharge collisionModel = 1 } Species { name = ions m = 1.67e-27 q = 1.6e-19 } Load { x1MinMKS = 0.000 x1MaxMKS = Lx x2MinMKS = 0.00 x2MaxMKS = Ly speciesName = electrons density = elecPlasmaDensity np2c = 2.0e11 temperature = 0.0 } Load { x1MinMKS = 0.000 x1MaxMKS = Lx x2MinMKS = 0.00 x2MaxMKS = Ly speciesName = ions density = elecPlasmaDensity np2c = 0 temperature = 0. } PortGauss { j1 = 0 k1 = 0 j2 = 0 k2 = Ny normal = 1 C = 1.0 a1 = 1.0 a0 = 0.0 tdelay = 0 trise = 1.0e-14 tpulse = 1.2e-13 tfall = 1.0e-14 gauss_w = waist omegag = angFreq gauss_rl = rayleighLength zf = focus Agw = 6.0e12 EFFlag = 1 name = PortGauss } Conductor { j1 = 0 k1 = 0 j2 = Nx k2 = 0 normal = 1 reflection = 1 } Conductor { j1 = 0 k1 = Ny j2 = Nx k2 = Ny normal = -1 reflection = 1 } Conductor { j1 = 0 k1 = 0 j2 = 0 k2 = Ny normal = 1 reflection = 1 } Conductor { j1 = Nx k1 = 0 j2 = Nx k2 = Ny normal = -1 reflection = 1 } ExitPort { j1 = Nx k1 = 0 j2 = Nx k2 = Ny EFFlag = 1 normal = -1 name = ExitPort C = 0 A = 0 } }