diff --git a/examples/SingleParticleCurrent/cmakeFlags b/examples/SingleParticleCurrent/cmakeFlags deleted file mode 100755 index 30bf14a698..0000000000 --- a/examples/SingleParticleCurrent/cmakeFlags +++ /dev/null @@ -1,45 +0,0 @@ -#!/usr/bin/env bash -# -# Copyright 2013-2017 Axel Huebl, Rene Widera -# -# This file is part of PIConGPU. -# -# PIConGPU is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# PIConGPU is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with PIConGPU. -# If not, see . -# - -# -# generic compile options -# - -################################################################################ -# add presets here -# - default: index 0 -# - start with zero index -# - increase by 1, no gaps - -flags[0]="-DCUDA_ARCH=20" - - -################################################################################ -# execution - -case "$1" in - -l) echo ${#flags[@]} - ;; - -ll) for f in "${flags[@]}"; do echo $f; done - ;; - *) echo -n ${flags[$1]} - ;; -esac diff --git a/examples/SingleParticleCurrent/include/CheckCurrent.hpp b/examples/SingleParticleCurrent/include/CheckCurrent.hpp deleted file mode 100644 index 6f5b80aac4..0000000000 --- a/examples/SingleParticleCurrent/include/CheckCurrent.hpp +++ /dev/null @@ -1,103 +0,0 @@ -/** - * Copyright 2013-2017 Heiko Burau, Rene Widera - * - * This file is part of PIConGPU. - * - * PIConGPU is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * PIConGPU is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with PIConGPU. - * If not, see . - */ - -#pragma once - -#include "fields/FieldJ.hpp" -#include "cuSTL/container/HostBuffer.hpp" -#include "cuSTL/container/view/View.hpp" -#include "cuSTL/cursor/MultiIndexCursor.hpp" -#include "cuSTL/algorithm/kernel/Foreach.hpp" -#include "math/Vector.hpp" - -namespace picongpu -{ - -struct CheckCurrent -{ - struct PrintNonZeroComponents - { - typedef void type; - float3_X totalJ; - - PrintNonZeroComponents() : totalJ(float3_X::create(0.0)) {} - ~PrintNonZeroComponents() - { - const float_X unit_current = UNIT_CHARGE / (UNIT_LENGTH * UNIT_LENGTH * UNIT_TIME); - totalJ *= unit_current; - printf("totalJ: (%g, %g, %g) A/m^2\n", totalJ.x(), totalJ.y(), totalJ.z()); - } - - HDINLINE void operator()(float3_X data, PMacc::math::Int<3> cellIdx) - { - - const float_X unit_current = UNIT_CHARGE / (UNIT_LENGTH * UNIT_LENGTH * UNIT_TIME); - if(data.x() != 0.0f) - printf("j_x = %g at %d, %d, %d\n", data.x() * unit_current, cellIdx.x(), cellIdx.y(), cellIdx.z()); - if(data.y() != 0.0f) - printf("j_y = %g at %d, %d, %d\n", data.y() * unit_current, cellIdx.x(), cellIdx.y(), cellIdx.z()); - if(data.z() != 0.0f) - printf("j_z = %g at %d, %d, %d\n", data.z() * unit_current, cellIdx.x(), cellIdx.y(), cellIdx.z()); - - this->totalJ += data; - } - }; - void operator ()(FieldJ& _fieldJ_device) - { - - typedef SuperCellSize GuardDim; - - // Get fieldJ without guards - BOOST_AUTO(fieldJ_device, - _fieldJ_device.getGridBuffer().getDeviceBuffer().cartBuffer()); - - container::HostBuffer fieldJ_with_guards(fieldJ_device.size()); - fieldJ_with_guards = fieldJ_device; - container::View > fieldJ(fieldJ_with_guards.view(GuardDim::toRT(), -GuardDim::toRT())); - - float3_X beta(BETA0_X, BETA0_Y, BETA0_Z); - - std::cout << "\nsingle P A R T I C L E facts:\n\n"; - std::cout << "position: (" << float3_X(LOCAL_POS_X, LOCAL_POS_Y, LOCAL_POS_Z) - << ") at cell " << fieldJ.size()/size_t(2) << std::endl; - std::cout << "velocity: (" << beta << ") * c\n"; - std::cout << "delta_pos: (" << beta * SPEED_OF_LIGHT / float3_X(CELL_WIDTH, CELL_HEIGHT, CELL_DEPTH) << ") * cellSize\n"; - - const float_64 j = BASE_CHARGE / CELL_VOLUME * math::abs(beta) * SPEED_OF_LIGHT; - const float_64 unit_current = UNIT_CHARGE / (UNIT_LENGTH * UNIT_LENGTH * UNIT_TIME); - std::cout << "j = rho * abs(velocity) = " << std::setprecision(6) << j * unit_current << " A/m^2" << std::endl; - std::cout << "------------------------------------------\n\n"; - - std::cout << "fieldJ facts:\n\n"; -// std::cout << "zone: " << fieldJ.zone().size << ", " << fieldJ.zone().offset << std::endl; -// std::cout << "index: " << *cursor::make_MultiIndexCursor<3>()(math::Int<3>(1,2,3)) << std::endl; -// std::cout << "index: " << cursor::make_MultiIndexCursor<3>()[math::Int<3>(1,2,3)] << std::endl; - - algorithm::host::Foreach()( - fieldJ.zone(), - fieldJ.origin(), cursor::make_MultiIndexCursor<3>(), - PrintNonZeroComponents()); - - std::cout << "------------------------------------------\n\n"; - } -}; - - -} diff --git a/examples/SingleParticleCurrent/include/OneParticleSimulation.hpp b/examples/SingleParticleCurrent/include/OneParticleSimulation.hpp deleted file mode 100644 index 6b5997b92d..0000000000 --- a/examples/SingleParticleCurrent/include/OneParticleSimulation.hpp +++ /dev/null @@ -1,170 +0,0 @@ -/** - * Copyright 2013-2017 Axel Huebl, Heiko Burau, Rene Widera - * - * This file is part of PIConGPU. - * - * PIConGPU is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * PIConGPU is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with PIConGPU. - * If not, see . - */ - -#pragma once - -#include "simulation_defines.hpp" -#include "Environment.hpp" - -#include "simulationControl/MySimulation.hpp" - -#include "simulationControl/SimulationHelper.hpp" -#include "simulation_classTypes.hpp" - - - -#include "fields/FieldB.hpp" -#include "fields/FieldE.hpp" -#include "fields/FieldJ.hpp" - - -#include "dimensions/GridLayout.hpp" -#include "simulation_types.hpp" -#include "eventSystem/EventSystem.hpp" -#include "fields/LaserPhysics.hpp" - -#include "nvidia/memory/MemoryInfo.hpp" -#include "mappings/kernel/MappingDescription.hpp" - -#include - -#include "plugins/PluginController.hpp" - -#include "particles/ParticlesInitOneParticle.hpp" -#include "CheckCurrent.hpp" - -namespace picongpu -{ - -using namespace PMacc; - -class OneParticleSimulation : public MySimulation -{ -public: - - OneParticleSimulation() : - MySimulation() - { - } - - virtual void init() - { - - MySimulation::init(); - - if (Environment::get().GridController().getGlobalRank() == 0) - { - std::cout << "max weighting " << particles::TYPICAL_NUM_PARTICLES_PER_MACROPARTICLE << std::endl; - std::cout << "courant=min(deltaCellSize)/dt/c > 1.77 ? " << std::min(CELL_WIDTH, std::min(CELL_DEPTH, CELL_HEIGHT)) / SPEED_OF_LIGHT / DELTA_T << std::endl; - -#if (LASER_TYPE==1) - const float_X y_R = M_PI * laserProfile::W0 * laserProfile::W0 / laserProfile::WAVE_LENGTH; //rayleigh length (in y-direction) - std::cout << "focus/y_Rayleigh: " << laserProfile::FOCUS_POS / y_R << std::endl; -#endif - - } - } - - virtual uint32_t fillSimulation() - { - MySimulation::fillSimulation(); - - const SubGrid& subGrid = Environment::get().SubGrid(); - - const DataSpace halfSimSize(subGrid.getGlobalDomain().size / 2); - - GridLayout layout(subGrid.getLocalDomain().size, MappingDesc::SuperCellSize::toRT()); - MappingDesc cellDescription = MappingDesc(layout.getDataSpace(), GUARD_SIZE, GUARD_SIZE); - - ParticlesInitOneParticle::addOneParticle(*particleStorage[TypeAsIdentifier()], - cellDescription, - halfSimSize); - - - //set E field - // - float3_X tmpE; - tmpE.x() = E_X; - tmpE.y() = E_Y; - tmpE.z() = E_Z; - this->fieldE->getGridBuffer().getDeviceBuffer().setValue(tmpE); - - //set B field - // - float3_X tmpB; - tmpB.x() = B_X; - tmpB.y() = B_Y; - tmpB.z() = B_Z; - this->fieldB->getGridBuffer().getDeviceBuffer().setValue(tmpB); - - - return 0; - } - - /** - * Run one simulation step. - * - * @param currentStep iteration number of the current step - */ - virtual void runOneStep(uint32_t currentStep) - { - FieldJ::ValueType zeroJ( FieldJ::ValueType::create(0.) ); - fieldJ->assign( zeroJ ); - - fieldJ->computeCurrent < CORE + BORDER, PIC_Electrons > (*particleStorage[TypeAsIdentifier()], currentStep); - - CheckCurrent()(*fieldJ); - } - - virtual void movingWindowCheck(uint32_t currentStep) - { - const SubGrid& subGrid = Environment::get().SubGrid(); - GridLayout gridLayout(subGrid.getLocalDomain().size, MappingDesc::SuperCellSize::toRT()); - if (MovingWindow::getInstance().slideInCurrentStep(currentStep)) - { - GridController& gc = Environment::get().GridController(); - if (gc.slide()) - { - particleStorage[TypeAsIdentifier()]->reset(currentStep); - //set E field - // - float3_X tmpE; - tmpE.x() = E_X; - tmpE.y() = E_Y; - tmpE.z() = E_Z; - this->fieldE->getGridBuffer().getDeviceBuffer().setValue(tmpE); - - //set B field - // - float3_X tmpB; - tmpB.x() = B_X; - tmpB.y() = B_Y; - tmpB.z() = B_Z; - this->fieldB->getGridBuffer().getDeviceBuffer().setValue(tmpB); - - std::cout << "slide" << std::endl; - } - } - } - -}; - -} // namespace picongpu - diff --git a/examples/SingleParticleCurrent/include/particles/ParticlesInitOneParticle.hpp b/examples/SingleParticleCurrent/include/particles/ParticlesInitOneParticle.hpp deleted file mode 100644 index 43cbed53ba..0000000000 --- a/examples/SingleParticleCurrent/include/particles/ParticlesInitOneParticle.hpp +++ /dev/null @@ -1,145 +0,0 @@ -/** - * Copyright 2013-2017 Axel Huebl, Heiko Burau, Rene Widera, Richard Pausch - * - * This file is part of PIConGPU. - * - * PIConGPU is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * PIConGPU is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with PIConGPU. - * If not, see . - */ - -#pragma once - -#include "dimensions/DataSpace.hpp" -#include "pmacc_types.hpp" -#include "simulation_classTypes.hpp" -#include "mappings/simulation/SubGrid.hpp" - -#include "eventSystem/EventSystem.hpp" -#include "dimensions/DataSpaceOperations.hpp" - -#include "plugins/radiation/parameters.hpp" -#include "particles/operations/SetAttributeToDefault.hpp" - -namespace picongpu -{ - -struct kernelAddOneParticle -{ - template< class ParBox > - DINLINE void operator()(ParBox pb, DataSpace superCell, DataSpace parLocalCell) const - { - typedef typename ParBox::FramePtr FramePtr; - - FramePtr frame; - - int linearIdx = DataSpaceOperations::template map (parLocalCell); - - float_X parWeighting = particles::TYPICAL_NUM_PARTICLES_PER_MACROPARTICLE; - - frame = pb.getEmptyFrame(); - pb.setAsLastFrame(frame, superCell); - - - - - // many particle loop: - for (unsigned i = 0; i < 1; ++i) - { - - auto par = frame[i]; - - /** we now initialize all attributes of the new particle to their default values - * some attributes, such as the position, localCellIdx, weighting or the - * multiMask (\see AttrToIgnore) of the particle will be set individually - * in the following lines since they are already known at this point. - */ - { - typedef typename ParBox::FrameType FrameType; - typedef typename FrameType::ValueTypeSeq ParticleAttrList; - typedef bmpl::vector4, multiMask, localCellIdx, weighting> AttrToIgnore; - typedef typename ResolveAndRemoveFromSeq::type ParticleCleanedAttrList; - - algorithms::forEach::ForEach > setToDefault; - setToDefault(forward(par)); - } - floatD_X pos = float3_X(LOCAL_POS_X, LOCAL_POS_Y, LOCAL_POS_Z).shrink(); - - const float_X GAMMA0 = (float_X) (1.0 / sqrt(1.0 - (BETA0_X * BETA0_X + BETA0_Y * BETA0_Y + BETA0_Z * BETA0_Z))); - float3_X mom = float3_X( - GAMMA0 * attribute::getMass(parWeighting,par) * float_X(BETA0_X) * SPEED_OF_LIGHT, - GAMMA0 * attribute::getMass(parWeighting,par) * float_X(BETA0_Y) * SPEED_OF_LIGHT, - GAMMA0 * attribute::getMass(parWeighting,par) * float_X(BETA0_Z) * SPEED_OF_LIGHT - ); - - par[position_] = pos; - par[momentum_] = mom; - par[multiMask_] = 1; - par[localCellIdx_] = linearIdx; - par[weighting_] = parWeighting; - -#if( ENABLE_RADIATION == 1 ) -# if( RAD_MARK_PARTICLE>1 ) || ( RAD_ACTIVATE_GAMMA_FILTER!=0 ) - par[radiationFlag_] = true; -# endif -#endif - } - } -}; - -template -class ParticlesInitOneParticle -{ -public: - - static void addOneParticle(ParticlesClass& parClass, MappingDesc cellDescription, DataSpace globalCell) - { - - const SubGrid& subGrid = Environment::get().SubGrid(); - const DataSpace globalTopLeft = subGrid.getLocalDomain().offset; - const DataSpace localSimulationArea = subGrid.getLocalDomain().size; - - DataSpace localParCell = globalCell - globalTopLeft; - - - for (int i = 0; i < (int) simDim; ++i) - { - //chek if particle is in the simulation area - if (localParCell[i] < 0 || localParCell[i] >= localSimulationArea[i]) - return; - } - - //calculate supercell - DataSpace localSuperCell = (localParCell / MappingDesc::SuperCellSize::toRT()); - DataSpace cellInSuperCell = localParCell - (localSuperCell * MappingDesc::SuperCellSize::toRT()); - //add garding blocks to supercell - localSuperCell = localSuperCell + cellDescription.getGuardingSuperCells(); - - std::cout << "localParCell: " << localParCell << std::endl; - std::cout << "localSuperCell: " << localSuperCell << std::endl; - std::cout << "cellInSuperCell: " << cellInSuperCell << std::endl; - - PMACC_KERNEL(kernelAddOneParticle{}) - (1, 1) - (parClass.getDeviceParticlesBox(), - localSuperCell, cellInSuperCell); - - parClass.fillAllGaps(); - - std::cout << "Wait for add particle" << std::endl; - __getTransactionEvent().waitForFinished(); - } -}; -} - diff --git a/examples/SingleParticleCurrent/include/simulation_defines/extensionParam.loader b/examples/SingleParticleCurrent/include/simulation_defines/extensionParam.loader deleted file mode 100644 index aa269921ea..0000000000 --- a/examples/SingleParticleCurrent/include/simulation_defines/extensionParam.loader +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Copyright 2013-2017 Axel Huebl, Heiko Burau, Rene Widera - * - * This file is part of PIConGPU. - * - * PIConGPU is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * PIConGPU is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with PIConGPU. - * If not, see . - */ - -#pragma once - -#include "simulation_defines/param/backgroundFields.param" diff --git a/examples/SingleParticleCurrent/include/simulation_defines/extensionUnitless.loader b/examples/SingleParticleCurrent/include/simulation_defines/extensionUnitless.loader deleted file mode 100644 index d8edac4b38..0000000000 --- a/examples/SingleParticleCurrent/include/simulation_defines/extensionUnitless.loader +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Copyright 2013-2017 Axel Huebl, Heiko Burau, Rene Widera - * - * This file is part of PIConGPU. - * - * PIConGPU is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * PIConGPU is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with PIConGPU. - * If not, see . - */ - -#pragma once - -#include "simulation_defines/unitless/backgroundFields.unitless" diff --git a/examples/SingleParticleCurrent/include/simulation_defines/param/backgroundFields.param b/examples/SingleParticleCurrent/include/simulation_defines/param/backgroundFields.param deleted file mode 100644 index c468d6c624..0000000000 --- a/examples/SingleParticleCurrent/include/simulation_defines/param/backgroundFields.param +++ /dev/null @@ -1,50 +0,0 @@ -/** - * Copyright 2013-2017 Axel Huebl, Heiko Burau, Rene Widera - * - * This file is part of PIConGPU. - * - * PIConGPU is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * PIConGPU is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with PIConGPU. - * If not, see . - */ - - - -#pragma once - -namespace picongpu -{ - // Init Beta = v/c for the Electron - constexpr float_64 BETA0_X = 0.5; //unit: none - constexpr float_64 BETA0_Y = 0.0; //unit: none - constexpr float_64 BETA0_Z = 0.0; //unit: none - - // position of the single particle within the cell - constexpr float_64 LOCAL_POS_X = 0.0; //unit: none - constexpr float_64 LOCAL_POS_Y = 0.5; //unit: none - constexpr float_64 LOCAL_POS_Z = 0.5; //unit: none - - namespace SI - { - // Constant Background Fields - constexpr float_64 E_X_SI = 0.0; //unit: Volt /meter - constexpr float_64 E_Y_SI = 0.0; //-1.0e13; //unit: Volt /meter - constexpr float_64 E_Z_SI = 0.0; //unit: Volt /meter - - constexpr float_64 B_X_SI = 0.0; //unit: Tesla = Vs/m^2 - constexpr float_64 B_Y_SI = 0.0; //unit: Tesla = Vs/m^2 - constexpr float_64 B_Z_SI = 0.0; //unit: Tesla = Vs/m^2 - } - -} - diff --git a/examples/SingleParticleCurrent/include/simulation_defines/param/componentsConfig.param b/examples/SingleParticleCurrent/include/simulation_defines/param/componentsConfig.param deleted file mode 100644 index 54e49efc79..0000000000 --- a/examples/SingleParticleCurrent/include/simulation_defines/param/componentsConfig.param +++ /dev/null @@ -1,58 +0,0 @@ -/** - * Copyright 2013-2017 Axel Huebl, Heiko Burau, Anton Helm, Rene Widera, - * Richard Pausch - * - * This file is part of PIConGPU. - * - * PIConGPU is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * PIConGPU is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with PIConGPU. - * If not, see . - */ - - - -#pragma once - -namespace picongpu -{ -/** Simulation Starter --------------------------------------------------- - * - singleParticleTest : unique starter for this test - */ -namespace simulation_starter = singleParticleTest; - -/*! Laser Configuration -------------------------------------------------- - * - laserNone : no laser init - * - laserGaussianBeam : Gaussian beam (focusing) - * - laserPulseFrontTilt : Gaussian beam with a tilted pulse envelope - * in 'x' direction - * - laserWavepacket : wavepacket (Gaussian in time and space, not focusing) - * - laserPlaneWave : a plane wave - * - laserPolynom : a polynomial laser envelope - */ -namespace laserProfile = laserNone; - -/*! Field Configuration -------------------------------------------------- - * - fieldSolverYee : standard Yee solver - * - fieldSolverLehe: Num. Cherenkov free field solver in y direction - * - fieldSolverDirSplitting: Sentoku's Directional Splitting Method - * - fieldSolverNone: disable the vacuum update of E and B - * - * * For development purposes: --------------------------------------------- - * - fieldSolverYeeNative : generic version of fieldSolverYee - * (need more shared memory per GPU and is slow) - */ -namespace fieldSolver = fieldSolverNone; - -#define ENABLE_CURRENT 0 - -} diff --git a/examples/SingleParticleCurrent/include/simulation_defines/param/gridConfig.param b/examples/SingleParticleCurrent/include/simulation_defines/param/gridConfig.param deleted file mode 100644 index fd38700b6d..0000000000 --- a/examples/SingleParticleCurrent/include/simulation_defines/param/gridConfig.param +++ /dev/null @@ -1,89 +0,0 @@ -/** - * Copyright 2013-2017 Heiko Burau, Benjamin Worpitz - * - * This file is part of PIConGPU. - * - * PIConGPU is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * PIConGPU is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with PIConGPU. - * If not, see . - */ - - - -#pragma once - -namespace picongpu -{ - - namespace SI - { - /** Duration of one timestep - * unit: seconds */ - constexpr float_64 DELTA_T_SI = 0.8e-16; - - /** equals X - * unit: meter */ - constexpr float_64 CELL_WIDTH_SI = 2.0 * SPEED_OF_LIGHT_SI * DELTA_T_SI; - /** equals Y - * unit: meter */ - constexpr float_64 CELL_HEIGHT_SI = CELL_WIDTH_SI; - /** equals Z - * unit: meter */ - constexpr float_64 CELL_DEPTH_SI = CELL_WIDTH_SI; - - /** Note on units in reduced dimensions - * - * In 2D3V simulations, the CELL_DEPTH_SI (Z) cell length - * is still used for normalization of densities, etc. - * - * A 2D3V simulation in a cartesian PIC simulation such as - * ours only changes the degrees of freedom in motion for - * (macro) particles and all (field) information in z - * travels instantaneous, making the 2D3V simulation - * behave like the interaction of infinite "wire particles" - * in fields with perfect symmetry in Z. - */ - } //namespace SI - - //! Defines the size of the absorbing zone (in cells) - const uint32_t ABSORBER_CELLS[3][2] = { - {32, 32}, /*x direction [negative,positive]*/ - {32, 32}, /*y direction [negative,positive]*/ - {32, 32} /*z direction [negative,positive]*/ - }; //unit: number of cells - - //! Define the strength of the absorber for any direction - const float_X ABSORBER_STRENGTH[3][2] = { - {1.0e-3, 1.0e-3}, /*x direction [negative,positive]*/ - {1.0e-3, 1.0e-3}, /*y direction [negative,positive]*/ - {1.0e-3, 1.0e-3} /*z direction [negative,positive]*/ - }; //unit: none - - constexpr uint32_t ABSORBER_FADE_IN_STEPS = 16; - - /** When to move the co-moving window. - * An initial pseudo particle, flying with the speed of light, - * is fired at the begin of the simulation. - * When it reaches slide_point % of the absolute(*) simulation area, - * the co-moving window starts to move with the speed of light. - * - * (*) Note: beware, that there is one "hidden" row of gpus at the y-front, - * when you use the co-moving window - * 0.75 means only 75% of simulation area is used for real simulation - */ - constexpr float_64 slide_point = 0.90; - -} - - - diff --git a/examples/SingleParticleCurrent/include/simulation_defines/param/particleConfig.param b/examples/SingleParticleCurrent/include/simulation_defines/param/particleConfig.param deleted file mode 100644 index a44147615d..0000000000 --- a/examples/SingleParticleCurrent/include/simulation_defines/param/particleConfig.param +++ /dev/null @@ -1,45 +0,0 @@ -/** - * Copyright 2013-2017 Axel Huebl, Rene Widera - * - * This file is part of PIConGPU. - * - * PIConGPU is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * PIConGPU is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with PIConGPU. - * If not, see . - */ - - - -#pragma once - -#include "particles/startPosition/functors.def" -#include "particles/manipulators/manipulators.def" -#include "nvidia/functors/Add.hpp" -#include "nvidia/functors/Assign.hpp" - -namespace picongpu -{ - -namespace particles -{ - - /** a particle with a weighting below MIN_WEIGHTING will not - * be created / will be deleted - * unit: none */ - constexpr float_X MIN_WEIGHTING = 1.0; - - constexpr uint32_t TYPICAL_PARTICLES_PER_CELL = 1; - -} //namespace particles - -} //namespac picongpu diff --git a/examples/SingleParticleCurrent/include/simulation_defines/param/species.param b/examples/SingleParticleCurrent/include/simulation_defines/param/species.param deleted file mode 100644 index fecc18268e..0000000000 --- a/examples/SingleParticleCurrent/include/simulation_defines/param/species.param +++ /dev/null @@ -1,85 +0,0 @@ -/** - * Copyright 2014-2017 Rene Widera, Richard Pausch - * - * This file is part of PIConGPU. - * - * PIConGPU is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * PIConGPU is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with PIConGPU. - * If not, see . - */ - - - -#pragma once - -#include "particles/shapes.hpp" -#include "algorithms/FieldToParticleInterpolationNative.hpp" -#include "algorithms/FieldToParticleInterpolation.hpp" -#include "algorithms/AssignedTrilinearInterpolation.hpp" -#include "particles/shapes.hpp" - -#include "fields/currentDeposition/Solver.def" - - -/*enable (1) or disable (0) electrons*/ -#define ENABLE_ELECTRONS 1 -/*enable (1) or disable (0) ions*/ -#define ENABLE_IONS 0 - - -namespace picongpu -{ -/*---------------------------- generic solver---------------------------------*/ - -/*! Particle Shape definitions ------------------------------------------------- - * - particles::shapes::CIC : 1st order - * - particles::shapes::TSC : 2nd order - * - particles::shapes::PCS : 3rd order - * - particles::shapes::P4S : 4th order - * - * example: typedef particles::shapes::CIC CICShape; - */ -typedef particles::shapes::CIC UsedParticleShape; - -/* define which interpolation method is used to interpolate fields to particle*/ -typedef FieldToParticleInterpolation UsedField2Particle; - -/*! select current solver method ----------------------------------------------- - * - currentSolver::Esirkepov : particle shapes - CIC, TSC, PCS, P4S (1st to 4th order) - * - currentSolver::VillaBune<> : particle shapes - CIC (1st order) only - * - * For development purposes: --------------------------------------------------- - * - currentSolver::EsirkepovNative : generic version of currentSolverEsirkepov - * without optimization (~4x slower and needs more shared memory) - * - currentSolver::ZigZag : particle shapes - CIC, TSC, PCS, P4S (1st to 4th order) - */ -typedef currentSolver::Esirkepov UsedParticleCurrentSolver; - -/*! particle pusher configuration ---------------------------------------------- - * - * Define a pusher is optional for particles - * - * - particles::pusher::Vay : better suited relativistic boris pusher - * - particles::pusher::Boris : standard boris pusher - * - particles::pusher::ReducedLandauLifshitz : 4th order RungeKutta pusher - * with classical radiation reaction - * - * For development purposes: --------------------------------------------------- - * - particles::pusher::Axel : a pusher developed at HZDR during 2011 (testing) - * - particles::pusher::Free : free propagation, ignore fields - * (= free stream model) - * - particles::pusher::Photon : propagate with c in direction of normalized mom. - */ -typedef particles::pusher::Boris UsedParticlePusher; - -}//namespace picongpu diff --git a/examples/SingleParticleCurrent/include/simulation_defines/param/starter.param b/examples/SingleParticleCurrent/include/simulation_defines/param/starter.param deleted file mode 100644 index b63e6e7883..0000000000 --- a/examples/SingleParticleCurrent/include/simulation_defines/param/starter.param +++ /dev/null @@ -1,36 +0,0 @@ -/** - * Copyright 2013-2017 Axel Huebl, Heiko Burau, Rene Widera - * - * This file is part of PIConGPU. - * - * PIConGPU is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * PIConGPU is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with PIConGPU. - * If not, see . - */ - - - -#pragma once - - -namespace picongpu -{ - - namespace singleParticleTest - { - - } -} - - - diff --git a/examples/SingleParticleCurrent/include/simulation_defines/param/visColorScales.param b/examples/SingleParticleCurrent/include/simulation_defines/param/visColorScales.param deleted file mode 100644 index 16d414ef16..0000000000 --- a/examples/SingleParticleCurrent/include/simulation_defines/param/visColorScales.param +++ /dev/null @@ -1,117 +0,0 @@ -/** - * Copyright 2013-2017 Axel Huebl, Heiko Burau, Rene Widera - * - * This file is part of PIConGPU. - * - * PIConGPU is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * PIConGPU is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with PIConGPU. - * If not, see . - */ - - - -#pragma once - -#include "basicOperations.hpp" - -namespace picongpu -{ - namespace colorScales - { - namespace none - { - HDINLINE void addRGB( const float3_X&, - const float_X, - const float_X ) - { - return; - } - } - - namespace gray - { - HDINLINE void addRGB( float3_X& img, - const float_X value, - const float_X opacity ) - { - const float3_X myChannel( 1.0, 1.0, 1.0 ); - img = img - - opacity * float3_X( myChannel.x() * img.x(), - myChannel.y() * img.y(), - myChannel.z() * img.z() ) - + myChannel * value * opacity; - } - } - - namespace grayInv - { - HDINLINE void addRGB( float3_X& img, - const float_X value, - const float_X opacity ) - { - const float3_X myChannel( 1.0, 1.0, 1.0 ); - img = img - - opacity * float3_X( myChannel.x() * img.x(), - myChannel.y() * img.y(), - myChannel.z() * img.z() ) - + myChannel * (float_X(1.0) - value ) * opacity; - } - } - - namespace red - { - HDINLINE void addRGB( float3_X& img, - const float_X value, - const float_X opacity ) - { - const float3_X myChannel( 1.0, 0.0, 0.0 ); - img = img - - opacity * float3_X( myChannel.x() * img.x(), - myChannel.y() * img.y(), - myChannel.z() * img.z() ) - + myChannel * value * opacity; - } - } - - namespace green - { - HDINLINE void addRGB( float3_X& img, - const float_X value, - const float_X opacity ) - { - const float3_X myChannel( 0.0, 1.0, 0.0 ); - img = img - - opacity * float3_X( myChannel.x() * img.x(), - myChannel.y() * img.y(), - myChannel.z() * img.z() ) - + myChannel * value * opacity; - } - } - - namespace blue - { - HDINLINE void addRGB( float3_X& img, - const float_X value, - const float_X opacity ) - { - const float3_X myChannel( 0.0, 0.0, 1.0 ); - img = img - - opacity * float3_X( myChannel.x() * img.x(), - myChannel.y() * img.y(), - myChannel.z() * img.z() ) - + myChannel * value * opacity; - } - } - - } -} diff --git a/examples/SingleParticleCurrent/include/simulation_defines/param/visualization.param b/examples/SingleParticleCurrent/include/simulation_defines/param/visualization.param deleted file mode 100644 index 6d59de2b0b..0000000000 --- a/examples/SingleParticleCurrent/include/simulation_defines/param/visualization.param +++ /dev/null @@ -1,83 +0,0 @@ -/** - * Copyright 2013-2017 Axel Huebl, Heiko Burau, Rene Widera, Richard Pausch - * - * This file is part of PIConGPU. - * - * PIConGPU is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * PIConGPU is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with PIConGPU. - * If not, see . - */ - - -#pragma once - -#include -#include "basicOperations.hpp" - -namespace picongpu -{ -/*scale image before write to file, only scale if value is not 1.0 - */ -constexpr float_64 scale_image = 1.0; - -/*if true image is scaled if cellsize is not quadratic, else no scale*/ -constexpr bool scale_to_cellsize = true; - -constexpr bool white_box_per_GPU = false; - -namespace visPreview -{ -// normalize EM fields to typical laser or plasma quantities -//-1: Auto: enable adaptive scaling for each output -// 1: Laser: typical fields calculated out of the laser amplitude -// 2: Drift: typical fields caused by a drifting plasma -// 3: PlWave: typical fields calculated out of the plasma freq., -// assuming the wave moves approx. with c -// 4: Thermal: typical fields calculated out of the electron temperature -// 5: BlowOut: typical fields, assuming that a LWFA in the blowout -// regime causes a bubble with radius of approx. the laser's -// beam waist (use for bubble fields) -#define EM_FIELD_SCALE_CHANNEL1 -1 -#define EM_FIELD_SCALE_CHANNEL2 -1 -#define EM_FIELD_SCALE_CHANNEL3 -1 - -// multiply highest undisturbed particle density with factor -constexpr float_X preParticleDens_opacity = 1.0; -constexpr float_X preChannel1_opacity = 1.0; -constexpr float_X preChannel2_opacity = 1.0; -constexpr float_X preChannel3_opacity = 1.0; - -// specify color scales for each channel -namespace preParticleDensCol = colorScales::red; -namespace preChannel1Col = colorScales::green; -namespace preChannel2Col = colorScales::none; -namespace preChannel3Col = colorScales::none; - -/* png preview and liveview settings for each channel */ -DINLINE float_X preChannel1(const float3_X& field_B, const float3_X& field_E, const float3_X& field_J) -{ - return math::abs2(field_J); -} - -DINLINE float_X preChannel2(const float3_X& field_B, const float3_X& field_E, const float3_X& field_J) -{ - return field_E.x() * field_E.x(); -} - -DINLINE float_X preChannel3(const float3_X& field_B, const float3_X& field_E, const float3_X& field_J) -{ - return -float_X(1.0) * field_E.y(); -} -} -} - diff --git a/examples/SingleParticleCurrent/include/simulation_defines/unitless/backgroundFields.unitless b/examples/SingleParticleCurrent/include/simulation_defines/unitless/backgroundFields.unitless deleted file mode 100644 index 94727fe73f..0000000000 --- a/examples/SingleParticleCurrent/include/simulation_defines/unitless/backgroundFields.unitless +++ /dev/null @@ -1,38 +0,0 @@ -/** - * Copyright 2013-2017 Axel Huebl, Heiko Burau, Rene Widera - * - * This file is part of PIConGPU. - * - * PIConGPU is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * PIConGPU is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with PIConGPU. - * If not, see . - */ - - - -#pragma once - - -namespace picongpu -{ - // Constant Background Fields - constexpr float_X E_X = float_X( SI::E_X_SI / UNIT_EFIELD); //unit: Volt /meter - constexpr float_X E_Y = float_X( SI::E_Y_SI / UNIT_EFIELD); //unit: Volt /meter - constexpr float_X E_Z = float_X( SI::E_Z_SI / UNIT_EFIELD); //unit: Volt /meter - - constexpr float_X B_X = float_X( SI::B_X_SI / UNIT_BFIELD); //unit: Tesla = Vs/m^2 - constexpr float_X B_Y = float_X( SI::B_Y_SI / UNIT_BFIELD); //unit: Tesla = Vs/m^2 - constexpr float_X B_Z = float_X( SI::B_Z_SI / UNIT_BFIELD); //unit: Tesla = Vs/m^2 -} - - diff --git a/examples/SingleParticleCurrent/include/simulation_defines/unitless/physicalConstants.unitless b/examples/SingleParticleCurrent/include/simulation_defines/unitless/physicalConstants.unitless deleted file mode 100644 index 0cdf52b017..0000000000 --- a/examples/SingleParticleCurrent/include/simulation_defines/unitless/physicalConstants.unitless +++ /dev/null @@ -1,81 +0,0 @@ -/** - * Copyright 2013-2017 Axel Huebl, Rene Widera, Marco Garten, Heiko Burau - * - * This file is part of PIConGPU. - * - * PIConGPU is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * PIConGPU is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with PIConGPU. - * If not, see . - */ - - -#pragma once - -namespace picongpu -{ - /** Unit of Speed */ - constexpr float_64 UNIT_SPEED = SI::SPEED_OF_LIGHT_SI; - /** Unit of time */ - constexpr float_64 UNIT_TIME = SI::DELTA_T_SI; - /** Unit of length */ - constexpr float_64 UNIT_LENGTH = UNIT_TIME*UNIT_SPEED; - - namespace particles - { - /** Number of electrons per particle (= macro particle weighting) - * unit: none */ - constexpr float_X TYPICAL_NUM_PARTICLES_PER_MACROPARTICLE = 1; - - } - - - /** Unit of mass */ - constexpr float_64 UNIT_MASS = SI::ELECTRON_MASS_SI * double(particles::TYPICAL_NUM_PARTICLES_PER_MACROPARTICLE); - /** Unit of charge */ - constexpr float_64 UNIT_CHARGE = -1.0 * SI::ELECTRON_CHARGE_SI * double(particles::TYPICAL_NUM_PARTICLES_PER_MACROPARTICLE); - /** Unit of energy */ - constexpr float_64 UNIT_ENERGY = (UNIT_MASS * UNIT_LENGTH * UNIT_LENGTH / (UNIT_TIME * UNIT_TIME)); - /** Unit of EField: V/m */ - constexpr float_64 UNIT_EFIELD = 1.0 / (UNIT_TIME * UNIT_TIME / UNIT_MASS / UNIT_LENGTH * UNIT_CHARGE); - //** Unit of BField: Tesla [T] = Vs/m^2 */ - constexpr float_64 UNIT_BFIELD = (UNIT_MASS / (UNIT_TIME * UNIT_CHARGE)); - - - - - constexpr float_X SPEED_OF_LIGHT = float_X(SI::SPEED_OF_LIGHT_SI / UNIT_SPEED); - - //! reduced Planck constant - constexpr float_X HBAR = (float_X) (SI::HBAR_SI / UNIT_ENERGY / UNIT_TIME); - - //! Charge of electron - constexpr float_X ELECTRON_CHARGE = (float_X) (SI::ELECTRON_CHARGE_SI / UNIT_CHARGE); - //! Mass of electron - constexpr float_X ELECTRON_MASS = (float_X) (SI::ELECTRON_MASS_SI / UNIT_MASS); - - //! magnetic constant must be double 3.92907e-39 - constexpr float_X MUE0 = (float_X) (SI::MUE0_SI / UNIT_LENGTH / UNIT_MASS * UNIT_CHARGE * UNIT_CHARGE); - - //! electric constant must be double 2.54513e+38 - constexpr float_X EPS0 = (float_X) (1. / MUE0 / SPEED_OF_LIGHT / SPEED_OF_LIGHT); - - // = 1/c^2 - constexpr float_X MUE0_EPS0 = float_X(1. / SPEED_OF_LIGHT / SPEED_OF_LIGHT); - - /* Atomic unit of electric field in PIC Efield units */ - constexpr float_X ATOMIC_UNIT_EFIELD = float_X(SI::ATOMIC_UNIT_EFIELD / UNIT_EFIELD); - - /* Atomic unit of time in PIC units */ - constexpr float_X ATOMIC_UNIT_TIME = float_X(SI::ATOMIC_UNIT_TIME / UNIT_TIME); - -} //namespace picongpu diff --git a/examples/SingleParticleCurrent/include/simulation_defines/unitless/starter.unitless b/examples/SingleParticleCurrent/include/simulation_defines/unitless/starter.unitless deleted file mode 100644 index 02d4550819..0000000000 --- a/examples/SingleParticleCurrent/include/simulation_defines/unitless/starter.unitless +++ /dev/null @@ -1,44 +0,0 @@ -/** - * Copyright 2013-2017 Axel Huebl, Heiko Burau, Rene Widera - * - * This file is part of PIConGPU. - * - * PIConGPU is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * PIConGPU is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with PIConGPU. - * If not, see . - */ - - - -#pragma once - -#include "plugins/PluginController.hpp" -#include "initialization/InitPluginNone.hpp" -#include "OneParticleSimulation.hpp" -#include "simulationControl/SimulationStarter.hpp" - -namespace picongpu -{ - using namespace PMacc; - - - namespace singleParticleTest - { - typedef ::picongpu::SimulationStarter - < - ::picongpu::InitPluginNone, - ::picongpu::PluginController, - ::picongpu::OneParticleSimulation - > SimStarter; - } -} diff --git a/examples/SingleParticleCurrent/submit/0001gpus.cfg b/examples/SingleParticleCurrent/submit/0001gpus.cfg deleted file mode 100644 index 0de811cf60..0000000000 --- a/examples/SingleParticleCurrent/submit/0001gpus.cfg +++ /dev/null @@ -1,61 +0,0 @@ -# Copyright 2013-2017 Heiko Burau, Felix Schmitt, Axel Huebl -# -# This file is part of PIConGPU. -# -# PIConGPU is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# PIConGPU is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with PIConGPU. -# If not, see . -# - -## -## This configuration file is used by PIConGPU's TBG tool to create a -## batch script for PIConGPU runs. For a detailed description of PIConGPU -## configuration files including all available variables, see -## -## doc/TBG_macros.cfg -## - - -################################# -## Section: Required Variables ## -################################# - -TBG_wallTime="1:00:00" - -TBG_gpu_x=1 -TBG_gpu_y=1 -TBG_gpu_z=1 - -TBG_gridSize="-g 32 32 32" -TBG_steps="-s 1" - - -################################# -## Section: Optional Variables ## -################################# - - -################################# -## Section: Program Parameters ## -################################# - -TBG_devices="-d !TBG_gpu_x !TBG_gpu_y !TBG_gpu_z" - -TBG_programParams="!TBG_devices \ - !TBG_gridSize \ - !TBG_steps" - -# TOTAL number of GPUs -TBG_tasks="$(( TBG_gpu_x * TBG_gpu_y * TBG_gpu_z ))" - -"$TBG_cfgPath"/submitAction.sh diff --git a/examples/SingleParticleRadiationWithLaser/cmakeFlags b/examples/SingleParticleRadiationWithLaser/cmakeFlags deleted file mode 100755 index 600c184942..0000000000 --- a/examples/SingleParticleRadiationWithLaser/cmakeFlags +++ /dev/null @@ -1,46 +0,0 @@ -#!/usr/bin/env bash -# -# Copyright 2013-2017 Axel Huebl, Rene Widera, Richard Pausch -# -# This file is part of PIConGPU. -# -# PIConGPU is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# PIConGPU is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with PIConGPU. -# If not, see . -# - -# -# generic compile options -# - -################################################################################ -# add presets here -# - default: index 0 -# - start with zero index -# - increase by 1, no gaps - -flags[0]="-DCUDA_ARCH=20" -flags[1]="-DCUDA_ARCH=35 -DPARAM_OVERWRITES:LIST=-DPARAM_DIMENSION=DIM2" - - -################################################################################ -# execution - -case "$1" in - -l) echo ${#flags[@]} - ;; - -ll) for f in "${flags[@]}"; do echo $f; done - ;; - *) echo -n ${flags[$1]} - ;; -esac diff --git a/examples/SingleParticleRadiationWithLaser/documentation.yml b/examples/SingleParticleRadiationWithLaser/documentation.yml deleted file mode 100644 index 0a8646d851..0000000000 --- a/examples/SingleParticleRadiationWithLaser/documentation.yml +++ /dev/null @@ -1,59 +0,0 @@ ---- # Documentation for the SingleParticleRadiationWithLaser Example -example: - name: Thomson scattering from laser electron interaction - short: SingleElectronRadiation - author: Richard Pausch , Rene Widera - maintainer: Richard Pausch - - description: | - This is a simulation of a single macro particle representing an electron - that collides head-on with a laser pulse. Depending on the momentum - of the electron and the wavelength and intensity of the laser, the - emitted radiation differs. A general description of this simulation - can be found in *PauschDipl. A detailed analysis of this single - electron simulation can be found in *Pausch13. A theoretical - study of the emitted radiation in head-on laser electron collisions - can be found in *Esarey93. - - references: - - PauschDipl: &PauschDipl - author: Richard Pausch - title: Electromagnetic Radiation from Relativistic Electrons as Characteristic Signature of their Dynamics - journal: Diploma Thesis TU Dresden - year: 2012 - link: http://www.hzdr.de/db/Cms?pOid=38997 - - Pausch13: &Pausch13 - author: R. Pausch, A. Debus, R. Widera, K. Steiniger, A. Huebl, H. Burau, M. Bussmann, U. Schramm - title: How to test and verify radiation diagnostics simulations within particle-in-cell frameworks - journal: Nuclear Instruments and Methods in Physics Research Section A - year: 2013 - link: http://dx.doi.org/10.1016/j.nima.2013.10.073 - - Esarey93: &Esarey93 - author: E. Esarey, S. Ride, P. Sprangle - title: Nonlinear Thomson scattering of intense laser pulses from beams and plasmas - journal: Physical Review E - year: 1993 - link: http://dx.doi.org/10.1103/PhysRevE.48.3003 - ---- # Run-Time Tests for the Bunch Example -test: - - nonlinearThomsonScattering: - name: nonlinear Thomson scattering from a single electron - description: | - This test simulates an electron with a relativistic gamma - factor of gamma=5.0 interacting with a laser of a_0=1.0. - The resulting radiation should be boosted in the direction - of the electron's momentum and should contain higher - harmonics do to the high laser intensity. - cmakeflag: 0 - cfgfile: submit/0008gpus.cfg - gpus: 16 - - pre-run: - - echo "Starting nonlinear Thomson scattering Test" - post-run: - - echo "check emitted spectra (totalRad)" - - echo "compare with theoretical predictions:" - - echo "(higher harmonics, intensity, relativistic frequency shift)" - - echo "ok / failed" - diff --git a/examples/SingleParticleRadiationWithLaser/include/OneParticleSimulation.hpp b/examples/SingleParticleRadiationWithLaser/include/OneParticleSimulation.hpp deleted file mode 100644 index 5869005178..0000000000 --- a/examples/SingleParticleRadiationWithLaser/include/OneParticleSimulation.hpp +++ /dev/null @@ -1,194 +0,0 @@ -/** - * Copyright 2013-2017 Axel Huebl, Heiko Burau, Rene Widera, Richard Pausch - * - * This file is part of PIConGPU. - * - * PIConGPU is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * PIConGPU is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with PIConGPU. - * If not, see . - */ - -#pragma once - -#include "simulation_defines.hpp" -#include "Environment.hpp" - -#include "simulationControl/MySimulation.hpp" - -#include "simulationControl/SimulationHelper.hpp" -#include "simulation_classTypes.hpp" - - - -#include "fields/FieldB.hpp" -#include "fields/FieldE.hpp" -#include "fields/FieldJ.hpp" - - -#include "dimensions/GridLayout.hpp" -#include "simulation_types.hpp" -#include "eventSystem/EventSystem.hpp" -#include "fields/LaserPhysics.hpp" - -#include "nvidia/memory/MemoryInfo.hpp" -#include "mappings/kernel/MappingDescription.hpp" - -#include - -#include "plugins/PluginController.hpp" -#include "particles/ParticlesInitOneParticle.hpp" -#include "communication/AsyncCommunication.hpp" - - -namespace picongpu -{ - -using namespace PMacc; - -class OneParticleSimulation : public MySimulation -{ -public: - - OneParticleSimulation() : - MySimulation() - { - } - - virtual void init() - { - - MySimulation::init(); - - if (Environment::get().GridController().getGlobalRank() == 0) - { - std::cout << "max weighting " << particles::TYPICAL_NUM_PARTICLES_PER_MACROPARTICLE << std::endl; - std::cout << "courant=min(deltaCellSize)/dt/c > 1.77 ? " << std::min(CELL_WIDTH, std::min(CELL_DEPTH, CELL_HEIGHT)) / SPEED_OF_LIGHT / DELTA_T << std::endl; - std::cout << "y-cells per wavelength: " << laserProfile::WAVE_LENGTH / CELL_HEIGHT << std::endl; - - //const float_X y_R = M_PI * laserProfile::W0 * laserProfile::W0 / laserProfile::WAVE_LENGTH; //rayleigh length (in y-direction) - //std::cout << "focus/y_Rayleigh: " << laserProfile::FOCUS_POS / y_R << std::endl; - } - - - //diabled because we have a transaction bug - //StreamController::getInstance().addStreams(6); - } - - virtual uint32_t fillSimulation() - { - MySimulation::fillSimulation(); - - //add one particle in simulation - // - const SubGrid& subGrid = Environment::get().SubGrid(); - - const DataSpace halfSimSize(subGrid.getGlobalDomain().size / 2); - - GridLayout layout(subGrid.getLocalDomain().size, MappingDesc::SuperCellSize::toRT()); - MappingDesc cellDescription = MappingDesc(layout.getDataSpace(), GUARD_SIZE, GUARD_SIZE); - - DataSpace centerXZPlan(halfSimSize); - centerXZPlan.y() = OneParticleOffset; - - ParticlesInitOneParticle::addOneParticle(*particleStorage[TypeAsIdentifier()], - cellDescription, - centerXZPlan); - - - //set E field - // - float3_X tmpE; - tmpE.x() = E_X; - tmpE.y() = E_Y; - tmpE.z() = E_Z; - this->fieldE->getGridBuffer().getDeviceBuffer().setValue(tmpE); - - //set B field - // - float3_X tmpB; - tmpB.x() = B_X; - tmpB.y() = B_Y; - tmpB.z() = B_Z; - this->fieldB->getGridBuffer().getDeviceBuffer().setValue(tmpB); - - // communicate all fields - EventTask eRfieldE = fieldE->asyncCommunication(__getTransactionEvent()); - __setTransactionEvent(eRfieldE); - EventTask eRfieldB = fieldB->asyncCommunication(__getTransactionEvent()); - __setTransactionEvent(eRfieldB); - - return 0; - } - - /** - * Run one simulation step. - * - * @param currentStep iteration number of the current step - */ - virtual void runOneStep(uint32_t currentStep) - { - FieldJ::ValueType zeroJ( FieldJ::ValueType::create(0.) ); - fieldJ->assign( zeroJ ); - - __startTransaction(__getTransactionEvent()); - EventTask initEvent = __getTransactionEvent(); - EventTask updateEvent; - EventTask commEvent; - - /* push all species */ - particles::PushAllSpecies pushAllSpecies; - pushAllSpecies(particleStorage, currentStep, initEvent, updateEvent, commEvent); - __setTransactionEvent(updateEvent + commEvent); - - this->myFieldSolver->update_beforeCurrent(currentStep); - this->myFieldSolver->update_afterCurrent(currentStep); - - - } - - virtual void movingWindowCheck(uint32_t currentStep) - { - const SubGrid& subGrid = Environment::get().SubGrid(); - GridLayout gridLayout(subGrid.getLocalDomain().size, MappingDesc::SuperCellSize::toRT()); - if (MovingWindow::getInstance().slideInCurrentStep(currentStep)) - { - GridController& gc = Environment::get().GridController(); - if (gc.slide()) - { - particleStorage[TypeAsIdentifier()]->reset(currentStep); - //set E field - // - float3_X tmpE; - tmpE.x() = E_X; - tmpE.y() = E_Y; - tmpE.z() = E_Z; - this->fieldE->getGridBuffer().getDeviceBuffer().setValue(tmpE); - - //set B field - // - float3_X tmpB; - tmpB.x() = B_X; - tmpB.y() = B_Y; - tmpB.z() = B_Z; - this->fieldB->getGridBuffer().getDeviceBuffer().setValue(tmpB); - - std::cout << "slide" << std::endl; - } - } - } - - -}; - -} // namespace picongpu - diff --git a/examples/SingleParticleRadiationWithLaser/include/particles/ParticlesInitOneParticle.hpp b/examples/SingleParticleRadiationWithLaser/include/particles/ParticlesInitOneParticle.hpp deleted file mode 100644 index 0d60ee2897..0000000000 --- a/examples/SingleParticleRadiationWithLaser/include/particles/ParticlesInitOneParticle.hpp +++ /dev/null @@ -1,148 +0,0 @@ -/** - * Copyright 2013-2017 Axel Huebl, Rene Widera, Richard Pausch - * - * This file is part of PIConGPU. - * - * PIConGPU is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * PIConGPU is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with PIConGPU. - * If not, see . - */ - - - -#pragma once - -#include "pmacc_types.hpp" -#include "simulation_defines.hpp" -#include "dimensions/DataSpace.hpp" - -#include "mappings/simulation/SubGrid.hpp" - -#include "eventSystem/EventSystem.hpp" -#include "dimensions/DataSpaceOperations.hpp" - -#include "plugins/radiation/parameters.hpp" -#include "particles/operations/SetAttributeToDefault.hpp" - -namespace picongpu -{ - -struct kernelAddOneParticle -{ - template< class ParBox> - DINLINE void operator()(ParBox pb, DataSpace superCell, DataSpace parLocalCell) const - { - typedef typename ParBox::FramePtr FramePtr; - - FramePtr frame; - - int linearIdx = DataSpaceOperations::template map (parLocalCell); - - float_X parWeighting = particles::TYPICAL_NUM_PARTICLES_PER_MACROPARTICLE; - - frame = pb.getEmptyFrame(); - pb.setAsLastFrame(frame, superCell); - - - - - // many particle loop: - for (unsigned i = 0; i < 1; ++i) - { - auto par = frame[i]; - - /** we now initialize all attributes of the new particle to their default values - * some attributes, such as the position, localCellIdx, weighting or the - * multiMask (\see AttrToIgnore) of the particle will be set individually - * in the following lines since they are already known at this point. - */ - { - typedef typename ParBox::FrameType FrameType; - typedef typename FrameType::ValueTypeSeq ParticleAttrList; - typedef bmpl::vector4, multiMask, localCellIdx, weighting> AttrToIgnore; - typedef typename ResolveAndRemoveFromSeq::type ParticleCleanedAttrList; - - algorithms::forEach::ForEach > setToDefault; - setToDefault(forward(par)); - } - - floatD_X pos(floatD_X::create(0.5)); - - const float_X GAMMA0_X = 1.0f / sqrtf(1.0f - float_X(BETA0_X * BETA0_X)); - const float_X GAMMA0_Y = 1.0f / sqrtf(1.0f - float_X(BETA0_Y * BETA0_Y)); - const float_X GAMMA0_Z = 1.0f / sqrtf(1.0f - float_X(BETA0_Z * BETA0_Z)); - float3_X mom = float3_X( - GAMMA0_X * attribute::getMass(parWeighting,par) * float_X(BETA0_X) * SPEED_OF_LIGHT, - GAMMA0_Y * attribute::getMass(parWeighting,par) * float_X(BETA0_Y) * SPEED_OF_LIGHT, - GAMMA0_Z * attribute::getMass(parWeighting,par) * float_X(BETA0_Z) * SPEED_OF_LIGHT - ); - - par[position_] = pos; - par[momentum_] = mom; - par[multiMask_] = 1; - par[localCellIdx_] = linearIdx; - par[weighting_] = parWeighting; - -#if( ENABLE_RADIATION == 1 ) -# if( RAD_MARK_PARTICLE>1 ) || ( RAD_ACTIVATE_GAMMA_FILTER!=0 ) - par[radiationFlag_] = true; -# endif -#endif - } - } -}; - -template -class ParticlesInitOneParticle -{ -public: - - static void addOneParticle(ParticlesClass& parClass, MappingDesc cellDescription, DataSpace globalCell) - { - - const SubGrid& subGrid = Environment::get().SubGrid(); - const DataSpace globalTopLeft = subGrid.getLocalDomain().offset; - const DataSpace localSimulationArea = subGrid.getLocalDomain().size; - DataSpace localParCell = globalCell - globalTopLeft; - - - for (int i = 0; i < (int) simDim; ++i) - { - //chek if particle is in the simulation area - if (localParCell[i] < 0 || localParCell[i] >= localSimulationArea[i]) - return; - } - - //calculate supercell - DataSpace localSuperCell = (localParCell / MappingDesc::SuperCellSize::toRT()); - DataSpace cellInSuperCell = localParCell - (localSuperCell * MappingDesc::SuperCellSize::toRT()); - //add garding blocks to supercell - localSuperCell = localSuperCell + cellDescription.getGuardingSuperCells(); - - - PMACC_KERNEL(kernelAddOneParticle{}) - (1, 1) - (parClass.getDeviceParticlesBox(), - localSuperCell, cellInSuperCell); - - parClass.fillAllGaps(); - - std::cout << "Wait for add particle" << std::endl; - __getTransactionEvent().waitForFinished(); - } -}; -} - - - diff --git a/examples/SingleParticleRadiationWithLaser/include/simulation_defines/extensionParam.loader b/examples/SingleParticleRadiationWithLaser/include/simulation_defines/extensionParam.loader deleted file mode 100644 index b4c8bf4f2e..0000000000 --- a/examples/SingleParticleRadiationWithLaser/include/simulation_defines/extensionParam.loader +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Copyright 2013-2017 Rene Widera - * - * This file is part of PIConGPU. - * - * PIConGPU is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * PIConGPU is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with PIConGPU. - * If not, see . - */ - -#pragma once - -#include "simulation_defines/param/testExtension.param" diff --git a/examples/SingleParticleRadiationWithLaser/include/simulation_defines/extensionUnitless.loader b/examples/SingleParticleRadiationWithLaser/include/simulation_defines/extensionUnitless.loader deleted file mode 100644 index da7491f9d1..0000000000 --- a/examples/SingleParticleRadiationWithLaser/include/simulation_defines/extensionUnitless.loader +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Copyright 2013-2017 Rene Widera - * - * This file is part of PIConGPU. - * - * PIConGPU is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * PIConGPU is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with PIConGPU. - * If not, see . - */ - -#pragma once - -#include "simulation_defines/unitless/testExtension.unitless" diff --git a/examples/SingleParticleRadiationWithLaser/include/simulation_defines/param/componentsConfig.param b/examples/SingleParticleRadiationWithLaser/include/simulation_defines/param/componentsConfig.param deleted file mode 100644 index fa7062b36d..0000000000 --- a/examples/SingleParticleRadiationWithLaser/include/simulation_defines/param/componentsConfig.param +++ /dev/null @@ -1,57 +0,0 @@ -/** - * Copyright 2013-2017 Axel Huebl, Anton Helm, Rene Widera, Richard Pausch - * - * This file is part of PIConGPU. - * - * PIConGPU is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * PIConGPU is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with PIConGPU. - * If not, see . - */ - - - -#pragma once - -namespace picongpu -{ -/** Simulation Starter --------------------------------------------------- - * - radiationTest : unique starter for this test - */ -namespace simulation_starter = radiationTest; - -/*! Laser Configuration -------------------------------------------------- - * - laserNone : no laser init - * - laserGaussianBeam : Gaussian beam (focusing) - * - laserPulseFrontTilt : Gaussian beam with a tilted pulse envelope - * in 'x' direction - * - laserWavepacket : wavepacket (Gaussian in time and space, not focusing) - * - laserPlaneWave : a plane wave - * - laserPolynom : a polynomial laser envelope - */ -namespace laserProfile = laserPlaneWave; - -/*! Field Configuration -------------------------------------------------- - * - fieldSolverYee : standard Yee solver - * - fieldSolverLehe: Num. Cherenkov free field solver in a chosen direction - * - fieldSolverDirSplitting: Sentoku's Directional Splitting Method - * - fieldSolverNone: disable the vacuum update of E and B - * - * * For development purposes: --------------------------------------------- - * - fieldSolverYeeNative : generic version of fieldSolverYee - * (need more shared memory per GPU and is slow) - */ -namespace fieldSolver = fieldSolverYee; - -#define ENABLE_CURRENT 0 - -} diff --git a/examples/SingleParticleRadiationWithLaser/include/simulation_defines/param/dimension.param b/examples/SingleParticleRadiationWithLaser/include/simulation_defines/param/dimension.param deleted file mode 100644 index 9a83401a0c..0000000000 --- a/examples/SingleParticleRadiationWithLaser/include/simulation_defines/param/dimension.param +++ /dev/null @@ -1,32 +0,0 @@ -/** - * Copyright 2014-2017 Axel Huebl, Rene Widera, Richard Pausch - * - * This file is part of PIConGPU. - * - * PIConGPU is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * PIConGPU is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with PIConGPU. - * If not, see . - */ - -#pragma once - -#ifndef PARAM_DIMENSION -#define PARAM_DIMENSION DIM3 -#endif - -#define SIMDIM PARAM_DIMENSION - -namespace picongpu -{ - constexpr uint32_t simDim = SIMDIM; -} // namespace picongpu diff --git a/examples/SingleParticleRadiationWithLaser/include/simulation_defines/param/gridConfig.param b/examples/SingleParticleRadiationWithLaser/include/simulation_defines/param/gridConfig.param deleted file mode 100644 index 9c330c8717..0000000000 --- a/examples/SingleParticleRadiationWithLaser/include/simulation_defines/param/gridConfig.param +++ /dev/null @@ -1,89 +0,0 @@ -/** - * Copyright 2013-2017 Rene Widera, Richard Pausch, Benjamin Worpitz - * - * This file is part of PIConGPU. - * - * PIConGPU is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * PIConGPU is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with PIConGPU. - * If not, see . - */ - - - -#pragma once - -namespace picongpu -{ - - namespace SI - { - /** Duration of one timestep - * unit: seconds */ - constexpr float_64 DELTA_T_SI = 1.66789e-17; - - /** equals X - * unit: meter */ - constexpr float_64 CELL_WIDTH_SI = 0.16e-6; - /** equals Y - the laser & moving window propagation direction - * unit: meter */ - constexpr float_64 CELL_HEIGHT_SI = 0.20e-7; - /** equals Z - * unit: meter */ - constexpr float_64 CELL_DEPTH_SI = CELL_WIDTH_SI; - - /** Note on units in reduced dimensions - * - * In 2D3V simulations, the CELL_DEPTH_SI (Z) cell length - * is still used for normalization of densities, etc. - * - * A 2D3V simulation in a cartesian PIC simulation such as - * ours only changes the degrees of freedom in motion for - * (macro) particles and all (field) information in z - * travels instantaneous, making the 2D3V simulation - * behave like the interaction of infinite "wire particles" - * in fields with perfect symmetry in Z. - */ - } //namespace SI - - //! Defines the size of the absorbing zone (in cells) - const uint32_t ABSORBER_CELLS[3][2] = { - {32, 32}, /*x direction [negative,positive]*/ - {32, 32}, /*y direction [negative,positive]*/ - {32, 32} /*z direction [negative,positive]*/ - }; //unit: number of cells - - //! Define the strength of the absorber for any direction - const float_X ABSORBER_STRENGTH[3][2] = { - {1.0e-3, 1.0e-3}, /*x direction [negative,positive]*/ - {1.0e-3, 1.0e-3}, /*y direction [negative,positive]*/ - {1.0e-3, 1.0e-3} /*z direction [negative,positive]*/ - }; //unit: none - - constexpr uint32_t ABSORBER_FADE_IN_STEPS = 16; - - /** When to move the co-moving window. - * An initial pseudo particle, flying with the speed of light, - * is fired at the begin of the simulation. - * When it reaches slide_point % of the absolute(*) simulation area, - * the co-moving window starts to move with the speed of light. - * - * (*) Note: beware, that there is one "hidden" row of gpus at the y-front, - * when you use the co-moving window - * 0.75 means only 75% of simulation area is used for real simulation - */ - constexpr float_64 slide_point = 0.95; - -} - - - diff --git a/examples/SingleParticleRadiationWithLaser/include/simulation_defines/param/laserConfig.param b/examples/SingleParticleRadiationWithLaser/include/simulation_defines/param/laserConfig.param deleted file mode 100644 index 803dff94a3..0000000000 --- a/examples/SingleParticleRadiationWithLaser/include/simulation_defines/param/laserConfig.param +++ /dev/null @@ -1,334 +0,0 @@ -/** - * Copyright 2013-2017 Axel Huebl, Anton Helm, Rene Widera, Richard Pausch, Alexander Debus - * - * This file is part of PIConGPU. - * - * PIConGPU is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * PIConGPU is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with PIConGPU. - * If not, see . - */ - - - -#pragma once - - -namespace picongpu -{ -namespace laserGaussianBeam -{ -// Asymetric sinus used: starts with phase=0 at center --> E-field=0 at center -namespace SI -{ -/** unit: meter */ -constexpr float_64 WAVE_LENGTH_SI = 0.8e-6; - -/** UNITCONV */ -constexpr float_64 UNITCONV_A0_to_Amplitude_SI = -2.0 * PI / WAVE_LENGTH_SI * ::picongpu::SI::ELECTRON_MASS_SI * ::picongpu::SI::SPEED_OF_LIGHT_SI * ::picongpu::SI::SPEED_OF_LIGHT_SI / ::picongpu::SI::ELECTRON_CHARGE_SI; - -/** unit: W / m^2 */ -// calculate: _A0 = 8.549297e-6 * sqrt( Intensity[W/m^2] ) * wavelength[m] (linearly polarized) - -/** unit: none */ -//constexpr float_64 _A0 = 1.5; - -/** unit: Volt /meter */ -//constexpr float_64 AMPLITUDE_SI = _A0 * UNITCONV_A0_to_Amplitude_SI; - -/** unit: Volt /meter */ -constexpr float_64 AMPLITUDE_SI = 1.738e13; - -/** Pulse length: sigma of std. gauss for intensity (E^2) - * PULSE_LENGTH_SI = FWHM_of_Intensity / [ 2*sqrt{ 2* ln(2) } ] - * [ 2.354820045 ] - * Info: FWHM_of_Intensity = FWHM_Illumination - * = what a experimentalist calls "pulse duration" - * unit: seconds (1 sigma) */ -constexpr float_64 PULSE_LENGTH_SI = 10.615e-15 / 4.0; - -/** beam waist: distance from the axis where the pulse intensity (E^2) - * decreases to its 1/e^2-th part, - * at the focus position of the laser - * W0_SI = FWHM_of_Intensity / sqrt{ 2* ln(2) } - * [ 1.17741 ] - * unit: meter */ -constexpr float_64 W0_SI = 5.0e-6 / 1.17741; -/** the distance to the laser focus in y-direction - * unit: meter */ -constexpr float_64 FOCUS_POS_SI = 4.62e-5; -} -/** The laser pulse will be initialized PULSE_INIT times of the PULSE_LENGTH - * unit: none */ -constexpr float_64 PULSE_INIT = 20.0; - -/* laser phase shift (no shift: 0.0) */ -constexpr float_X LASER_PHASE = 0.0; /* unit: rad, periodic in 2*pi */ - -/* Use only the 0th Laguerremode for a standard Gaussian */ -constexpr uint32_t MODENUMBER = 0; -PMACC_CONST_VECTOR(float_X, MODENUMBER + 1, LAGUERREMODES, 1.0); - -enum PolarisationType -{ - LINEAR_X = 1u, - LINEAR_Z = 2u, - CIRCULAR = 4u, -}; -constexpr PolarisationType Polarisation = CIRCULAR; -} - -namespace laserPulseFrontTilt -{ -// Asymetric sinus used: starts with phase=0 at center --> E-field=0 at center -namespace SI -{ -/** unit: meter */ -constexpr float_64 WAVE_LENGTH_SI = 0.8e-6; - -/** UNITCONV */ -constexpr float_64 UNITCONV_A0_to_Amplitude_SI = -2.0 * PI / WAVE_LENGTH_SI * ::picongpu::SI::ELECTRON_MASS_SI * ::picongpu::SI::SPEED_OF_LIGHT_SI * ::picongpu::SI::SPEED_OF_LIGHT_SI / ::picongpu::SI::ELECTRON_CHARGE_SI; - -/** unit: W / m^2 */ -// calculate: _A0 = 8.549297e-6 * sqrt( Intensity[W/m^2] ) * wavelength[m] (linearly polarized) - -/** unit: none */ -//constexpr float_64 _A0 = 1.5; - -/** unit: Volt /meter */ -//constexpr float_64 AMPLITUDE_SI = _A0 * UNITCONV_A0_to_Amplitude_SI; - -/** unit: Volt /meter */ -constexpr float_64 AMPLITUDE_SI = 1.738e13; - -/** Pulse length: sigma of std. gauss for intensity (E^2) - * PULSE_LENGTH_SI = FWHM_of_Intensity / [ 2*sqrt{ 2* ln(2) } ] - * [ 2.354820045 ] - * Info: FWHM_of_Intensity = FWHM_Illumination - * = what a experimentalist calls "pulse duration" - * unit: seconds (1 sigma) */ -constexpr float_64 PULSE_LENGTH_SI = 10.615e-15 / 4.0; - -/** beam waist: distance from the axis where the pulse intensity (E^2) - * decreases to its 1/e^2-th part, - * at the focus position of the laser - * W0_SI = FWHM_of_Intensity / sqrt{ 2* ln(2) } - * [ 1.17741 ] - * unit: meter */ -constexpr float_64 W0_SI = 5.0e-6 / 1.17741; - -/** the distance to the laser focus in y-direction - * unit: meter */ -constexpr float_64 FOCUS_POS_SI = 4.62e-5; - -/** the tilt angle between laser propagation in y-direction and laser axis in - * x-direction (0 degree == no tilt) - * unit: degree */ -constexpr float_64 TILT_X_SI = 0; -} -/** The laser pulse will be initialized PULSE_INIT times of the PULSE_LENGTH -* unit: none */ -constexpr float_64 PULSE_INIT = 20.0; - -/* laser phase shift (no shift: 0.0) */ -constexpr float_X LASER_PHASE = 0.0; /* unit: rad, periodic in 2*pi */ - -enum PolarisationType -{ - LINEAR_X = 1u, - LINEAR_Z = 2u, - CIRCULAR = 4u -}; -constexpr PolarisationType Polarisation = LINEAR_X; -} - -namespace laserPlaneWave -{ -// NOT-symetric sinus used: starts with phase=0 --> E-field=0 -namespace SI -{ -/** unit: meter */ -constexpr float_64 WAVE_LENGTH_SI = 0.8e-6; - -/** UNITCONV */ -constexpr float_64 UNITCONV_A0_to_Amplitude_SI = -2.0 * PI / WAVE_LENGTH_SI * ::picongpu::SI::ELECTRON_MASS_SI * ::picongpu::SI::SPEED_OF_LIGHT_SI * ::picongpu::SI::SPEED_OF_LIGHT_SI / ::picongpu::SI::ELECTRON_CHARGE_SI; - -/** unit: W / m^2 */ -// calculate: _A0 = 8.549297e-6 * sqrt( Intensity[W/m^2] ) * wavelength[m] (linearly polarized) - -/** unit: none */ -constexpr float_64 _A0 = 1.0; - -/** unit: Volt /meter */ -constexpr float_64 AMPLITUDE_SI = _A0 * UNITCONV_A0_to_Amplitude_SI; - -/** unit: Volt /meter */ -//constexpr float_64 AMPLITUDE_SI = 1.738e13; - -/** The profile of the test Lasers 0 and 2 can be stretched by a - * constant area between the up and downramp - * unit: seconds */ -constexpr float_64 LASER_NOFOCUS_CONSTANT_SI = /*13.34e-15;*/6.0 * WAVE_LENGTH_SI / ::picongpu::SI::SPEED_OF_LIGHT_SI; - -/** Pulse length: sigma of std. gauss for intensity (E^2) - * PULSE_LENGTH_SI = FWHM_of_Intensity / [ 2*sqrt{ 2* ln(2) } ] - * [ 2.354820045 ] - * Info: FWHM_of_Intensity = FWHM_Illumination - * = what a experimentalist calls "pulse duration" - * unit: seconds (1 sigma) */ -constexpr float_64 PULSE_LENGTH_SI = 10.615e-15 / 4.0; - -} - -/** The laser pulse will be initialized half of PULSE_INIT times of the PULSE_LENGTH before and after the plateau - * unit: none */ -constexpr float_64 RAMP_INIT = 20.6146; - -/* we use a sin(omega*time + laser_phase) function to set up the laser - define phase: */ -constexpr float_X LASER_PHASE = 0.0; /* unit: rad, periodic in 2*pi */ - -enum PolarisationType - { - LINEAR_X = 1u, - LINEAR_Z = 2u, - CIRCULAR = 4u, - }; -constexpr PolarisationType Polarisation = LINEAR_X; -} - -namespace laserWavepacket -{ -// Asymetric sinus used: starts with phase=0 at center --> E-field=0 at center -namespace SI -{ -/** unit: meter */ -constexpr float_64 WAVE_LENGTH_SI = 0.8e-6; - -/** UNITCONV */ -constexpr float_64 UNITCONV_A0_to_Amplitude_SI = -2.0 * PI / WAVE_LENGTH_SI * ::picongpu::SI::ELECTRON_MASS_SI * ::picongpu::SI::SPEED_OF_LIGHT_SI * ::picongpu::SI::SPEED_OF_LIGHT_SI / ::picongpu::SI::ELECTRON_CHARGE_SI; - -/** unit: W / m^2 */ -// calculate: _A0 = 8.549297e-6 * sqrt( Intensity[W/m^2] ) * wavelength[m] (linearly polarized) - -/** unit: none */ -//constexpr float_64 _A0 = 3.9; - -/** unit: Volt /meter */ -//constexpr float_64 AMPLITUDE_SI = _A0 * UNITCONV_A0_to_Amplitude_SI; - -/** unit: Volt /meter */ -constexpr float_64 AMPLITUDE_SI = 1.738e13; - -/** The profile of the test Lasers 0 and 2 can be stretched by a - * constant area between the up and downramp - * unit: seconds */ -constexpr float_64 LASER_NOFOCUS_CONSTANT_SI = 7.0 * WAVE_LENGTH_SI / ::picongpu::SI::SPEED_OF_LIGHT_SI; - -/** Pulse length: sigma of std. gauss for intensity (E^2) - * PULSE_LENGTH_SI = FWHM_of_Intensity / [ 2*sqrt{ 2* ln(2) } ] - * [ 2.354820045 ] - * Info: FWHM_of_Intensity = FWHM_Illumination - * = what a experimentalist calls "pulse duration" - * unit: seconds (1 sigma) */ -constexpr float_64 PULSE_LENGTH_SI = 10.615e-15 / 4.0; - -/** beam waist: distance from the axis where the pulse intensity (E^2) - * decreases to its 1/e^2-th part, - * WO_X_SI is this distance in x-direction - * W0_Z_SI is this distance in z-direction - * if both values are equal, the laser has a circular shape in x-z - * W0_SI = FWHM_of_Intensity / sqrt{ 2* ln(2) } - * [ 1.17741 ] - * unit: meter */ -constexpr float_64 W0_X_SI = 4.246e-6; -constexpr float_64 W0_Z_SI = W0_X_SI; -} -/** The laser pulse will be initialized half of PULSE_INIT times of the PULSE_LENGTH before plateau - and half at the end of the plateau - * unit: none */ -constexpr float_64 RAMP_INIT = 20.0; - -/* we use a sin(omega*time + laser_phase) function to set up the laser - define phase: */ -constexpr float_X LASER_PHASE = 0.0; /* unit: rad, periodic in 2*pi */ - -enum PolarisationType -{ - LINEAR_X = 1u, - LINEAR_Z = 2u, - CIRCULAR = 4u, -}; -constexpr PolarisationType Polarisation = LINEAR_X; -} - - -namespace laserPolynom -{ -// Asymetric sinus used: starts with phase=0 at center --> E-field=0 at center -namespace SI -{ -/** unit: meter */ -constexpr float_64 WAVE_LENGTH_SI = 0.8e-6; - -/** UNITCONV */ -constexpr float_64 UNITCONV_A0_to_Amplitude_SI = -2.0 * PI / WAVE_LENGTH_SI * ::picongpu::SI::ELECTRON_MASS_SI * ::picongpu::SI::SPEED_OF_LIGHT_SI * ::picongpu::SI::SPEED_OF_LIGHT_SI / ::picongpu::SI::ELECTRON_CHARGE_SI; - -/** unit: W / m^2 */ -// calculate: _A0 = 8.549297e-6 * sqrt( Intensity[W/m^2] ) * wavelength[m] (linearly polarized) - -/** unit: none */ -//constexpr float_64 _A0 = 3.9; - -/** unit: Volt /meter */ -//constexpr float_64 AMPLITUDE_SI = _A0 * UNITCONV_A0_to_Amplitude_SI; - -/** unit: Volt /meter */ -constexpr float_64 AMPLITUDE_SI = 1.738e13; - - -/** Pulse length: - * PULSE_LENGTH_SI = total length of polynamial laser pulse - * Rise time = 0.5 * PULSE_LENGTH_SI - * Fall time = 0.5 * PULSE_LENGTH_SI - * in order to compare to a gaussian pulse: rise time = sqrt{2} * T_{FWHM} - * unit: seconds */ -constexpr float_64 PULSE_LENGTH_SI = 4.0e-15; - -/** beam waist: distance from the axis where the pulse intensity (E^2) - * decreases to its 1/e^2-th part, - * at the focus position of the laser - * unit: meter */ -constexpr float_64 W0x_SI = 4.246e-6; // waist in x-direction -constexpr float_64 W0z_SI = W0x_SI; // waist in z-direction -} - -/* we use a sin(omega*(time-riseTime) + laser_phase) function to set up the laser - define phase: */ -constexpr float_X LASER_PHASE = 0.0; /* unit: rad, periodic in 2*pi */ -} - -namespace laserNone -{ -namespace SI -{ -/** unit: meter */ -constexpr float_64 WAVE_LENGTH_SI = 0.0; - -/** unit: Volt /meter */ -constexpr float_64 AMPLITUDE_SI = 0.0; - -constexpr float_64 PULSE_LENGTH_SI = 0.0; -} -} - -} - - - diff --git a/examples/SingleParticleRadiationWithLaser/include/simulation_defines/param/particleConfig.param b/examples/SingleParticleRadiationWithLaser/include/simulation_defines/param/particleConfig.param deleted file mode 100644 index a44147615d..0000000000 --- a/examples/SingleParticleRadiationWithLaser/include/simulation_defines/param/particleConfig.param +++ /dev/null @@ -1,45 +0,0 @@ -/** - * Copyright 2013-2017 Axel Huebl, Rene Widera - * - * This file is part of PIConGPU. - * - * PIConGPU is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * PIConGPU is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with PIConGPU. - * If not, see . - */ - - - -#pragma once - -#include "particles/startPosition/functors.def" -#include "particles/manipulators/manipulators.def" -#include "nvidia/functors/Add.hpp" -#include "nvidia/functors/Assign.hpp" - -namespace picongpu -{ - -namespace particles -{ - - /** a particle with a weighting below MIN_WEIGHTING will not - * be created / will be deleted - * unit: none */ - constexpr float_X MIN_WEIGHTING = 1.0; - - constexpr uint32_t TYPICAL_PARTICLES_PER_CELL = 1; - -} //namespace particles - -} //namespac picongpu diff --git a/examples/SingleParticleRadiationWithLaser/include/simulation_defines/param/radiationConfig.param b/examples/SingleParticleRadiationWithLaser/include/simulation_defines/param/radiationConfig.param deleted file mode 100644 index 38dc73a1ca..0000000000 --- a/examples/SingleParticleRadiationWithLaser/include/simulation_defines/param/radiationConfig.param +++ /dev/null @@ -1,158 +0,0 @@ -/** - * Copyright 2013-2017 Rene Widera, Richard Pausch - * - * This file is part of PIConGPU. - * - * PIConGPU is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * PIConGPU is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with PIConGPU. - * If not, see . - */ - - - -#pragma once - - /* - radiation verbose level: - 0=nothing, 1=physics, 2=simulation_state, 4=memory, 8=critical - */ - -#define PIC_VERBOSE_RADIATION 3 - -#include "plugins/radiation/parameters.hpp" -#include "plugins/radiation/debug/PIConGPUVerboseLogRadiation.hpp" - -namespace picongpu -{ -namespace rad_linear_frequencies -{ -namespace SI -{ -constexpr float_64 omega_min = 0.0; -constexpr float_64 omega_max = 5.8869e17; -} - -constexpr unsigned int N_omega = 2048; // number of frequencies -} - -namespace rad_log_frequencies -{ -namespace SI -{ -constexpr float_64 omega_min = 1.0e14; -constexpr float_64 omega_max = 1.0e17; -} - -constexpr unsigned int N_omega = 2048; // number of frequencies -} - - -namespace rad_frequencies_from_list -{ -//constexpr char listLocation[] = "/scratch/s5960712/list001.freq"; -constexpr unsigned int N_omega = 2048; // number of frequencies -} - - -namespace radiation_frequencies = rad_linear_frequencies; - - -namespace radiationNyquist -{ - constexpr float_32 NyquistFactor = 0.5; -} - - -/////////////////////////////////////////////////// - - - // corect treatment of coherent and incoherent radiation from macroparticles - // 1 = on (slower and more memory, but correct quantitativ treatment) - // 0 = off (faster but macroparticles are treated as highly charged, point-like particle) -#define __COHERENTINCOHERENTWEIGHTING__ 1 - - /* Choose different form factors in order to consider different particle shapes for radiation - * - radFormFactor_CIC_3D ... CIC charge distribution - * - radFormFactor_TSC_3D ... TSC charge distribution - * - radFormFactor_PCS_3D ... PCS charge distribution - * - radFormFactor_CIC_1Dy ... only CIC charge distribution in y - * - radFormFactor_Gauss_spherical ... symmetric Gauss charge distribution - * - radFormFactor_Gauss_cell ... Gauss charge distribution according to cell size - * - radFormFactor_incoherent ... only incoherent radiation - */ - namespace radFormFactor_CIC_3D { } - namespace radFormFactor_TSC_3D { } - namespace radFormFactor_PCS_3D { } - namespace radFormFactor_CIC_1Dy { } - namespace radFormFactor_Gauss_spherical { } - namespace radFormFactor_Gauss_cell { } - namespace radFormFactor_incoherent { } - - namespace radFormFactor = radFormFactor_Gauss_spherical; - - -/////////////////////////////////////////////////////////// - - -namespace parameters -{ -/*!enable radiation calculation*/ -#define ENABLE_RADIATION 1 - -// Nyquist low pass allows only amplitudes for frequencies below Nyquist frequency -// 1 = on (slower and more memory, no fourier reflections) -// 0 = off (faster but with fourier reflections) -#define __NYQUISTCHECK__ 1 - - - -//marked every N particle for calculate radiation -//mark no particle at beginning -#define RAD_MARK_PARTICLE 1 - -//disable or enable gamme filter -//diable (0) / enable (1) -#define RAD_ACTIVATE_GAMMA_FILTER 0 - -constexpr float_32 RadiationGamma = 5.; - -constexpr unsigned int N_observer = 128; // number of looking directions - - - -} /* end namespace parameters */ - -////////////////////////////////////////////////// - - -// add a window function weighting to the radiation in order -// to avoid ringing effects from sharpe boundaries -// default: no window function via `radWindowFunctionNone` - -/* Choose different window function in order to get better ringing reduction - * radWindowFunctionTriangle - * radWindowFunctionHamming - * radWindowFunctionTriplett - * radWindowFunctionGauss - * radWindowFunctionNone - */ -namespace radWindowFunctionTriangle { } -namespace radWindowFunctionHamming { } -namespace radWindowFunctionTriplett { } -namespace radWindowFunctionGauss { } -namespace radWindowFunctionNone { } - -namespace radWindowFunction = radWindowFunctionNone; - - -}//namespace picongpu diff --git a/examples/SingleParticleRadiationWithLaser/include/simulation_defines/param/radiationObserver.param b/examples/SingleParticleRadiationWithLaser/include/simulation_defines/param/radiationObserver.param deleted file mode 100644 index fa6c1ed75c..0000000000 --- a/examples/SingleParticleRadiationWithLaser/include/simulation_defines/param/radiationObserver.param +++ /dev/null @@ -1,77 +0,0 @@ -/** - * Copyright 2013-2017 Heiko Burau, Richard Pausch - * - * This file is part of PIConGPU. - * - * PIConGPU is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * PIConGPU is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with PIConGPU. - * If not, see . - */ - - -#pragma once - -namespace picongpu -{ - namespace radiation_observer - { - /** Compute observation angles - * - * This function is used in the Radiation plug-in kernel to compute - * the observation directions given as a unit vector pointing - * towards a 'virtual' detector - * - * @param observation_id_extern - * int index that identifies each block on the GPU - * to compute the observation direction - * - * @return unit vector pointing in observation direction - * type: vector_64 - * - */ - HDINLINE vector_64 observation_direction(const int observation_id_extern) - { - /** Computes observation angles along the x-y plane. - * Assuming electron(s) fly in -x direction and the laser - * propages in +x direction, the observation angles are centered - * around the -y-axis (0,-1,0) . - * By setting gamma, the angle range can be adjusted to the - * energy of the electrons. - */ - - - /* in this case only one id is needed: an index for theta */ - const int my_theta_id = observation_id_extern; - - /* set up: */ - constexpr picongpu::float_64 gamma_times_thetaMax = 1.5; /* max normalized angle */ - constexpr picongpu::float_64 gamma = 5.0; /* relativistic gamma */ - constexpr picongpu::float_64 thetaMax = gamma_times_thetaMax / gamma; /* max angle */ - - /* stepwith of theta for from [-thetaMax : +thetaMax] */ - constexpr picongpu::float_64 delta_theta = 2.0 * thetaMax / (parameters::N_observer); - - /* compute angle theta for index */ - const picongpu::float_64 theta(my_theta_id * delta_theta - thetaMax + picongpu::PI); - /* + picongpu::PI -> turn observation direction 180 degrees towards -y */ - - /* compute observation unit vector */ - picongpu::float_32 sinTheta; - picongpu::float_32 cosTheta; - math::sincos(precisionCast(theta), sinTheta, cosTheta); - return vector_64(sinTheta, cosTheta, 0.0); - - } - - } // end namespace radiation_observer -} // end namespace picongpu diff --git a/examples/SingleParticleRadiationWithLaser/include/simulation_defines/param/species.param b/examples/SingleParticleRadiationWithLaser/include/simulation_defines/param/species.param deleted file mode 100644 index fecc18268e..0000000000 --- a/examples/SingleParticleRadiationWithLaser/include/simulation_defines/param/species.param +++ /dev/null @@ -1,85 +0,0 @@ -/** - * Copyright 2014-2017 Rene Widera, Richard Pausch - * - * This file is part of PIConGPU. - * - * PIConGPU is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * PIConGPU is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with PIConGPU. - * If not, see . - */ - - - -#pragma once - -#include "particles/shapes.hpp" -#include "algorithms/FieldToParticleInterpolationNative.hpp" -#include "algorithms/FieldToParticleInterpolation.hpp" -#include "algorithms/AssignedTrilinearInterpolation.hpp" -#include "particles/shapes.hpp" - -#include "fields/currentDeposition/Solver.def" - - -/*enable (1) or disable (0) electrons*/ -#define ENABLE_ELECTRONS 1 -/*enable (1) or disable (0) ions*/ -#define ENABLE_IONS 0 - - -namespace picongpu -{ -/*---------------------------- generic solver---------------------------------*/ - -/*! Particle Shape definitions ------------------------------------------------- - * - particles::shapes::CIC : 1st order - * - particles::shapes::TSC : 2nd order - * - particles::shapes::PCS : 3rd order - * - particles::shapes::P4S : 4th order - * - * example: typedef particles::shapes::CIC CICShape; - */ -typedef particles::shapes::CIC UsedParticleShape; - -/* define which interpolation method is used to interpolate fields to particle*/ -typedef FieldToParticleInterpolation UsedField2Particle; - -/*! select current solver method ----------------------------------------------- - * - currentSolver::Esirkepov : particle shapes - CIC, TSC, PCS, P4S (1st to 4th order) - * - currentSolver::VillaBune<> : particle shapes - CIC (1st order) only - * - * For development purposes: --------------------------------------------------- - * - currentSolver::EsirkepovNative : generic version of currentSolverEsirkepov - * without optimization (~4x slower and needs more shared memory) - * - currentSolver::ZigZag : particle shapes - CIC, TSC, PCS, P4S (1st to 4th order) - */ -typedef currentSolver::Esirkepov UsedParticleCurrentSolver; - -/*! particle pusher configuration ---------------------------------------------- - * - * Define a pusher is optional for particles - * - * - particles::pusher::Vay : better suited relativistic boris pusher - * - particles::pusher::Boris : standard boris pusher - * - particles::pusher::ReducedLandauLifshitz : 4th order RungeKutta pusher - * with classical radiation reaction - * - * For development purposes: --------------------------------------------------- - * - particles::pusher::Axel : a pusher developed at HZDR during 2011 (testing) - * - particles::pusher::Free : free propagation, ignore fields - * (= free stream model) - * - particles::pusher::Photon : propagate with c in direction of normalized mom. - */ -typedef particles::pusher::Boris UsedParticlePusher; - -}//namespace picongpu diff --git a/examples/SingleParticleRadiationWithLaser/include/simulation_defines/param/starter.param b/examples/SingleParticleRadiationWithLaser/include/simulation_defines/param/starter.param deleted file mode 100644 index 1df81e13a6..0000000000 --- a/examples/SingleParticleRadiationWithLaser/include/simulation_defines/param/starter.param +++ /dev/null @@ -1,36 +0,0 @@ -/** - * Copyright 2013-2017 Rene Widera - * - * This file is part of PIConGPU. - * - * PIConGPU is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * PIConGPU is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with PIConGPU. - * If not, see . - */ - - - -#pragma once - - -namespace picongpu -{ - - namespace radiationTest - { - - } -} - - - diff --git a/examples/SingleParticleRadiationWithLaser/include/simulation_defines/param/testExtension.param b/examples/SingleParticleRadiationWithLaser/include/simulation_defines/param/testExtension.param deleted file mode 100644 index fb128bbcb0..0000000000 --- a/examples/SingleParticleRadiationWithLaser/include/simulation_defines/param/testExtension.param +++ /dev/null @@ -1,44 +0,0 @@ -/** - * Copyright 2013-2017 Rene Widera, Richard Pausch - * - * This file is part of PIConGPU. - * - * PIConGPU is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * PIConGPU is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with PIConGPU. - * If not, see . - */ - - - -#pragma once - -namespace picongpu -{ - // Init Beta = v/c for the Electron - constexpr float_64 BETA0_X = 0.0; //unit: none - constexpr float_64 BETA0_Y = -0.9797958971; /* gamma=5 */ //unit: none - constexpr float_64 BETA0_Z = 0.0; //unit: none - - // Constant Background Fields - constexpr float_64 E_X_SI = 0.0; //unit: Volt /meter - constexpr float_64 E_Y_SI = 0.0; //-1.0e13; //unit: Volt /meter - constexpr float_64 E_Z_SI = 0.0; //unit: Volt /meter - - constexpr float_64 B_X_SI = 0.0; //unit: Tesla = Vs/m^2 - constexpr float_64 B_Y_SI = 0.0; //unit: Tesla = Vs/m^2 - constexpr float_64 B_Z_SI = 0.0; //unit: Tesla = Vs/m^2 - - // Offset of particle in cells - constexpr unsigned int OneParticleOffset = 1000; -} - diff --git a/examples/SingleParticleRadiationWithLaser/include/simulation_defines/param/visColorScales.param b/examples/SingleParticleRadiationWithLaser/include/simulation_defines/param/visColorScales.param deleted file mode 100644 index 16d414ef16..0000000000 --- a/examples/SingleParticleRadiationWithLaser/include/simulation_defines/param/visColorScales.param +++ /dev/null @@ -1,117 +0,0 @@ -/** - * Copyright 2013-2017 Axel Huebl, Heiko Burau, Rene Widera - * - * This file is part of PIConGPU. - * - * PIConGPU is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * PIConGPU is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with PIConGPU. - * If not, see . - */ - - - -#pragma once - -#include "basicOperations.hpp" - -namespace picongpu -{ - namespace colorScales - { - namespace none - { - HDINLINE void addRGB( const float3_X&, - const float_X, - const float_X ) - { - return; - } - } - - namespace gray - { - HDINLINE void addRGB( float3_X& img, - const float_X value, - const float_X opacity ) - { - const float3_X myChannel( 1.0, 1.0, 1.0 ); - img = img - - opacity * float3_X( myChannel.x() * img.x(), - myChannel.y() * img.y(), - myChannel.z() * img.z() ) - + myChannel * value * opacity; - } - } - - namespace grayInv - { - HDINLINE void addRGB( float3_X& img, - const float_X value, - const float_X opacity ) - { - const float3_X myChannel( 1.0, 1.0, 1.0 ); - img = img - - opacity * float3_X( myChannel.x() * img.x(), - myChannel.y() * img.y(), - myChannel.z() * img.z() ) - + myChannel * (float_X(1.0) - value ) * opacity; - } - } - - namespace red - { - HDINLINE void addRGB( float3_X& img, - const float_X value, - const float_X opacity ) - { - const float3_X myChannel( 1.0, 0.0, 0.0 ); - img = img - - opacity * float3_X( myChannel.x() * img.x(), - myChannel.y() * img.y(), - myChannel.z() * img.z() ) - + myChannel * value * opacity; - } - } - - namespace green - { - HDINLINE void addRGB( float3_X& img, - const float_X value, - const float_X opacity ) - { - const float3_X myChannel( 0.0, 1.0, 0.0 ); - img = img - - opacity * float3_X( myChannel.x() * img.x(), - myChannel.y() * img.y(), - myChannel.z() * img.z() ) - + myChannel * value * opacity; - } - } - - namespace blue - { - HDINLINE void addRGB( float3_X& img, - const float_X value, - const float_X opacity ) - { - const float3_X myChannel( 0.0, 0.0, 1.0 ); - img = img - - opacity * float3_X( myChannel.x() * img.x(), - myChannel.y() * img.y(), - myChannel.z() * img.z() ) - + myChannel * value * opacity; - } - } - - } -} diff --git a/examples/SingleParticleRadiationWithLaser/include/simulation_defines/param/visualization.param b/examples/SingleParticleRadiationWithLaser/include/simulation_defines/param/visualization.param deleted file mode 100644 index 2496d88c80..0000000000 --- a/examples/SingleParticleRadiationWithLaser/include/simulation_defines/param/visualization.param +++ /dev/null @@ -1,83 +0,0 @@ -/** - * Copyright 2013-2017 Axel Huebl, Heiko Burau, Rene Widera, Richard Pausch - * - * This file is part of PIConGPU. - * - * PIConGPU is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * PIConGPU is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with PIConGPU. - * If not, see . - */ - - -#pragma once - -#include -#include "basicOperations.hpp" - -namespace picongpu -{ -/*scale image before write to file, only scale if value is not 1.0 - */ -constexpr float_64 scale_image = 1.0; - -/*if true image is scaled if cellsize is not quadratic, else no scale*/ -constexpr bool scale_to_cellsize = true; - -constexpr bool white_box_per_GPU = false; - -namespace visPreview -{ -// normalize EM fields to typical laser or plasma quantities -//-1: Auto: enable adaptive scaling for each output -// 1: Laser: typical fields calculated out of the laser amplitude -// 2: Drift: typical fields caused by a drifting plasma -// 3: PlWave: typical fields calculated out of the plasma freq., -// assuming the wave moves approx. with c -// 4: Thermal: typical fields calculated out of the electron temperature -// 5: BlowOut: typical fields, assuming that a LWFA in the blowout -// regime causes a bubble with radius of approx. the laser's -// beam waist (use for bubble fields) -#define EM_FIELD_SCALE_CHANNEL1 -1 -#define EM_FIELD_SCALE_CHANNEL2 -1 -#define EM_FIELD_SCALE_CHANNEL3 -1 - -// multiply highest undisturbed particle density with factor -constexpr float_X preParticleDens_opacity = 1.0; -constexpr float_X preChannel1_opacity = 1.0; -constexpr float_X preChannel2_opacity = 1.0; -constexpr float_X preChannel3_opacity = 1.0; - -// specify color scales for each channel -namespace preParticleDensCol = colorScales::red; -namespace preChannel1Col = colorScales::none; -namespace preChannel2Col = colorScales::green; -namespace preChannel3Col = colorScales::none; - -/* png preview and liveview settings for each channel */ -DINLINE float_X preChannel1(const float3_X& field_B, const float3_X& field_E, const float3_X& field_J) -{ - return math::abs2(field_J); -} - -DINLINE float_X preChannel2(const float3_X& field_B, const float3_X& field_E, const float3_X& field_J) -{ - return field_E.x() * field_E.x(); -} - -DINLINE float_X preChannel3(const float3_X& field_B, const float3_X& field_E, const float3_X& field_J) -{ - return -float_X(1.0) * field_E.y(); -} -} -} - diff --git a/examples/SingleParticleRadiationWithLaser/include/simulation_defines/unitless/physicalConstants.unitless b/examples/SingleParticleRadiationWithLaser/include/simulation_defines/unitless/physicalConstants.unitless deleted file mode 100644 index 596d645cb5..0000000000 --- a/examples/SingleParticleRadiationWithLaser/include/simulation_defines/unitless/physicalConstants.unitless +++ /dev/null @@ -1,80 +0,0 @@ -/** - * Copyright 2013-2017 Axel Huebl, Rene Widera, Marco Garten, Heiko Burau - * - * This file is part of PIConGPU. - * - * PIConGPU is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * PIConGPU is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with PIConGPU. - * If not, see . - */ - - -#pragma once - -namespace picongpu -{ - /** Unit of Speed */ - constexpr float_64 UNIT_SPEED = SI::SPEED_OF_LIGHT_SI; - /** Unit of time */ - constexpr float_64 UNIT_TIME = SI::DELTA_T_SI; - /** Unit of length */ - constexpr float_64 UNIT_LENGTH = UNIT_TIME*UNIT_SPEED; - - namespace particles - { - /** Number of electrons per particle (= macro particle weighting) - * unit: none */ - constexpr float_X TYPICAL_NUM_PARTICLES_PER_MACROPARTICLE = 1; - - } - - /** Unit of mass */ - constexpr float_64 UNIT_MASS = SI::ELECTRON_MASS_SI * double(particles::TYPICAL_NUM_PARTICLES_PER_MACROPARTICLE); - /** Unit of charge */ - constexpr float_64 UNIT_CHARGE = -1.0 * SI::ELECTRON_CHARGE_SI * double(particles::TYPICAL_NUM_PARTICLES_PER_MACROPARTICLE); - /** Unit of energy */ - constexpr float_64 UNIT_ENERGY = (UNIT_MASS * UNIT_LENGTH * UNIT_LENGTH / (UNIT_TIME * UNIT_TIME)); - /** Unit of EField: V/m */ - constexpr float_64 UNIT_EFIELD = 1.0 / (UNIT_TIME * UNIT_TIME / UNIT_MASS / UNIT_LENGTH * UNIT_CHARGE); - //** Unit of BField: Tesla [T] = Vs/m^2 */ - constexpr float_64 UNIT_BFIELD = (UNIT_MASS / (UNIT_TIME * UNIT_CHARGE)); - - - - - constexpr float_X SPEED_OF_LIGHT = float_X(SI::SPEED_OF_LIGHT_SI / UNIT_SPEED); - - //! reduced Planck constant - constexpr float_X HBAR = (float_X) (SI::HBAR_SI / UNIT_ENERGY / UNIT_TIME); - - //! Charge of electron - constexpr float_X ELECTRON_CHARGE = (float_X) (SI::ELECTRON_CHARGE_SI / UNIT_CHARGE); - //! Mass of electron - constexpr float_X ELECTRON_MASS = (float_X) (SI::ELECTRON_MASS_SI / UNIT_MASS); - - //! magnetic constant must be double 3.92907e-39 - constexpr float_X MUE0 = (float_X) (SI::MUE0_SI / UNIT_LENGTH / UNIT_MASS * UNIT_CHARGE * UNIT_CHARGE); - - //! electric constant must be double 2.54513e+38 - constexpr float_X EPS0 = (float_X) (1. / MUE0 / SPEED_OF_LIGHT / SPEED_OF_LIGHT); - - // = 1/c^2 - constexpr float_X MUE0_EPS0 = float_X(1. / SPEED_OF_LIGHT / SPEED_OF_LIGHT); - - /* Atomic unit of electric field in PIC Efield units */ - constexpr float_X ATOMIC_UNIT_EFIELD = float_X(SI::ATOMIC_UNIT_EFIELD / UNIT_EFIELD); - - /* Atomic unit of time in PIC units */ - constexpr float_X ATOMIC_UNIT_TIME = float_X(SI::ATOMIC_UNIT_TIME / UNIT_TIME); - -} //namespace picongpu diff --git a/examples/SingleParticleRadiationWithLaser/include/simulation_defines/unitless/starter.unitless b/examples/SingleParticleRadiationWithLaser/include/simulation_defines/unitless/starter.unitless deleted file mode 100644 index c9896c2c96..0000000000 --- a/examples/SingleParticleRadiationWithLaser/include/simulation_defines/unitless/starter.unitless +++ /dev/null @@ -1,44 +0,0 @@ -/** - * Copyright 2013-2017 Rene Widera - * - * This file is part of PIConGPU. - * - * PIConGPU is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * PIConGPU is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with PIConGPU. - * If not, see . - */ - - - -#pragma once - -#include "plugins/PluginController.hpp" -#include "initialization/InitPluginNone.hpp" -#include "OneParticleSimulation.hpp" -#include "simulationControl/SimulationStarter.hpp" - -namespace picongpu -{ - using namespace PMacc; - - - namespace radiationTest - { - typedef ::picongpu::SimulationStarter - < - ::picongpu::InitPluginNone, - ::picongpu::PluginController, - ::picongpu::OneParticleSimulation - > SimStarter; - } -} diff --git a/examples/SingleParticleRadiationWithLaser/include/simulation_defines/unitless/testExtension.unitless b/examples/SingleParticleRadiationWithLaser/include/simulation_defines/unitless/testExtension.unitless deleted file mode 100644 index cb42541300..0000000000 --- a/examples/SingleParticleRadiationWithLaser/include/simulation_defines/unitless/testExtension.unitless +++ /dev/null @@ -1,37 +0,0 @@ -/** - * Copyright 2013-2017 Rene Widera - * - * This file is part of PIConGPU. - * - * PIConGPU is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * PIConGPU is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with PIConGPU. - * If not, see . - */ - - - -#pragma once - -namespace picongpu -{ - // Constant Background Fields - constexpr float_X E_X = float_X( E_X_SI / UNIT_EFIELD); //unit: Volt /meter - constexpr float_X E_Y = float_X( E_Y_SI / UNIT_EFIELD); //unit: Volt /meter - constexpr float_X E_Z = float_X( E_Z_SI / UNIT_EFIELD); //unit: Volt /meter - - constexpr float_X B_X = float_X( B_X_SI / UNIT_BFIELD); //unit: Tesla = Vs/m^2 - constexpr float_X B_Y = float_X( B_Y_SI / UNIT_BFIELD); //unit: Tesla = Vs/m^2 - constexpr float_X B_Z = float_X( B_Z_SI / UNIT_BFIELD); //unit: Tesla = Vs/m^2 -} - - diff --git a/examples/SingleParticleRadiationWithLaser/submit/0008gpus.cfg b/examples/SingleParticleRadiationWithLaser/submit/0008gpus.cfg deleted file mode 100644 index f203668421..0000000000 --- a/examples/SingleParticleRadiationWithLaser/submit/0008gpus.cfg +++ /dev/null @@ -1,74 +0,0 @@ -# Copyright 2013-2017 Rene Widera, Felix Schmitt, Axel Huebl -# -# This file is part of PIConGPU. -# -# PIConGPU is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# PIConGPU is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with PIConGPU. -# If not, see . -# - -## -## This configuration file is used by PIConGPU's TBG tool to create a -## batch script for PIConGPU runs. For a detailed description of PIConGPU -## configuration files including all available variables, see -## -## doc/TBG_macros.cfg -## - - -################################# -## Section: Required Variables ## -################################# - -TBG_wallTime="1:00:00" - -TBG_gpu_x=1 -TBG_gpu_y=8 -TBG_gpu_z=1 - -TBG_gridSize="-g 128 1024 64" -TBG_steps="-s 4000" - -TBG_periodic="--periodic 1 0 1" - -################################# -## Section: Optional Variables ## -################################# - -TBG_pngYZ="--e_png.period 10 --e_png.axis yz --e_png.slicePoint 0.5 --e_png.folder pngElectronsYZ" -TBG_pngYX="--e_png.period 10 --e_png.axis yx --e_png.slicePoint 0.5 --e_png.folder pngElectronsYX" - -TBG_radiation="--e_radiation.period 1 --e_radiation.dump 40 --e_radiation.totalRadiation" - -TBG_plugins="!TBG_pngYX \ - !TBG_pngYZ \ - --e_macroParticlesCount.period 100 \ - !TBG_radiation \ - --e_position.period 1" - -################################# -## Section: Program Parameters ## -################################# - -TBG_devices="-d !TBG_gpu_x !TBG_gpu_y !TBG_gpu_z" - -TBG_programParams="!TBG_devices \ - !TBG_gridSize \ - !TBG_steps \ - !TBG_periodic \ - !TBG_plugins" - -# TOTAL number of GPUs -TBG_tasks="$(( TBG_gpu_x * TBG_gpu_y * TBG_gpu_z ))" - -"$TBG_cfgPath"/submitAction.sh