From d86b3a3417282cc65f26dcb3396de9194b77abf0 Mon Sep 17 00:00:00 2001 From: Jorge Gonzalez Date: Thu, 28 Mar 2024 09:45:46 +0100 Subject: [PATCH 01/39] Implementing injection with current density WARNING: This current denstiy will be multiplied by the reference length, no the surface area that is being used for injection! New units in the injection of particles 'Am2' to inject a density current. Manual has been modified accordingly. Reference parameters are now also printed in the case folder. --- doc/user-manual/fpakc_UserManual.pdf | Bin 185542 -> 185817 bytes doc/user-manual/fpakc_UserManual.tex | 102 ++++++++++++------------ src/fpakc.f90 | 4 + src/modules/init/moduleInput.f90 | 63 ++++++++++----- src/modules/mesh/moduleMeshBoundary.f90 | 8 +- src/modules/moduleBoundary.f90 | 24 +++++- src/modules/moduleInject.f90 | 4 + src/modules/solver/moduleSolver.f90 | 5 -- 8 files changed, 133 insertions(+), 77 deletions(-) diff --git a/doc/user-manual/fpakc_UserManual.pdf b/doc/user-manual/fpakc_UserManual.pdf index c424f5016355cf3dd5bdebf5cb23ee291f1c5145..2453bb7a03988944220d03dbe093216dd6203ec1 100644 GIT binary patch delta 140047 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%0A363IdkVE@Dw&*F2UiMsZ=dN7w%}nEz~> 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 z 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

b)0on}vV0_O)@}by@`a!o`#r!J0B4cts_ki>O)> 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%0Ag}URIN;g}2A&FX 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↱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»HLZ!SX-<2a4DL diff --git a/doc/user-manual/fpakc_UserManual.tex b/doc/user-manual/fpakc_UserManual.tex index 2b8fa8e..daf42c3 100644 --- a/doc/user-manual/fpakc_UserManual.tex +++ b/doc/user-manual/fpakc_UserManual.tex @@ -72,7 +72,7 @@ The \Gls{fpakc} is a simulation tool that models species in plasma (ions, electrons and neutrals) following the trajectories of macro-particles as they move and interact between them and the boundaries of the domain. Particles properties are scattered into a finite element mesh in 1, 2 or three dimensions, with the possibility to choose different geometries. The official repository can be found at: \url{https://gitlab.com/JorgeGonz/fpakc.git}. - The code is currently in very early steps of development and further improvements are expected very soon. + The code is currently in the very early steps of development and further refinements are expected very soon. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Main Guidelines} @@ -86,11 +86,11 @@ \item \acrshort{fpakc} is coded in a \textit{understandable} way. This means that the code is required to be written in a clear way that is easy to understand and maintain. Variables and procedure names need to be self-understanding. - This ease the process of fixing bugs and improving the codes by a large team of developers. + This eases the process of fixing bugs and improving the codes by a large team of developers. For more information, please refer to the \acrshort{fpakc} Coding Style document. - \item \acrshort{fpakc} requires to be ease to use. + \item \acrshort{fpakc} requires being ease to use. Input files are required to be in a \textit{human} format, meaning that the different options can be easily understood without constant reference to the user guide. - \acrshort{fpakc} is aimed to be used in a wide range of applications and by a variety of scientist: from very established ones to newcomers to the field and also students. + \acrshort{fpakc} is aimed to be used in a wide range of applications and by various scientists: from well-established ones to newcomers to the field and also students. \end{enumerate} These are foundation stones of \acrshort{fpakc} and its development and should always be followed, at least for the releases in the official repository. @@ -105,16 +105,16 @@ \section{The Particle Method} \Gls{fpakc} uses macro-particles to simulate the dynamics of different plasma species (mainly ions, electrons and neutrals). These macro-particles could represent a large amount of real particles. - For now own, macro-particles will be referred as just particles by abusing of language. + For now own, macro-particles will be referred as just particles by abuse of language. During the initiation phase, the input and mesh file(s) are reading. If an initial distribution for a species is specified in the input file, particles to match that distribution are loaded into the cells. The general steps performed in each iteration are: \begin{enumerate} \item Firstly, new particles are introduced into the domain as specified in the input file. - \item Particles are then pushed accounting for possible acceleration by external forces. - During this process, if a particle changes cell it is found using the connectivity between elements. - If a particle encounters a boundary instead a new cell, the interaction between the boundary and the wall is computed. + \item Particles are then pushed, accounting for possible acceleration by external forces. + During this process, if a particle changes cell, it is found using the connectivity between elements. + If a particle encounters a boundary instead a new cell, the interaction between the boundary and the wall are computed. A particle may abandon the computational domain and is no longer accounted for. \item Next, collisions for the particles inside each cell are carried out. This may include different collision processes for each particle. @@ -124,10 +124,10 @@ \item Finally, particle properties are scattered among the mesh nodes. These properties are density, momentum and the stress tensor. \item If requested, the electromagnetic field is computed. - \item If the number of iteration requires writing output files, it is done after all steps for the particles is completed. + \item If the number of iteration requires writing output files, it is done after all steps for the particles are completed. \end{enumerate} - \Gls{fpakc} has the capability to configure all the behavior of the simulation via the input file. + \Gls{fpakc} has the capability to configure all the behaviour of the simulation via the input file. Parameters as injection, the kind of pusher used for each species, boundary conditions or collisions are user-input parameters and will be described in Chap.~\ref{ch:input_file}. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -168,8 +168,8 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Find new cell} Once the position and velocity of the particle are updated, the new cell that contains the particle is searched. - This is done by a neighbor search, starting from the previous cell containing the particle. - In the process of finding the new cell, it is possible that a particle encounters a boundary. + This is done by a neighbour search, starting from the previous cell containing the particle. + In the process of finding the new cell, a particle might encounter a boundary. When the particle interacts with the boundary, the particle may continue its life in the simulation or might be eliminated from it. Once that the new cell is found or that the particle life has been terminated, the pushing is complete. If a secondary mesh is used for the Monte-Carlo Collision method, the new cell in that mesh in which the particle reside is also found by the same method, although no interaction with the boundaries is accounted for this step. @@ -178,7 +178,7 @@ \section{Variable Weighting Scheme\label{sec:weightingScheme}} One of the issues in particle simulations, specially for axial-symmetrical cases, is that due to the disparate volume of cells, specially close to the axis, the statistics in some cells is usually poor. To try to fix that, the possibility to include a Variable Weighting Scheme in the simulations is available in \Gls{fpakc}. - These schemes detect when a particle change cells and split it if necessary to improve statistics. + These schemes detect when a particle changes cells and split it if necessary to improve statistics. The use of a Variable Weighting Scheme is defined by the user in the input file. Beware that this can increase the number of particles in the simulation and increase computational time. @@ -189,16 +189,16 @@ \Gls{fpakc} distinguish between two types of interactions: \acrfull{mcc} and \acrfull{cs}. \acrshort{mcc} refers to the process in which two particles interact in short range. These processes include, but are not limited to: elastic collisions, ionization/recombination, charge-exchange, excitation/de-excitation\ldots - A secondary mesh, with cell sizes in the range of the mean-free path, can be used for this type of collisions. + A secondary mesh, with cell sizes in the range of the mean-free path, can be used for this type of collision. \acrshort{cs} refers to the large range interaction that a charged species suffer do to the charge of other particles. The interactions between the different species is defined by the user. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{\acrlong{mcc}} - For each cell the maximum number of collisions between particle is computed. + For each cell, the maximum number of collisions between particle is computed. For each collision, a random pair of particles is chosen. A loop over all possible collisions for the pair of particles chosen is performed. - If a random number is above the probability of collision for that specific type, the collision take place. + If a random number is above the probability of collision for that specific type, the collision takes place. If not, the next type for the particle pair is checked. Below are described the type of collision process implemented in \acrshort{fpakc}: @@ -219,7 +219,7 @@ \item Recombination. When an electron and an ion interact, there is a possibility for them to be recombined into a neutral particle. - The photon emitted by this process is not modelled yet. + The photons emitted by this process are not modelled yet. \end{itemize} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -238,7 +238,7 @@ Once that the pushing is complete, the array of particles that remain inside the domain is copied to a new array. The new array containing only the particles inside the domain will be the one used in the next steps. In this section, particles are assigned to the list of particles inside each individual cell. - Unfortunately, this is done right now without parallelisation and is very CPU consuming. + Unfortunately, this is done right now without parallelization and is very CPU consuming. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Probing}\label{sec:probing} @@ -250,21 +250,21 @@ The user can decide the grid width and the number of points in each direction. The distribution function will be calculated and wrote with a time step decided by the user. - If a particle velocity resides outside of the velocity grid (in any direction), it wont be added to the tally of the distribution function. - Due to the limitation of only taking into account particles in the cell, and not neighbour particles, two probes for the same species at different positions but in the same cell will output the same results. - A more advance method taking into account distance between the particles and the probe position as well as particles in neighbour cells could be implemented to improve the statistics of the distribution function. + If a particle velocity resides outside the velocity grid (in any direction), it will not be added to the tally of the distribution function. + Due to the limitation of only considering particles in the cell, and not neighbour particles, two probes for the same species at different positions but in the same cell will output the same results. + A more advance method considering distance between the particles and the probe position as well as particles in neighbour cells could be implemented to improve the statistics of the distribution function. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Scattering} The properties of each particle are deposited in the nodes from the containing cell. - This process depend on the cell type, but in general, each node receive a proportional part of the particle properties as a function of the particle position inside the cell. - Figure \ref{fig:scatteringQuad} shows how a particle at a generic position $p(x_1, x_2)$ inside the cell is scattered to the four nodes. + This process depends on the cell type, but in general, each node receives a proportional part of the particle properties as a function of the particle position inside the cell. + The figure \ref{fig:scatteringQuad} shows how a particle at a generic position $p(x_1, x_2)$ inside the cell is scattered to the four nodes. \begin{wrapfigure}{l}{0.4\textwidth} \centering \includegraphics{figures/scatteringQuad} \caption{\label{fig:scatteringQuad}Example of how a particle is weighted in a quadrilateral cell.} \end{wrapfigure} - Each node receives a proportional part of the area formed by dividing the cell in for rectangles using as an additional vertex the particle position. + Each node receives a proportional part of the area formed by dividing the cell in for rectangles, using as an additional vertex the particle position. These properties are dimensionless, but they are converted to the correct units once the output is printed. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -273,11 +273,11 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Average scheme} - Particle-in-cell codes has an intrinsic statistical noise associated with them. + Particle-in-cell codes have an intrinsic statistical noise associated with them. Although this can be reduced by increasing the number of particles, this also increases the CPU requirements of the case. It is quite common that most cases reach a quasi-steady state after a number of iterations and time-average results can be obtained after to improve analysis, plotting and restarting the case using these time-average results as new species backgrounds. - Although this is possible to do once the simulation is finished with post-processing tools, this is limited to the amount of iterations printed. + Although this is possible to do once the simulation is finished with post-processing tools, this is limited to the number of iterations printed. \Gls{fpakc} implements a simple average scheme that, after a start time provided by the user, scores a mean and standard deviation of all the main species properties, and the electromagnetic field. This scheme is based on the Welford's online algorithm~\cite{welford1962note}. @@ -286,7 +286,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \chapter{Installation} \section{Required Packages} - In order to properly compile \gls{fpakc}, the following packages are required. + To properly compile \gls{fpakc}, the following packages are required. \subsection{Gfortran} The \Gls{opensource} free compiler \Gls{gfortran}\cite{gfortranURL} from GCC is the basic way to compile \acrshort{fpakc}. It is distributed with all GNU/Linux distributions. @@ -369,7 +369,7 @@ make %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Case file} The required format for the case file is \Gls{json}. - \Gls{json} is a case-sensitive format, so input must be written with the correct capitalisation. + \Gls{json} is a case-sensitive format, so input must be written with the correct capitalization. The basic structure and options available for the case file are explained below. The order of the objects and variables is irrelevant, but the structure needs to be maintained. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -380,9 +380,9 @@ make \item \textbf{path}: Character. Path for the output files. This path is also used to locate the mesh input file. \item \textbf{folder}: Character. - Base name of the folder in wich output files are placed. + Base name of the folder in which output files are placed. The date and time is appended to this name. - If none is provided, only the date and time is writted as the folder name. + If none is provided, only the date and time is written as the folder name. \item \textbf{triggerOutput}: Integer. Determines the number of iterations between writing output files for macroscopic quantities. \item \textbf{cpuTime}: Logical. @@ -515,7 +515,7 @@ make \item \textbf{absorption}: Particle is eliminated from the domain. The particle is first moved into the edge and its properties are scattered among the edge nodes. \item \textbf{transparent}: Particle abandon the numerical domain. - \item \textbf{wallTemperature}: Reflective wall with cosntant temperature that exchange heat with particles. + \item \textbf{wallTemperature}: Reflective wall with constant temperature that exchange heat with particles. Required parameters are: \begin{itemize} \item \textbf{temperature}: Real. @@ -526,8 +526,8 @@ make Specific heat capacity of the material. \end{itemize} \item \textbf{ionization}: Per each particle crossing the surface with this type of boundary, a number of ionization events are calculated. - A pair of ion-electron is generated for each ionization event taking as a reference a neutral background. - Secondary electron is taken as same type as incident particle. + A pair of ion-electron is generated for each ionization event, taking as a reference a neutral background. + The secondary electron is taken as the same type as the incident particle. The available input is: \begin{itemize} \item \textbf{neutral}: Object. @@ -540,7 +540,7 @@ make \item \textbf{mass}: Real. Units in $\unit{kg}$. Mass of neutral species. - If missing, the mass of the ion is ussed + If missing, the mass of the ion is used \item \textbf{density}: Real. Units in $\unit{m^{-3}}$. Density of neutral background. @@ -558,18 +558,18 @@ make \end{itemize} \item \textbf{effectiveTime}: Real. Units in $\unit{s}$. - As the particle is no longer simulated once it crossed the boundary, this time represent the effective time in which the particle produces ionization processes in the neutral background. + As the particle is no longer simulated once it crossed the boundary, this time represents the effective time in which the particle produces ionization processes in the neutral background. Required parameter. \item \textbf{energyThreashold}: Real. Units in $\unit{eV}$. Ionization energy threshold for the simulated process. Required parameter. \item \textbf{crossSection}: Character. - Complete path to the cross section data for the ionization process. + Complete path to the cross-section data for the ionization process. \end{itemize} \item \textbf{axis}: Identifies the symmetry axis for 2D cylindrical simulations. - If for some reason a particle interact with this axis, it is reflected. + If , for some reason, a particle interacts with this axis, it is reflected. \end{itemize} \end{itemize} @@ -596,7 +596,7 @@ make %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{inject} The array \textbf{inject} specifies the injection of particles from different surfaces. - The injection of particles need to be associated to a physicalSurface in the mesh file. + The injection of particles needs to be associated to a physicalSurface in the mesh file. Multiple injections can be associated to the same surface. \begin{itemize} \item \textbf{name}: Character. @@ -610,7 +610,9 @@ make Available values are: \begin{itemize} \item \textbf{A}: Ampere. - \item \textbf{sccm}: Standard cubic centimeter. + \item \textbf{Am2}: Ampere per square meter. + This value will be multiplied by the square of the reference length to convert to A, it will not consider the surface area of injection. + \item \textbf{sccm}: Standard cubic centimetre. \item \textbf{part/s}: Particles (real) per second. \end{itemize} \item \textbf{v}: Real. @@ -627,7 +629,7 @@ make \begin{itemize} \item \textbf{Maxwellian}: Maxwellian distribution of temperature \textbf{T} and mean \textbf{v} times the value of \textbf{n} in the specified direction. \item \textbf{Half-Maxwellian}: Half-Maxwellian distribution of temperature \textbf{T} and mean \textbf{v} times the value of \textbf{n} in the specified direction. - Only takes into account the positive part of the half-Maxwellian. + Only considers the positive part of the half-Maxwellian. \item \textbf{Delta}: Dirac's delta distribution function. All particles are injected with velocity \textbf{v} times the value of \textbf{n} in the specified direction. \end{itemize} \item \textbf{T}: Real. @@ -651,7 +653,7 @@ make \item \textbf{radius}: Real. Reference atomic radius in $\unit{m}$. \item \textbf{crossSection}: Real. - Reference cross section in $\unit{m^2}$. + Reference cross-section in $\unit{m^2}$. If this value is present, radius is ignored. \end{itemize} @@ -677,8 +679,8 @@ make Indicates the type of pusher used for each species: \begin{itemize} \item \textbf{Neutral}: Pushes a particle without any external force. - \item \textbf{Electrostatic}: Pushes a particle including the effect of the electrostatic field. - \item \textbf{Electromagnetic}: Pushes particles accounting for the electromagnetic field. + \item \textbf{Electrostatic}: Pushes a particle, including the effect of the electrostatic field. + \item \textbf{Electromagnetic}: Pushes a particle, accounting for the electromagnetic field. \end{itemize} \item \textbf{WeightingScheme}: Character. Indicates the variable weighting scheme to be used in the simulation. @@ -726,11 +728,11 @@ make \end{itemize} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{interactions}\label{ssec:input_interactions} - This object determine the different interactions among species. + This object determines the different interactions among species. Acceptable values are: \begin{itemize} \item \textbf{folderCollisions}: Character. - Indicates the path to in which the cross section tables are allocated. + Indicates the path to in which the cross-section tables are allocated. \item \textbf{meshCollisions}: Character. Determines a specific mesh for \acrshort{mcc} processes. The file needs to be located in the folder \textbf{output.folder}. @@ -757,7 +759,7 @@ make Accepted values are \textbf{elastic}, \textbf{chargeExchange}, \textbf{ionization} and \textbf{recombination}. Please refer to Sec.~\ref{ssec:collisions} for a description of the different collision types. \item \textbf{crossSection}: Character. - File in \textbf{interactions.folderCollisions} that contains the cross section data as a 1D table of relative energy (in $\unit{eV}$) and cross section (in $\unit{m^-2}$). + File in \textbf{interactions.folderCollisions} that contains the cross-section data as a 1D table of relative energy (in $\unit{eV}$) and cross-section (in $\unit{m^-2}$). \item \textbf{energyThreshold}: Real. Energy threshold of the collisional process in $\unit{eV}$. Only valid for \textbf{ionization} and \textbf{recombination} processes. @@ -778,7 +780,7 @@ make \begin{itemize} \item \textbf{species\_i}, \textbf{species\_j}: Character. Define the two species involved in the collision processes. - Order is indiferent. + Order is indifferent. \end{itemize} \end{itemize} @@ -804,9 +806,9 @@ make %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{1D Emissive Cathode (1D\_Cathode)} - Emission from a 1D cathode in both, cartesian and radial coordinates. - Both cases insert the same amount of electrons from the minimum coordinate and have the same boundary conditions for particles and the electrostatic field. - This case is useful to ilustrate hoy \acrshort{fpakc} can deal with different geometries by just modifying some parameters in the input file. + Emission from a 1D cathode in both, Cartesian and radial coordinates. + Both cases insert the same number of electrons from the minimum coordinate and have the same boundary conditions for particles and the electrostatic field. + This case is useful to illustrate how \acrshort{fpakc} can deal with different geometries by just modifying some parameters in the input file. The same mesh file (\lstinline|mesh.msh|) is used for both cases. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/src/fpakc.f90 b/src/fpakc.f90 index e85f5f6..e90a5e0 100644 --- a/src/fpakc.f90 +++ b/src/fpakc.f90 @@ -27,6 +27,10 @@ PROGRAM fpakc !Reads the json configuration file CALL readConfig(inputFile) + + !Create output folder and initial files + CALL initOutput(inputFile) + !Do '0' iteration t = tInitial diff --git a/src/modules/init/moduleInput.f90 b/src/modules/init/moduleInput.f90 index 46b627b..7a1b206 100644 --- a/src/modules/init/moduleInput.f90 +++ b/src/modules/init/moduleInput.f90 @@ -84,20 +84,6 @@ MODULE moduleInput CALL readParallel(config) CALL checkStatus(config, "readParallel") - !If everything is correct, creates the output folder - CALL EXECUTE_COMMAND_LINE('mkdir ' // path // folder ) - !Copies input file to output folder - CALL EXECUTE_COMMAND_LINE('cp ' // inputFile // ' ' // path // folder) - !Copies particle mesh - IF (mesh%dimen > 0) THEN - CALL EXECUTE_COMMAND_LINE('cp ' // pathMeshParticle // ' ' // path // folder) - IF (doubleMesh) THEN - CALL EXECUTE_COMMAND_LINE('cp ' // pathMeshColl // ' ' // path // folder) - - END IF - - END IF - END SUBROUTINE readConfig !Checks the status of the JSON case file and, if failed, exits the execution. @@ -813,8 +799,8 @@ MODULE moduleInput REAL(8), DIMENSION(:), ALLOCATABLE:: v0 REAL(8):: effTime REAL(8):: eThreshold !Energy threshold - INTEGER:: speciesID - CHARACTER(:), ALLOCATABLE:: speciesName, crossSection + INTEGER:: speciesID, electronSecondaryID + CHARACTER(:), ALLOCATABLE:: speciesName, crossSection, electronSecondary LOGICAL:: found INTEGER:: nTypes @@ -869,8 +855,17 @@ MODULE moduleInput CALL config%get(object // '.crossSection', crossSection, found) IF (.NOT. found) CALL criticalError("missing parameter 'crossSection' for neutrals in ionization", 'readBoundary') - CALL initIonization(boundary(i)%bTypes(s)%obj, species(s)%obj%m, m0, n0, v0, T0, & - speciesID, effTime, crossSection, eThreshold) + CALL config%get(object // '.electronSecondary', electronSecondary, found) + electronSecondaryID = speciesName2Index(electronSecondary) + IF (found) THEN + CALL initIonization(boundary(i)%bTypes(s)%obj, species(s)%obj%m, m0, n0, v0, T0, & + speciesID, effTime, crossSection, eThreshold,electronSecondaryID) + + ELSE + CALL initIonization(boundary(i)%bTypes(s)%obj, species(s)%obj%m, m0, n0, v0, T0, & + speciesID, effTime, crossSection, eThreshold) + + END IF CASE('wallTemperature') CALL config%get(object // '.temperature', Tw, found) @@ -1380,5 +1375,37 @@ MODULE moduleInput END SUBROUTINE readParallel + SUBROUTINE initOutput(inputFile) + USE moduleRefParam + USE moduleMesh, ONLY: mesh, doubleMesh, pathMeshParticle, pathMeshColl + USE moduleOutput, ONLY: path, folder + IMPLICIT NONE + + CHARACTER(:), ALLOCATABLE, INTENT(in):: inputFile + INTEGER:: fileReference = 30 + !If everything is correct, creates the output folder + CALL EXECUTE_COMMAND_LINE('mkdir ' // path // folder ) + !Copies input file to output folder + CALL EXECUTE_COMMAND_LINE('cp ' // inputFile // ' ' // path // folder) + !Copies particle mesh + IF (mesh%dimen > 0) THEN + CALL EXECUTE_COMMAND_LINE('cp ' // pathMeshParticle // ' ' // path // folder) + IF (doubleMesh) THEN + CALL EXECUTE_COMMAND_LINE('cp ' // pathMeshColl // ' ' // path // folder) + + END IF + + END IF + + ! Write commit of fpakc + CALL SYSTEM('git rev-parse HEAD > ' // path // folder // '/' // 'fpakc_commit.txt') + + ! Write file with reference values + OPEN (fileReference, file=path // folder // '/' // 'reference.txt') + WRITE(fileReference, "(7(1X,A20))") 'L_ref', 'v_ref', 'ti_ref', 'Vol_ref', 'EF_ref', 'Volt_ref', 'B_ref' + WRITE(fileReference, "(7(1X,ES20.6E3))") L_ref, v_ref, ti_ref, Vol_ref, EF_ref, Volt_ref, B_ref + CLOSE(fileReference) + + END SUBROUTINE initOutput END MODULE moduleInput diff --git a/src/modules/mesh/moduleMeshBoundary.f90 b/src/modules/mesh/moduleMeshBoundary.f90 index 4f72e10..091e52e 100644 --- a/src/modules/mesh/moduleMeshBoundary.f90 +++ b/src/modules/mesh/moduleMeshBoundary.f90 @@ -147,7 +147,13 @@ MODULE moduleMeshBoundary ALLOCATE(newElectron) ALLOCATE(newIon) - newElectron%species => part%species + IF (ASSOCIATED(bound%electronSecondary)) THEN + newElectron%species => bound%electronSecondary + + ELSE + newElectron%species => part%species + + END IF newIon%species => bound%species newElectron%v = v0 + (1.D0 + bound%deltaV*v0/NORM2(v0)) diff --git a/src/modules/moduleBoundary.f90 b/src/modules/moduleBoundary.f90 index 83c815c..0b76105 100644 --- a/src/modules/moduleBoundary.f90 +++ b/src/modules/moduleBoundary.f90 @@ -38,6 +38,7 @@ MODULE moduleBoundary TYPE, PUBLIC, EXTENDS(boundaryGeneric):: boundaryIonization REAL(8):: m0, n0, v0(1:3), vTh !Properties of background neutrals. CLASS(speciesGeneric), POINTER:: species !Ion species + CLASS(speciesCharged), POINTER:: electronSecondary !Pointer to species considerer as secondary electron TYPE(table1D):: crossSection REAL(8):: effectiveTime REAL(8):: eThreshold @@ -103,17 +104,19 @@ MODULE moduleBoundary END SUBROUTINE initWallTemperature - SUBROUTINE initIonization(boundary, me, m0, n0, v0, T0, speciesID, effTime, crossSection, eThreshold) + SUBROUTINE initIonization(boundary, me, m0, n0, v0, T0, ion, effTime, crossSection, eThreshold, electronSecondary) USE moduleRefParam USE moduleSpecies USE moduleCaseParam USE moduleConstParam + USE moduleErrors IMPLICIT NONE CLASS(boundaryGeneric), ALLOCATABLE, INTENT(out):: boundary REAL(8), INTENT(in):: me !Electron mass REAL(8), INTENT(in):: m0, n0, v0(1:3), T0 !Neutral properties - INTEGER:: speciesID + INTEGER, INTENT(in):: ion + INTEGER, OPTIONAL, INTENT(in):: electronSecondary REAL(8):: effTime CHARACTER(:), ALLOCATABLE, INTENT(in):: crossSection REAL(8), INTENT(in):: eThreshold @@ -126,7 +129,22 @@ MODULE moduleBoundary boundary%n0 = n0 * Vol_ref boundary%v0 = v0 / v_ref boundary%vTh = DSQRT(kb*T0/m0)/v_ref - boundary%species => species(speciesID)%obj + boundary%species => species(ion)%obj + IF (PRESENT(electronSecondary)) THEN + SELECT TYPE(sp => species(electronSecondary)%obj) + TYPE IS(speciesCharged) + boundary%electronSecondary => sp + + CLASS DEFAULT + CALL criticalError("Species " // sp%name // " chosen for " // & + "secondary electron is not a charged species", 'initIonization') + + END SELECT + + ELSE + boundary%electronSecondary => NULL() + + END IF boundary%effectiveTime = effTime / ti_ref CALL boundary%crossSection%init(crossSection) CALL boundary%crossSection%convert(eV2J/(m_ref*v_ref**2), 1.D0/L_ref**2) diff --git a/src/modules/moduleInject.f90 b/src/modules/moduleInject.f90 index 4e57083..b37e021 100644 --- a/src/modules/moduleInject.f90 +++ b/src/modules/moduleInject.f90 @@ -110,6 +110,10 @@ MODULE moduleInject !Input current in Ampers self%nParticles = INT(flow*tauInject*ti_ref/(qe*species(sp)%obj%weight)) + CASE ("Am2") + !Input current in Ampers per square meter + self%nParticles = INT(flow*tauInject*ti_ref*L_ref**2/(qe*species(sp)%obj%weight)) + CASE ("part/s") !Input current in Ampers self%nParticles = INT(flow*tauInject*ti_ref/species(sp)%obj%weight) diff --git a/src/modules/solver/moduleSolver.f90 b/src/modules/solver/moduleSolver.f90 index e539fed..0b2837f 100644 --- a/src/modules/solver/moduleSolver.f90 +++ b/src/modules/solver/moduleSolver.f90 @@ -517,11 +517,6 @@ MODULE moduleSolver INTEGER, INTENT(in):: t - IF (t == tInitial) THEN - CALL SYSTEM('git rev-parse HEAD > ' // path // folder // '/' // 'fpack_commit.txt') - - END IF - CALL outputProbes(t) counterOutput = counterOutput + 1 From c6470819e852aa619307ed802581ff76140eec9c Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Wed, 26 Jun 2024 15:11:01 +0200 Subject: [PATCH 02/39] Issue with calculating coordinates in quads The third coordinate (unused) was causing some errors when it was becomming too large. --- src/modules/mesh/2DCart/moduleMesh2DCart.f90 | 10 +++++++--- src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 | 12 +++++++----- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/modules/mesh/2DCart/moduleMesh2DCart.f90 b/src/modules/mesh/2DCart/moduleMesh2DCart.f90 index 4341cb0..7bc94ce 100644 --- a/src/modules/mesh/2DCart/moduleMesh2DCart.f90 +++ b/src/modules/mesh/2DCart/moduleMesh2DCart.f90 @@ -318,6 +318,8 @@ MODULE moduleMesh2DCart INTEGER, INTENT(in):: nNodes REAL(8):: fPsi(1:nNodes) + fPsi = 0.D0 + fPsi = (/ (1.D0 - Xi(1)) * (1.D0 - Xi(2)), & (1.D0 + Xi(1)) * (1.D0 - Xi(2)), & (1.D0 + Xi(1)) * (1.D0 + Xi(2)), & @@ -508,15 +510,15 @@ MODULE moduleMesh2DCart conv = 1.D0 XiO = 0.D0 + f(3) = 0.D0 DO WHILE(conv > 1.D-4) dPsi = self%dPsi(XiO, 4) pDer = self%partialDer(4, dPsi) detJ = self%detJac(pDer) invJ = self%invJac(pDer) fPsi = self%fPsi(XiO, 4) - f = (/ DOT_PRODUCT(fPsi,self%x), & - DOT_PRODUCT(fPsi,self%y), & - 0.D0 /) - r + f(1:2) = (/ DOT_PRODUCT(fPsi,self%x), & + DOT_PRODUCT(fPsi,self%y) /) - r(1:2) Xi = XiO - MATMUL(invJ, f)/detJ conv = MAXVAL(DABS(Xi-XiO),1) XiO = Xi @@ -569,6 +571,7 @@ MODULE moduleMesh2DCart pDer = self%partialDer(4, dPsi) detJ = self%detJac(pDer) fPsi = self%fPsi(Xi, 4) + !Compute total volume of the cell self%volume = detJ*4.D0 !Compute volume per node @@ -762,6 +765,7 @@ MODULE moduleMesh2DCart pDer = self%partialDer(3, dPsi) detJ = self%detJac(pDer) invJ = self%invJac(pDer) + localK = localK + MATMUL(TRANSPOSE(MATMUL(invJ,dPsi)),MATMUL(invJ,dPsi))*wTria(l)/detJ END DO diff --git a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 index d4baedd..dfa3035 100644 --- a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 +++ b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 @@ -326,6 +326,8 @@ MODULE moduleMesh2DCyl INTEGER, INTENT(in):: nNodes REAL(8):: fPsi(1:nNodes) + fPsi = 0.D0 + fPsi = (/ (1.D0 - Xi(1)) * (1.D0 - Xi(2)), & (1.D0 + Xi(1)) * (1.D0 - Xi(2)), & (1.D0 + Xi(1)) * (1.D0 + Xi(2)), & @@ -496,7 +498,7 @@ MODULE moduleMesh2DCyl END FUNCTION elemFQuad - !Checks if Xi is inside the element + !Check if Xi is inside the element PURE FUNCTION insideQuad(Xi) RESULT(ins) IMPLICIT NONE @@ -524,15 +526,15 @@ MODULE moduleMesh2DCyl conv = 1.D0 XiO = 0.D0 + f(3) = 0.D0 DO WHILE(conv > 1.D-4) dPsi = self%dPsi(XiO, 4) pDer = self%partialDer(4, dPsi) detJ = self%detJac(pDer) invJ = self%invJac(pDer) fPsi = self%fPsi(XiO, 4) - f = (/ DOT_PRODUCT(fPsi,self%z), & - DOT_PRODUCT(fPsi,self%r), & - 0.D0 /) - r + f(1:2) = (/ DOT_PRODUCT(fPsi,self%z), & + DOT_PRODUCT(fPsi,self%r) /) - r(1:2) Xi = XiO - MATMUL(invJ, f)/detJ conv = MAXVAL(DABS(Xi-XiO),1) XiO = Xi @@ -553,7 +555,7 @@ MODULE moduleMesh2DCyl XiArray = (/ -Xi(2), Xi(1), Xi(2), -Xi(1) /) nextInt = MAXLOC(XiArray,1) - !Selects the higher value of directions and searches in that direction + !Select the higher value of directions and searches in that direction NULLIFY(neighbourElement) SELECT CASE (nextInt) CASE (1) From 6389c8ba2d090db7cc4b29f4c775f4c18f8395d9 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Thu, 27 Jun 2024 12:08:08 +0200 Subject: [PATCH 03/39] Quick because food Cartesian fixed now --- src/modules/common/moduleRandom.f90 | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/modules/common/moduleRandom.f90 b/src/modules/common/moduleRandom.f90 index cd553a8..3fbf5c8 100644 --- a/src/modules/common/moduleRandom.f90 +++ b/src/modules/common/moduleRandom.f90 @@ -73,10 +73,21 @@ MODULE moduleRandom REAL(8), INTENT(in):: cumWeight(1:) REAL(8), INTENT(in):: sumWeight REAL(8):: rnd0b - INTEGER:: rnd + INTEGER:: rnd, i rnd0b = random(0.D0, sumWeight) - rnd = MINLOC(DABS(rnd0b - cumWeight), 1) + i = 1 + DO + IF (rnd0b <= cumWeight(i)) THEN + rnd = i + EXIT + + ELSE + i = i +1 + + END IF + END DO + ! rnd = MINLOC(DABS(rnd0b - cumWeight), 1) END FUNCTION randomWeighted From 5386114d15114574807f88cac4808924537e3c10 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Sat, 29 Jun 2024 14:58:48 +0200 Subject: [PATCH 04/39] Cylindrical injection working better Seems things are a bit better. Still, more cases are needed and still not perfectly uniform... --- src/modules/common/moduleRandom.f90 | 4 +-- src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 | 37 +++++++++++++--------- 2 files changed, 24 insertions(+), 17 deletions(-) diff --git a/src/modules/common/moduleRandom.f90 b/src/modules/common/moduleRandom.f90 index 3fbf5c8..0237de1 100644 --- a/src/modules/common/moduleRandom.f90 +++ b/src/modules/common/moduleRandom.f90 @@ -75,10 +75,10 @@ MODULE moduleRandom REAL(8):: rnd0b INTEGER:: rnd, i - rnd0b = random(0.D0, sumWeight) + rnd0b = random() i = 1 DO - IF (rnd0b <= cumWeight(i)) THEN + IF (rnd0b <= cumWeight(i)/sumWeight) THEN rnd = i EXIT diff --git a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 index dfa3035..dbe182f 100644 --- a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 +++ b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 @@ -163,7 +163,7 @@ MODULE moduleMesh2DCyl r2 = self%n2%getCoordinates() self%z = (/r1(1), r2(1)/) self%r = (/r1(2), r2(2)/) - self%weight = r2(2)**2 - r1(2)**2 + self%weight = DABS(self%r(2)**2 - self%r(1)**2) !Normal vector self%normal = (/ -(self%r(2)-self%r(1)), & self%z(2)-self%z(1) , & @@ -223,21 +223,12 @@ MODULE moduleMesh2DCyl CLASS(meshEdge2DCyl), INTENT(in):: self REAL(8):: rnd REAL(8):: r(1:3) - REAL(8):: dr, dz + REAL(8):: p1(1:2), p2(1:2) rnd = random() - dr = self%r(2) - self%r(1) - dz = self%z(2) - self%z(1) - IF (dr /= 0.D0) THEN - r(2) = dr * DSQRT(rnd) + self%r(1) - r(1) = dz * (r(2) - self%r(1))/dr + self%z(1) - - ELSE - r(2) = self%r(1) - r(1) = dz * rnd + self%z(1) - - END IF - + p1 = (/self%z(1), self%r(1) /) + p2 = (/self%z(2), self%r(2) /) + r(1:2) = (1.D0 - rnd)*p1 + rnd*p2 r(3) = 0.D0 END FUNCTION randPosEdge @@ -572,7 +563,7 @@ MODULE moduleMesh2DCyl !Compute element volume PURE SUBROUTINE volumeQuad(self) - USE moduleConstParam, ONLY: PI8 + USE moduleConstParam, ONLY: PI, PI8 IMPLICIT NONE CLASS(meshCell2DCylQuad), INTENT(inout):: self @@ -596,15 +587,31 @@ MODULE moduleMesh2DCyl Xi = (/-5.D-1, -5.D-1, 0.D0/) r = self%gatherF(Xi, 4, self%r) self%n1%v = self%n1%v + fPsi(1)*r*detJ*PI8 + IF (self%r(1) == 0.D0) THEN + self%n1%v = self%n1%v * PI / 2.D0 + + END IF Xi = (/ 5.D-1, -5.D-1, 0.D0/) r = self%gatherF(Xi, 4, self%r) self%n2%v = self%n2%v + fPsi(2)*r*detJ*PI8 + IF (self%r(2) == 0.D0) THEN + self%n2%v = self%n2%v * PI / 2.D0 + + END IF Xi = (/ 5.D-1, 5.D-1, 0.D0/) r = self%gatherF(Xi, 4, self%r) self%n3%v = self%n3%v + fPsi(3)*r*detJ*PI8 + IF (self%r(3) == 0.D0) THEN + self%n3%v = self%n3%v * PI / 2.D0 + + END IF Xi = (/-5.D-1, 5.D-1, 0.D0/) r = self%gatherF(Xi, 4, self%r) self%n4%v = self%n4%v + fPsi(4)*r*detJ*PI8 + IF (self%r(4) == 0.D0) THEN + self%n4%v = self%n4%v * PI / 2.D0 + + END IF END SUBROUTINE volumeQuad From 4cadfe536781bd7b901e7adaf8a361be7ebc9c13 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Sat, 29 Jun 2024 22:22:10 +0200 Subject: [PATCH 05/39] Seems are a bit better There is still less density in the axis. I don't find a reason why. There must be a modification to the weight... --- src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 | 24 ++++------------------ src/modules/moduleInject.f90 | 5 ++--- 2 files changed, 6 insertions(+), 23 deletions(-) diff --git a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 index dbe182f..4991b7e 100644 --- a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 +++ b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 @@ -586,32 +586,16 @@ MODULE moduleMesh2DCyl !Computes volume per node Xi = (/-5.D-1, -5.D-1, 0.D0/) r = self%gatherF(Xi, 4, self%r) - self%n1%v = self%n1%v + fPsi(1)*r*detJ*PI8 - IF (self%r(1) == 0.D0) THEN - self%n1%v = self%n1%v * PI / 2.D0 - - END IF + self%n1%v = self%n1%v + fPsi(1)*self%volume Xi = (/ 5.D-1, -5.D-1, 0.D0/) r = self%gatherF(Xi, 4, self%r) - self%n2%v = self%n2%v + fPsi(2)*r*detJ*PI8 - IF (self%r(2) == 0.D0) THEN - self%n2%v = self%n2%v * PI / 2.D0 - - END IF + self%n2%v = self%n2%v + fPsi(2)*self%volume Xi = (/ 5.D-1, 5.D-1, 0.D0/) r = self%gatherF(Xi, 4, self%r) - self%n3%v = self%n3%v + fPsi(3)*r*detJ*PI8 - IF (self%r(3) == 0.D0) THEN - self%n3%v = self%n3%v * PI / 2.D0 - - END IF + self%n3%v = self%n3%v + fPsi(3)*self%volume Xi = (/-5.D-1, 5.D-1, 0.D0/) r = self%gatherF(Xi, 4, self%r) - self%n4%v = self%n4%v + fPsi(4)*r*detJ*PI8 - IF (self%r(4) == 0.D0) THEN - self%n4%v = self%n4%v * PI / 2.D0 - - END IF + self%n4%v = self%n4%v + fPsi(4)*self%volume END SUBROUTINE volumeQuad diff --git a/src/modules/moduleInject.f90 b/src/modules/moduleInject.f90 index b37e021..fb01f75 100644 --- a/src/modules/moduleInject.f90 +++ b/src/modules/moduleInject.f90 @@ -306,8 +306,6 @@ MODULE moduleInject nMin = nMin + 1 nMax = nMin + self%nParticles - 1 - !Assign weight to particle. - partInj(nMin:nMax)%weight = self%species%weight !Particle is considered to be outside the domain partInj(nMin:nMax)%n_in = .FALSE. !$OMP END SINGLE @@ -315,10 +313,11 @@ MODULE moduleInject !$OMP DO DO n = nMin, nMax randomX = randomWeighted(self%cumWeight, self%sumWeight) - randomEdge => mesh%edges(self%edges(randomX))%obj !Random position in edge partInj(n)%r = randomEdge%randPos() + !Assign weight to particle. + partInj(n)%weight = self%species%weight !Volume associated to the edge: IF (ASSOCIATED(randomEdge%e1)) THEN partInj(n)%cell = randomEdge%e1%n From cd7bf66bd84213b6cd385dbe84fb7edd6cd0a5eb Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Sun, 30 Jun 2024 10:36:36 +0200 Subject: [PATCH 06/39] A workaround The random position for edges in the axis is corrected so that there is a more uniform charge density in the axis. Still, things are not perfect and this is something to really look into in the future. --- src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 index 4991b7e..9278a27 100644 --- a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 +++ b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 @@ -226,6 +226,12 @@ MODULE moduleMesh2DCyl REAL(8):: p1(1:2), p2(1:2) rnd = random() + IF (self%r(1) == 0.D0 .OR. & + self%r(2) == 0.D0) THEN + rnd = rnd**(1.D0/3.D0) + + END IF + p1 = (/self%z(1), self%r(1) /) p2 = (/self%z(2), self%r(2) /) r(1:2) = (1.D0 - rnd)*p1 + rnd*p2 From 59a322a4c7df17c6de8d507aef35588eae28935d Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Sun, 30 Jun 2024 10:46:05 +0200 Subject: [PATCH 07/39] Clean up Fixing calculation of node volumes. --- src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 index 9278a27..df01782 100644 --- a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 +++ b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 @@ -580,6 +580,7 @@ MODULE moduleMesh2DCyl REAL(8):: dPsi(1:3, 1:4), pDer(1:3, 1:3) self%volume = 0.D0 + !2D 1 point Gauss Quad Integral Xi = 0.D0 dPsi = self%dPsi(Xi, 4) @@ -590,17 +591,9 @@ MODULE moduleMesh2DCyl !Computes total volume of the cell self%volume = r*detJ*PI8 !4*2*pi !Computes volume per node - Xi = (/-5.D-1, -5.D-1, 0.D0/) - r = self%gatherF(Xi, 4, self%r) self%n1%v = self%n1%v + fPsi(1)*self%volume - Xi = (/ 5.D-1, -5.D-1, 0.D0/) - r = self%gatherF(Xi, 4, self%r) self%n2%v = self%n2%v + fPsi(2)*self%volume - Xi = (/ 5.D-1, 5.D-1, 0.D0/) - r = self%gatherF(Xi, 4, self%r) self%n3%v = self%n3%v + fPsi(3)*self%volume - Xi = (/-5.D-1, 5.D-1, 0.D0/) - r = self%gatherF(Xi, 4, self%r) self%n4%v = self%n4%v + fPsi(4)*self%volume END SUBROUTINE volumeQuad From e277fe6ddb8526ec2c1ae8fedccd4a777c178c0d Mon Sep 17 00:00:00 2001 From: Jorge Gonzalez Date: Sun, 30 Jun 2024 08:48:51 +0000 Subject: [PATCH 08/39] PI is no needed here --- src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 index df01782..7bae6b3 100644 --- a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 +++ b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 @@ -569,7 +569,7 @@ MODULE moduleMesh2DCyl !Compute element volume PURE SUBROUTINE volumeQuad(self) - USE moduleConstParam, ONLY: PI, PI8 + USE moduleConstParam, ONLY: PI8 IMPLICIT NONE CLASS(meshCell2DCylQuad), INTENT(inout):: self From 6b78ae373894f0c72d746f03f4637d6c2ef7d006 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Wed, 3 Jul 2024 22:04:28 +0200 Subject: [PATCH 09/39] Added an adhoc factor to correct injection I think that the volume of the nodes is not being well calculated, maybe we need a better volume calculation for this, using multiple points (as it is done for K) --- src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 | 29 ++++++++++++++++++---- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 index 7bae6b3..90773e5 100644 --- a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 +++ b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 @@ -226,11 +226,11 @@ MODULE moduleMesh2DCyl REAL(8):: p1(1:2), p2(1:2) rnd = random() - IF (self%r(1) == 0.D0 .OR. & - self%r(2) == 0.D0) THEN - rnd = rnd**(1.D0/3.D0) - - END IF + ! IF (self%r(1) == 0.D0 .OR. & + ! self%r(2) == 0.D0) THEN + ! rnd = rnd**(1.D0/3.D0) + ! + ! END IF p1 = (/self%z(1), self%r(1) /) p2 = (/self%z(2), self%r(2) /) @@ -578,6 +578,9 @@ MODULE moduleMesh2DCyl REAL(8):: detJ REAL(8):: fPsi(1:4) REAL(8):: dPsi(1:3, 1:4), pDer(1:3, 1:3) + REAL(8):: nodeR(1:3) + REAL(8), PARAMETER:: correction = 0.81D0 !TODO: No idea why this is needed, this needs more attention. Probably a better + ! calculation of the volume is needed. self%volume = 0.D0 @@ -592,9 +595,25 @@ MODULE moduleMesh2DCyl self%volume = r*detJ*PI8 !4*2*pi !Computes volume per node self%n1%v = self%n1%v + fPsi(1)*self%volume + nodeR = self%n1%getCoordinates() + if (nodeR(2) == 0.D0) then + self%n1%v = self%n1%v * correction + end if self%n2%v = self%n2%v + fPsi(2)*self%volume + nodeR = self%n2%getCoordinates() + if (nodeR(2) == 0.D0) then + self%n2%v = self%n2%v * correction + end if self%n3%v = self%n3%v + fPsi(3)*self%volume + nodeR = self%n3%getCoordinates() + if (nodeR(2) == 0.D0) then + self%n3%v = self%n3%v * correction + end if self%n4%v = self%n4%v + fPsi(4)*self%volume + nodeR = self%n4%getCoordinates() + if (nodeR(2) == 0.D0) then + self%n4%v = self%n4%v * correction + end if END SUBROUTINE volumeQuad From b972120ed51689b9ef171f3fd2af8966d68ec81b Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Thu, 4 Jul 2024 10:56:13 +0200 Subject: [PATCH 10/39] Switching to variable particle weight I have to change the injection of particles. Each edge will receive a similar number of particles and their weight will change to have a constant density based on the geometry. Still testing. --- src/modules/common/moduleRandom.f90 | 4 +-- src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 | 36 ++++++++-------------- src/modules/moduleInject.f90 | 5 +-- 3 files changed, 18 insertions(+), 27 deletions(-) diff --git a/src/modules/common/moduleRandom.f90 b/src/modules/common/moduleRandom.f90 index 0237de1..dacbf9c 100644 --- a/src/modules/common/moduleRandom.f90 +++ b/src/modules/common/moduleRandom.f90 @@ -40,10 +40,10 @@ MODULE moduleRandom INTEGER:: rnd REAL(8):: rnd01 - rnd = 0.D0 + rnd = 0 CALL RANDOM_NUMBER(rnd01) - rnd = INT(REAL(b - a) * rnd01) + 1 + rnd = NINT(REAL(b - a) * rnd01) + a END FUNCTION randomIntAB diff --git a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 index 90773e5..2d2d6c6 100644 --- a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 +++ b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 @@ -235,6 +235,7 @@ MODULE moduleMesh2DCyl p1 = (/self%z(1), self%r(1) /) p2 = (/self%z(2), self%r(2) /) r(1:2) = (1.D0 - rnd)*p1 + rnd*p2 + r(2) = (self%r(2) + self%r(1)) * 0.5D0 r(3) = 0.D0 END FUNCTION randPosEdge @@ -578,9 +579,6 @@ MODULE moduleMesh2DCyl REAL(8):: detJ REAL(8):: fPsi(1:4) REAL(8):: dPsi(1:3, 1:4), pDer(1:3, 1:3) - REAL(8):: nodeR(1:3) - REAL(8), PARAMETER:: correction = 0.81D0 !TODO: No idea why this is needed, this needs more attention. Probably a better - ! calculation of the volume is needed. self%volume = 0.D0 @@ -594,26 +592,18 @@ MODULE moduleMesh2DCyl !Computes total volume of the cell self%volume = r*detJ*PI8 !4*2*pi !Computes volume per node - self%n1%v = self%n1%v + fPsi(1)*self%volume - nodeR = self%n1%getCoordinates() - if (nodeR(2) == 0.D0) then - self%n1%v = self%n1%v * correction - end if - self%n2%v = self%n2%v + fPsi(2)*self%volume - nodeR = self%n2%getCoordinates() - if (nodeR(2) == 0.D0) then - self%n2%v = self%n2%v * correction - end if - self%n3%v = self%n3%v + fPsi(3)*self%volume - nodeR = self%n3%getCoordinates() - if (nodeR(2) == 0.D0) then - self%n3%v = self%n3%v * correction - end if - self%n4%v = self%n4%v + fPsi(4)*self%volume - nodeR = self%n4%getCoordinates() - if (nodeR(2) == 0.D0) then - self%n4%v = self%n4%v * correction - end if + Xi = (/-5.D-1, -5.D-1, 0.D0/) + r = self%gatherF(Xi, 4, self%r) + self%n1%v = self%n1%v + fPsi(1)*r*detJ*PI8 + Xi = (/ 5.D-1, -5.D-1, 0.D0/) + r = self%gatherF(Xi, 4, self%r) + self%n2%v = self%n2%v + fPsi(2)*r*detJ*PI8 + Xi = (/ 5.D-1, 5.D-1, 0.D0/) + r = self%gatherF(Xi, 4, self%r) + self%n3%v = self%n3%v + fPsi(3)*r*detJ*PI8 + Xi = (/-5.D-1, 5.D-1, 0.D0/) + r = self%gatherF(Xi, 4, self%r) + self%n4%v = self%n4%v + fPsi(4)*r*detJ*PI8 END SUBROUTINE volumeQuad diff --git a/src/modules/moduleInject.f90 b/src/modules/moduleInject.f90 index fb01f75..57e3131 100644 --- a/src/modules/moduleInject.f90 +++ b/src/modules/moduleInject.f90 @@ -283,6 +283,7 @@ MODULE moduleInject USE moduleMesh USE moduleRandom USE moduleErrors + USE moduleRefParam, ONLY: L_ref IMPLICIT NONE CLASS(injectGeneric), INTENT(in):: self @@ -312,12 +313,12 @@ MODULE moduleInject !$OMP DO DO n = nMin, nMax - randomX = randomWeighted(self%cumWeight, self%sumWeight) + randomX = random(1, self%nEdges) randomEdge => mesh%edges(self%edges(randomX))%obj !Random position in edge partInj(n)%r = randomEdge%randPos() !Assign weight to particle. - partInj(n)%weight = self%species%weight + partInj(n)%weight = self%species%weight * sqrt(partInj(n)%r(2) / (0.1D0*L_ref)) !Volume associated to the edge: IF (ASSOCIATED(randomEdge%e1)) THEN partInj(n)%cell = randomEdge%e1%n From 6b5ac16e4b0f0c6797c9ea47b1ec00f4c82c5eb4 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Sat, 6 Jul 2024 10:12:03 +0200 Subject: [PATCH 11/39] Still working on it No uniform density yet... --- src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 | 1 - src/modules/moduleInject.f90 | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 index 2d2d6c6..544c8e1 100644 --- a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 +++ b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 @@ -235,7 +235,6 @@ MODULE moduleMesh2DCyl p1 = (/self%z(1), self%r(1) /) p2 = (/self%z(2), self%r(2) /) r(1:2) = (1.D0 - rnd)*p1 + rnd*p2 - r(2) = (self%r(2) + self%r(1)) * 0.5D0 r(3) = 0.D0 END FUNCTION randPosEdge diff --git a/src/modules/moduleInject.f90 b/src/modules/moduleInject.f90 index 57e3131..2dba3de 100644 --- a/src/modules/moduleInject.f90 +++ b/src/modules/moduleInject.f90 @@ -318,7 +318,7 @@ MODULE moduleInject !Random position in edge partInj(n)%r = randomEdge%randPos() !Assign weight to particle. - partInj(n)%weight = self%species%weight * sqrt(partInj(n)%r(2) / (0.1D0*L_ref)) + partInj(n)%weight = self%species%weight * sqrt(partInj(n)%r(2) / (0.1D0/L_ref)) !Volume associated to the edge: IF (ASSOCIATED(randomEdge%e1)) THEN partInj(n)%cell = randomEdge%e1%n From 626e970d8257f56641278e1b05999a145ff85d53 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Sat, 6 Jul 2024 19:14:44 +0200 Subject: [PATCH 12/39] Some progress Fixed an issue with random integer numbers. Cylindrical coordinates are not perfect yet: - Box (cylinder) with initial constant density loses particles at r = 0 - Injection density still low in r = 0 --- src/modules/common/moduleRandom.f90 | 2 +- src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 | 5 ----- .../mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 | 14 ++++++++++++++ src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 | 14 ++++++++++++++ src/modules/moduleInject.f90 | 4 ++-- 5 files changed, 31 insertions(+), 8 deletions(-) diff --git a/src/modules/common/moduleRandom.f90 b/src/modules/common/moduleRandom.f90 index dacbf9c..ae5c548 100644 --- a/src/modules/common/moduleRandom.f90 +++ b/src/modules/common/moduleRandom.f90 @@ -43,7 +43,7 @@ MODULE moduleRandom rnd = 0 CALL RANDOM_NUMBER(rnd01) - rnd = NINT(REAL(b - a) * rnd01) + a + rnd = a + FLOOR((b+1-a)*rnd01) END FUNCTION randomIntAB diff --git a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 index 544c8e1..426846d 100644 --- a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 +++ b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 @@ -226,11 +226,6 @@ MODULE moduleMesh2DCyl REAL(8):: p1(1:2), p2(1:2) rnd = random() - ! IF (self%r(1) == 0.D0 .OR. & - ! self%r(2) == 0.D0) THEN - ! rnd = rnd**(1.D0/3.D0) - ! - ! END IF p1 = (/self%z(1), self%r(1) /) p2 = (/self%z(2), self%r(2) /) diff --git a/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 b/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 index 0df1289..84b8535 100644 --- a/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 +++ b/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 @@ -296,6 +296,20 @@ MODULE moduleMeshInputGmsh2 CLOSE(10) + ! Adjust node volume at axis + SELECT CASE(self%geometry) + CASE("Cyl") + DO n = 1, numNodes + r = self%nodes(n)%obj%getCoordinates() + IF (r(2) == 0.D0) THEN + self%nodes(n)%obj%v = self%nodes(n)%obj%v * 2.0D0!2.0D0/3.0D0 + + END IF + + END DO + + END SELECT + !Call mesh connectivity CALL self%connectMesh diff --git a/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 b/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 index 763517f..eb6af79 100644 --- a/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 +++ b/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 @@ -495,6 +495,20 @@ MODULE moduleMeshInputVTU END SELECT END DO + + ! Adjust node volume at axis + SELECT CASE(self%geometry) + CASE("Cyl") + DO n = 1, numNodes + r = self%nodes(n)%obj%getCoordinates() + IF (r(2) == 0.D0) THEN + self%nodes(n)%obj%v = self%nodes(n)%obj%v * 2.0D0!2.0D0/3.0D0 + + END IF + + END DO + + END SELECT !Call mesh connectivity CALL self%connectMesh diff --git a/src/modules/moduleInject.f90 b/src/modules/moduleInject.f90 index 2dba3de..69a3dd6 100644 --- a/src/modules/moduleInject.f90 +++ b/src/modules/moduleInject.f90 @@ -313,12 +313,12 @@ MODULE moduleInject !$OMP DO DO n = nMin, nMax - randomX = random(1, self%nEdges) + randomX = randomWeighted(self%cumWeight, self%sumWeight) randomEdge => mesh%edges(self%edges(randomX))%obj !Random position in edge partInj(n)%r = randomEdge%randPos() !Assign weight to particle. - partInj(n)%weight = self%species%weight * sqrt(partInj(n)%r(2) / (0.1D0/L_ref)) + partInj(n)%weight = self%species%weight !Volume associated to the edge: IF (ASSOCIATED(randomEdge%e1)) THEN partInj(n)%cell = randomEdge%e1%n From 5bc064d0183097c83f57b2299c99a3449baebc6d Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Sun, 7 Jul 2024 11:53:56 +0200 Subject: [PATCH 13/39] Some parallel issues Forgot to check Gmsh2 format with new changes. Cartesian coordinates were not calculating things properly. --- src/modules/mesh/2DCart/moduleMesh2DCart.f90 | 3 ++- src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/modules/mesh/2DCart/moduleMesh2DCart.f90 b/src/modules/mesh/2DCart/moduleMesh2DCart.f90 index 7bc94ce..4bf1f32 100644 --- a/src/modules/mesh/2DCart/moduleMesh2DCart.f90 +++ b/src/modules/mesh/2DCart/moduleMesh2DCart.f90 @@ -556,6 +556,7 @@ MODULE moduleMesh2DCart !Compute element volume PURE SUBROUTINE volumeQuad(self) + USE moduleRefParam, ONLY: L_ref IMPLICIT NONE CLASS(meshCell2DCartQuad), INTENT(inout):: self @@ -573,7 +574,7 @@ MODULE moduleMesh2DCart fPsi = self%fPsi(Xi, 4) !Compute total volume of the cell - self%volume = detJ*4.D0 + self%volume = detJ*4.D0/L_ref !Compute volume per node self%n1%v = self%n1%v + fPsi(1)*self%volume self%n2%v = self%n2%v + fPsi(2)*self%volume diff --git a/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 b/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 index 84b8535..2c02358 100644 --- a/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 +++ b/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 @@ -299,7 +299,7 @@ MODULE moduleMeshInputGmsh2 ! Adjust node volume at axis SELECT CASE(self%geometry) CASE("Cyl") - DO n = 1, numNodes + DO n = 1, self%numNodes r = self%nodes(n)%obj%getCoordinates() IF (r(2) == 0.D0) THEN self%nodes(n)%obj%v = self%nodes(n)%obj%v * 2.0D0!2.0D0/3.0D0 From 1f2ec8d82f3ee4fa70304b707fd7382e75ba4139 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Sun, 7 Jul 2024 14:37:34 +0200 Subject: [PATCH 14/39] New option for initial distribution of species The number of particles per cell can be defined when giving an initial distribution fora species. If not, the typical method of using the species weight is used. This is particularly useful for cylindrical coordinates in which very little particles might end up in the axis if a constant weight is used. --- doc/user-manual/bibliography.bib.sav | 77 +++++++++++++++++++++++++++ doc/user-manual/fpakc_UserManual.pdf | Bin 185817 -> 186028 bytes doc/user-manual/fpakc_UserManual.tex | 14 +++-- src/modules/init/moduleInput.f90 | 14 +++-- 4 files changed, 97 insertions(+), 8 deletions(-) create mode 100644 doc/user-manual/bibliography.bib.sav diff --git a/doc/user-manual/bibliography.bib.sav b/doc/user-manual/bibliography.bib.sav new file mode 100644 index 0000000..b8b6483 --- /dev/null +++ b/doc/user-manual/bibliography.bib.sav @@ -0,0 +1,77 @@ +% Encoding: UTF-8 + +@InProceedings{boris1970relativistic, + author = {Boris, Jay P}, + booktitle = {Proc. Fourth Conf. Num. Sim. Plasmas}, + title = {Relativistic plasma simulation-optimization of a hybrid code}, + year = {1970}, + pages = {3--67}, +} + +@article{higginson2020corrected, + title={A corrected method for Coulomb scattering in arbitrarily weighted particle-in-cell plasma simulations}, + author={Higginson, Drew Pitney and Holod, Ihor and Link, Anthony}, + journal={Journal of Computational Physics}, + volume={413}, + pages={109450}, + year={2020}, + publisher={Elsevier} +} + +@Misc{gfortranURL, + author = {GNU Project}, + title = {gfortran - the GNU Fortran compiler}, + howpublished = {\url{https://gcc.gnu.org/wiki/GFortran}}, +} + +@Misc{ifortURL, + author = {Intel\textsuperscript{\textregistered}}, + title = {Intel\textsuperscript{\textregistered} Fortran Compiler}, + howpublished = {\url{https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/fortran-compiler.html}}, +} + +@Misc{openblasURL, + title = {OpenBLAS, an optimized BLAS library}, + howpublished = {\url{https://www.openblas.net/}}, +} + +@Misc{jsonfortranURL, + title = {JSON-Fortran}, + howpublished = {\url{https://github.com/jacobwilliams/json-fortran}}, +} + +@Misc{jsonURL, + title = {JSON, JavaScript Object Notation}, + howpublished = {\url{https://www.json.org/json-en.html}}, +} + +@Misc{gmshURL, + author = {Christophe Geuzaine and Jean-François Remacle}, + title = {Gmsh}, + howpublished = {\url{https://gmsh.info/}}, +} + +@Article{welford1962note, + author = {Welford, BP}, + journal = {Technometrics}, + title = {Note on a method for calculating corrected sums of squares and products}, + year = {1962}, + number = {3}, + pages = {419--420}, + volume = {4}, + publisher = {Taylor \& Francis}, +} + +@Article{sherlock2008monte, + author = {Sherlock, Mark}, + journal = {Journal of Computational Physics}, + title = {A Monte-Carlo method for Coulomb collisions in hybrid plasma models}, + year = {2008}, + number = {4}, + pages = {2286--2292}, + volume = {227}, + groups = {Particle-in-cell}, + publisher = {Elsevier}, +} + +@Comment{jabref-meta: databaseType:bibtex;} diff --git a/doc/user-manual/fpakc_UserManual.pdf b/doc/user-manual/fpakc_UserManual.pdf index 2453bb7a03988944220d03dbe093216dd6203ec1..37d80141e4c7e64c2cb808e7e072b95019a502ae 100644 GIT binary patch delta 52973 zcmZU3Q;aT5v}N12aoVE~-F zpDRGmx&J#~3csjHZRyWRZ*{_Qm!X{G+fh>_6X2C&?52MIXJ>0Hkv1cj(0+`AgQ4r6 zediibzU93e`$v8+V8 zl9!2GgcfaV62HiU9HLOsP(_!J)9kQPIY_EOb9+L#AyO_XHA(a=9~R=8ShE{Pkg?K~ z4bY^tu9MuIm7;}aP{7ICqb!P8DuY&J+>Xt>nwBh6|p2NG1$J z-Wk<10Q`3%&*%ixX(zM)%{tmiXeT8CIy8Yds1uX^?Wmcf)R{FCYdRD7AIPEYo~ejX zKj@ab|L4p(9!Frk?(jJCd_t=_T~lbRAOM_UAW@`sLz3VF?%sPEO83RMg(HU=F){%b zirHXEVKq9QIK?vIF%@>RW*v;duXFNvze^Qb;?M?x;W%YV38jzdoD63yR`*!@%Q(!J>XTa0$w#cgo0fH~tV+~&-7DUX&Evyc^40UtGzLUb!s<>lRn z4o%U)c_{dj$~E{@$E|8yR4}Mk1RyR@am+fexNY0nh(aARJq~HOJN!%VJlXcCHS3d7 zkXn}2ta|4p4;=<{&cqS*Vnjg}`^wF_$rJOSOBz0lN6Cz74pr{4Qiu|(oFhBJB0N9@ z&4T}|M@mjZ9yc)wZFC;a-Fpuohg%l1`XXjaWF?1Qh|pQolWk*#$0|h10hkBCLi<%o z#-AsJAZ>!|MWx;a2T9wb$+3?{p0}9yl8{#bEUo-Mqg5~}pc7bbmM6AeVv8fYJxy5-&f#vk7is8DidTszC3;N(h(tei(|J!J;N~`5I?_9Np39>`PS;(T>gS67gQES0n%=?j5q+C(k$_{;UFDjv zUSG%QI58C0=jULPTE^l=t5eA~ebosPT-BCfH#UUUBtNX}5J8V=ZP}9eR}Fnsf5dUZy#YXvOyD$Fa){ubm-1{J5q)VAe)f)c*lBROJ}b)R4#*q zc!;1OkY6zlk5lIupIc&RhpFNChL*6$qe_0W0~iWT4?0ks80rg3VmeI53RHD$M?^rh zxWJbc(QT3&igpU`QjNQ_C4XU^e3-@1|KadHbfI4P`|<9`fqc1^P>e+dY3WqGQ5Xbc zWTn6Hd>-Si`v!xWlk%7_+b$4HxfA8(Xi>%Y+oojV2%29}qKLHafJ8Sb2gy#=H zD;aOh>E#he!1y2Q;U4QH{}Z{gDi(s$pU~E4qIckRvVcN}XfnA3<2S@N3!3KHnv1H; z4bT?+C?p@B&g#qY!zqSln16arp$5!f1|PT2UD0=^WPM*-BOaK%-vf*B>G^tkz8@6y z8>I%_$l`kXJ-vJ9;578L&Cz|`-X8aW^w`atrvu(4>*ff@>+bYyv##c}0Ydx7clR-j z!=6O%$Lv~NFbiQjecO$L(AT?u%&puM-$rpe|F+|3cKxmy7hf6cvZIsNEqsHLC*gx) z2!eUp-_w;oA;-z^bZ^hsa&UoY3Tau?kjWo>`J@R78A;^^*1ux8+0 z3urfhS7p6AI6K~7n`GPEGG7D$w&2rzF4m6*4aVa8$+w4}v-bK!d~Zq2ykFgv7DgvF z*``7w#YwRAR>hy`rL~}c5tmBo>}-DRX;@>HGiSm#2Mc>KHW%eTW_n*>(?qD-B(XT& zS9vnvPE#Gdm`%~N6KFl<=66p5wM2M+2yQPzyJq5b-qa*D8JK|<2ORDIQg1RtP>!tH zw5tv`7oh(RnQ6+~!__;2+3~~Gol@;G-m)8@Ao6B=*obtFZYVg#`y}TRIK`>HPV64l z&p>=V{>k%4C4e@AYbNhZdk0mpw8dTnW z1961*PbkQo3VAvjr|Px?RB_cqSSoAPRF}zQOJ3;R@kqZfwo=*qQB`FMg)B`L=KpOL zn(;8f;P_kMjRJWnmEJg@-$YQo3D)f&!nmR=!>ChjhZS1PAlUrySr;g4$GYlHjv#@r zNz=;SkIwhjddsNhNaA$($Z3!=fGWX0U|2_hLxby8l;wQo(Zgo|9@3Rk26n&kYC}`l zCv8!B3t>>sOR|1@CrK}wRbVw!XX@=2h#0NV*`QXWyMx}rq?$T$;nzVlm3FZiAnV4c zKQ_AF_}9TU``y$A_>{(|75fIY9^jrmji1k0b=T4&Pt;VzdSmh(?eC?N{_(Iu&P^9p zvP3T!BKad6(D8NyC?a$Z`ctOr_b4Xt($A3=RWgmFz&Ynd;{wMQK=ViIo6N|jv|>0pq)3-AD0UMasiS>-OtdQ%H;5CO$K<@D>fwPuDgq3Qh$0AHfh8VBRz}t^6BWLHW>Ny}Rv1tlwyVK!`ay)DFts!% zyDw;!W<26ldJYkVJp0;TL|B#(3nn14n6poa^~pB{$v(j*>zH|$Pr@!q%zXrT|6B-b zOMEnTTKLZbKLJ{LQJdC1@b%5q8v zG*WHXm4n59i(@7`Ryjq}fVTtpwT^Ll7PyvkL4K{!>Jz_KRPj~dq*PD-it3PTRx`B!6%aLP-vB^DSK*O_=^oFrZf^h&~DZh=+ zNZ2knu*T$;+0KX-7EG?ciNaQ(EW~+3hlw5Nr)(p%4L$`@9KfvzMuh4p%rlX9qk)f(8KtL zMB(1HD<~39nOsFC1A1Ec@^)oBzn5d!>&Ln+8%?c0=(Y}=C3G;5=;7eN&BPsn5XXWN?%|Bd4O3lSabCJ5vE9+xtAHwq+$4S7HmtJk z02Er$&*1R7@tb$s6m+OqLmaRuXdT3#yxqY5DHHRQF~cQg_bX6DmyGPSAnU{|}c0jpCWkyG%K`WbX zg2+Fl=ogJBl4?6-eUz-W2dxj`n)|r4SSJEaCG0dW-c&^eTZ~&$b!_F!jg5if2p-(a z6#k25E~?doWkun8tm!I_;wOWgFT5)%FvuY`(lvS$NH|08b(C#LTj0Z6rP`i`c0ke# zTe5)+gw#u%WeVWR3^HQvra(X-iW$1smdPca4Qk9tFyM-y45WcfT!Xm7!Z4YJkx2<2 z6~s*fhBG8mPxWM_D6KIi#TiPK6O9M6x#lSgZ?D@m9NoCI30x(GYnMVYuBYUuy)zI) zfz7qXsGc8Az{jDYWtJJfMgoudsLXBMP}&q^CgOJY)&+b9%4GKJDBa<=@M!_j4+8;g z_`U`cj@1@cOPEx<{5T$nSzgS9vqWU8yg8lfiH_O>gCf%Tzb+-i0;cm+zQS4!@-j_U z9E5O~EogB${~4 z^4aOgG5`|zW9`pU&^wO&H@CF&aXm5aFtjmLHv%2-GcKE}o^9+MPy}&YaeI$lA*cvy z4_jZ@0pV>r7$FudsC;;+s4WxfpaUH|Ma1?6}mrcRT0$GYHnG^rnfQs;|1Zz3GPY>t(GW(h<>Q{3BC?{pin}iSp zWjXi^awk&=NVKYDA&Ivg!eE3BsvFhK9{@5?K^yU=_r>0d!X+%+6;2dbbBUgTcp4A) z8KlVU(*c+iq8RVr?WDwbRAF2^>H3=;qdC_t9~ap7m?ES0XUMGb0a%_P29hC(UBL*y z$hdcwNtD%!@Jv#q$UM- zGO;&BlTCsk`{S*7C_8Q}+p?c(P-@+w8G;s7gh~0So;&Pgj9#P&Nwil(G;)*>S#TZ) zTt(DjEkf4{`+Yl&LX9qRQ0H3eHgDc~J49s2@1j(RuWkjxdiqTNooQ~-7|YVxe8#IH5)DVY%v-9o?&k!UI^@pSjQq@czk zeSHoS8EVQvvie%f9O&r)l|*2n%b|-Vqk+#komovJu0fv|0|SQwXozbVnVoheoXsT4 z@I_OR>0&Pd<0H=G5XjzJ_f}QLp8!>N1;ayO#_50=WQCOA6I7Lx)RU+V8$b^2$9x0F zAQIhhY4CVR;6GC8BpC9V8Le|o;f$3schU+NaxyF>bmc#SuKTy>LL*;%Nerw5ZtKbA zEN&KhDmsc1UDC4F;E8mVyOz4bZ7L1%hb%DciRW3=iFeCpZK%ZRDwNi462vDjZrd2kW5@KW zaL<{pVo7n%WDePw0Jv-WYoS*1A?=N*BaQWPk%#R11Z}}?UUCNNX2EF`tEaa-{JSJ; zJYx=b3N(6X0gMRk9cBbu7hPIP+fJS$(9ogljwccK!joO|#NwyqM8LK~K0&h~gcxQ# zW61RZmGudWJagR1!{&ylj%7+AV=>hlRkLl^BIs4Qqa51@qs*IBUMW>`dSVKCcPUll zReH!wYrxBjE$fUtH!KacXSy+VGg}B7o`}yN8Hy!&jY?<0ue1qWZ|sf9h_Zv{p!O&?re29Xm1Ej=3+B(Tmm)HrF1bfpf)QS=LQVO@ zf`~ivN@h&gfM6%YS~dYG8L_;T09G?MTn9!{R6+NF7a}fBF=NsfGVHU{{kOfZ2!999 z?r9K;C(^94F}2|sVD{}{bWl!~-Ags&gjSh|M9G{Mlt{E!!wSG#B&ETRsmtDkq6ChS z?H}Kk;)@7&u*3CMH3CXO1BIOXN^=b#>l;5~X=LRjfKFvc{(YTrlQrM?m9&c_oi=m@ zK^7fXn`f`gfYW!z(^h0>l@c5Z!gFHI=pPG*E>JZly9PrzO{$D$mnt0ERgkLY*(c~y z{?U;|veF=!HjDRRmRw_avq}L$9SH*rWjaPZKm@I_xC0tiRd)*cq4F zD~zxS1$u&%X?ZxRLYmv9L;d-QhwM-dM5C3$U?`NVW1L8j*pid7Uj$4hLxX8?NYd_2 z9a~t7A(|4jO7YGj3R3LWmfFtQ=FT@u{_FkS09|V{a~?2Y5A?(D0hLPnubie#LtQ-; zBK}#U;o|Zyu2eqL7_TiZnjpws&31Omv%xI44+K^c{VNkMG!kqe@(?T3-qGS`i@Iendc9-0>HbR2h9h zg^&oD<0*Grn}fXOT!$)E0XjH=I;ekegi=ov&SJ;w%x!10-NdwI=pmfRLfZWuP$PpX zj_Xu}=pd62ieY$OkxZfTSY_1X#*)Z!$phw$%=+vgF_8 zRirnzhgiI6Br38w(hS3=zVoRCK(7EHjQ#!t{X7>*^@f*kC;^k2boANz+ih|pVFtzm zh>a$yvo2c)5Yb9*CHmehH>k}!4U=809l3;8_TH) zp|nq@lYnju-;p&mT;C}e3l$D$;y}GUvx*L=e6eiJ zh3x5`De2ycK@7ODF@>ZMmB3EDQI$#u;+!1mE~9afEN9c(`|I0$YaE^~&16%A1JVst zdiF3CiSit^tUNr(aDu)AKykL;*9hqB3to@{LK&x5O~haIls!th@uXy`NPCP~p=PNm zLl3-nEg=!_(q)Kz4QTK+Q`5+q)fyvj?b36xt&vN&;&I0?%S7NJKIX;@E6Gs~7UgET z#E%v2oj3gFiPBDB@%%aa(s6oGqYi$XDH2545Sa5Un?=%!)ov04u=PAMIoym_jI|=D z>v^|-u*SGobF=xx=~alcpEsqk=EqJzV}X}nB+X*yt|Qj4%z~t`u9{z_SGNq}p)7r1 zM5jO@e!JH#bgT%Ew7$c`muP`AfCjh-IV!~gKKfdZem%0AQ5Q6sL| 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 delta 52900 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


u( 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 Wyj(2qlLL?n%u305c;wXN$^Q>tDPl7K diff --git a/doc/user-manual/fpakc_UserManual.tex b/doc/user-manual/fpakc_UserManual.tex index daf42c3..fd48ed2 100644 --- a/doc/user-manual/fpakc_UserManual.tex +++ b/doc/user-manual/fpakc_UserManual.tex @@ -708,11 +708,15 @@ make \begin{itemize} \item \textbf{species}: Character. Name of species as defined in the object \textbf{species}. - \item \textbf{file}: Character. - Output file from previous run used as an initial state for the species. - The file format must be the same as in \textbf{geometry.meshType} - Initial particles are assumed to have a Maxwellian distribution. - File must be located at \textbf{output.path}. + \item \textbf{file}: Character. + Output file from previous run used as an initial state for the species. + The file format must be the same as in \textbf{geometry.meshType} + Initial particles are assumed to have a Maxwellian distribution. + File must be located at \textbf{output.path}. + \item \textbf{particlesPerCell}: Integer. + Optional. + Initial number of particles per cell. + If not, the number of particles per cell will be assigned based on the species weight and the cell volume. \end{itemize} \end{itemize} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/src/modules/init/moduleInput.f90 b/src/modules/init/moduleInput.f90 index 7a1b206..e30bf97 100644 --- a/src/modules/init/moduleInput.f90 +++ b/src/modules/init/moduleInput.f90 @@ -324,7 +324,8 @@ MODULE moduleInput REAL(8):: densityCen !Mean velocity and temperature at particle position REAL(8):: velocityXi(1:3), temperatureXi - INTEGER:: nNewPart = 0.D0 + INTEGER:: nNewPart = 0 + REAL(8):: weight = 0.D0 CLASS(meshCell), POINTER:: cell TYPE(particle), POINTER:: partNew REAL(8):: vTh @@ -343,6 +344,9 @@ MODULE moduleInput !Reads node values at the nodes filename = path // spFile CALL mesh%readInitial(filename, density, velocity, temperature) + !Check if initial number of particles is given + CALL config%get(object // '.particlesPerCell', nNewPart, found) + !For each volume in the node, create corresponding particles DO e = 1, mesh%numCells !Scale variables @@ -355,7 +359,11 @@ MODULE moduleInput densityCen = mesh%cells(e)%obj%gatherF((/ 0.D0, 0.D0, 0.D0 /), nNodes, sourceScalar) !Calculate number of particles - nNewPart = INT(densityCen * (mesh%cells(e)%obj%volume*Vol_ref) / species(sp)%obj%weight) + IF (.NOT. found) THEN + nNewPart = FLOOR(densityCen * (mesh%cells(e)%obj%volume*Vol_ref) / species(sp)%obj%weight) + + END IF + weight = densityCen * (mesh%cells(e)%obj%volume*Vol_ref) / REAL(nNewPart) !Allocate new particles DO p = 1, nNewPart @@ -392,7 +400,7 @@ MODULE moduleInput partNew%n_in = .TRUE. - partNew%weight = species(sp)%obj%weight + partNew%weight = weight !Assign particle to temporal list of particles CALL partInitial%add(partNew) From fa23f9481abfe946fb7cd9f6d4866550176733f5 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Sun, 7 Jul 2024 14:40:26 +0200 Subject: [PATCH 15/39] Issue with bibliography Backup files are properly ignored now. --- doc/user-manual/.gitignore | 1 + doc/user-manual/bibliography.bib.sav | 77 ---------------------------- 2 files changed, 1 insertion(+), 77 deletions(-) delete mode 100644 doc/user-manual/bibliography.bib.sav diff --git a/doc/user-manual/.gitignore b/doc/user-manual/.gitignore index b2ba4d5..a8475d7 100644 --- a/doc/user-manual/.gitignore +++ b/doc/user-manual/.gitignore @@ -6,6 +6,7 @@ *.aux *.ps bibliography.bib.bak +bibliography.bib.sav *.bbl *.blg *.out diff --git a/doc/user-manual/bibliography.bib.sav b/doc/user-manual/bibliography.bib.sav deleted file mode 100644 index b8b6483..0000000 --- a/doc/user-manual/bibliography.bib.sav +++ /dev/null @@ -1,77 +0,0 @@ -% Encoding: UTF-8 - -@InProceedings{boris1970relativistic, - author = {Boris, Jay P}, - booktitle = {Proc. Fourth Conf. Num. Sim. Plasmas}, - title = {Relativistic plasma simulation-optimization of a hybrid code}, - year = {1970}, - pages = {3--67}, -} - -@article{higginson2020corrected, - title={A corrected method for Coulomb scattering in arbitrarily weighted particle-in-cell plasma simulations}, - author={Higginson, Drew Pitney and Holod, Ihor and Link, Anthony}, - journal={Journal of Computational Physics}, - volume={413}, - pages={109450}, - year={2020}, - publisher={Elsevier} -} - -@Misc{gfortranURL, - author = {GNU Project}, - title = {gfortran - the GNU Fortran compiler}, - howpublished = {\url{https://gcc.gnu.org/wiki/GFortran}}, -} - -@Misc{ifortURL, - author = {Intel\textsuperscript{\textregistered}}, - title = {Intel\textsuperscript{\textregistered} Fortran Compiler}, - howpublished = {\url{https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/fortran-compiler.html}}, -} - -@Misc{openblasURL, - title = {OpenBLAS, an optimized BLAS library}, - howpublished = {\url{https://www.openblas.net/}}, -} - -@Misc{jsonfortranURL, - title = {JSON-Fortran}, - howpublished = {\url{https://github.com/jacobwilliams/json-fortran}}, -} - -@Misc{jsonURL, - title = {JSON, JavaScript Object Notation}, - howpublished = {\url{https://www.json.org/json-en.html}}, -} - -@Misc{gmshURL, - author = {Christophe Geuzaine and Jean-François Remacle}, - title = {Gmsh}, - howpublished = {\url{https://gmsh.info/}}, -} - -@Article{welford1962note, - author = {Welford, BP}, - journal = {Technometrics}, - title = {Note on a method for calculating corrected sums of squares and products}, - year = {1962}, - number = {3}, - pages = {419--420}, - volume = {4}, - publisher = {Taylor \& Francis}, -} - -@Article{sherlock2008monte, - author = {Sherlock, Mark}, - journal = {Journal of Computational Physics}, - title = {A Monte-Carlo method for Coulomb collisions in hybrid plasma models}, - year = {2008}, - number = {4}, - pages = {2286--2292}, - volume = {227}, - groups = {Particle-in-cell}, - publisher = {Elsevier}, -} - -@Comment{jabref-meta: databaseType:bibtex;} From b36f9c26152339aef154402ebabce74f4075d866 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Tue, 9 Jul 2024 17:49:42 +0200 Subject: [PATCH 16/39] Shifting towards constant number of particles per edge So now each edge has the same number of particles and the weight of each particle is calculated based on the surface of each edge compared to the total one. Only in 2DCyl, still to extend to other geometries. Not perfect constant density, but the issue might be the node volume. --- src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 | 27 ++++++++++--------- .../mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 | 14 ---------- .../mesh/inout/vtu/moduleMeshInputVTU.f90 | 26 +++++++++--------- src/modules/mesh/moduleMesh.f90 | 2 ++ src/modules/moduleInject.f90 | 16 +++++------ 5 files changed, 36 insertions(+), 49 deletions(-) diff --git a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 index 426846d..3f88902 100644 --- a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 +++ b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 @@ -144,6 +144,7 @@ MODULE moduleMesh2DCyl USE moduleSpecies USE moduleBoundary USE moduleErrors + USE moduleConstParam, ONLY: PI IMPLICIT NONE CLASS(meshEdge2DCyl), INTENT(out):: self @@ -163,7 +164,15 @@ MODULE moduleMesh2DCyl r2 = self%n2%getCoordinates() self%z = (/r1(1), r2(1)/) self%r = (/r1(2), r2(2)/) - self%weight = DABS(self%r(2)**2 - self%r(1)**2) + !Edge surface + IF (self%z(2) /= self%z(1)) THEN + self%surface = ABS(self%r(2) + self%r(1))*ABS(self%z(2) - self%z(1)) + + ELSE + self%surface = ABS(self%r(2)**2 - self%r(1)**2) + + END IF + self%surface = self%surface * PI !Normal vector self%normal = (/ -(self%r(2)-self%r(1)), & self%z(2)-self%z(1) , & @@ -586,18 +595,10 @@ MODULE moduleMesh2DCyl !Computes total volume of the cell self%volume = r*detJ*PI8 !4*2*pi !Computes volume per node - Xi = (/-5.D-1, -5.D-1, 0.D0/) - r = self%gatherF(Xi, 4, self%r) - self%n1%v = self%n1%v + fPsi(1)*r*detJ*PI8 - Xi = (/ 5.D-1, -5.D-1, 0.D0/) - r = self%gatherF(Xi, 4, self%r) - self%n2%v = self%n2%v + fPsi(2)*r*detJ*PI8 - Xi = (/ 5.D-1, 5.D-1, 0.D0/) - r = self%gatherF(Xi, 4, self%r) - self%n3%v = self%n3%v + fPsi(3)*r*detJ*PI8 - Xi = (/-5.D-1, 5.D-1, 0.D0/) - r = self%gatherF(Xi, 4, self%r) - self%n4%v = self%n4%v + fPsi(4)*r*detJ*PI8 + self%n1%v = self%n1%v + fPsi(1)*self%volume + self%n2%v = self%n2%v + fPsi(2)*self%volume + self%n3%v = self%n3%v + fPsi(3)*self%volume + self%n4%v = self%n4%v + fPsi(4)*self%volume END SUBROUTINE volumeQuad diff --git a/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 b/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 index 2c02358..0df1289 100644 --- a/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 +++ b/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 @@ -296,20 +296,6 @@ MODULE moduleMeshInputGmsh2 CLOSE(10) - ! Adjust node volume at axis - SELECT CASE(self%geometry) - CASE("Cyl") - DO n = 1, self%numNodes - r = self%nodes(n)%obj%getCoordinates() - IF (r(2) == 0.D0) THEN - self%nodes(n)%obj%v = self%nodes(n)%obj%v * 2.0D0!2.0D0/3.0D0 - - END IF - - END DO - - END SELECT - !Call mesh connectivity CALL self%connectMesh diff --git a/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 b/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 index eb6af79..309ca5c 100644 --- a/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 +++ b/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 @@ -496,19 +496,19 @@ MODULE moduleMeshInputVTU END DO - ! Adjust node volume at axis - SELECT CASE(self%geometry) - CASE("Cyl") - DO n = 1, numNodes - r = self%nodes(n)%obj%getCoordinates() - IF (r(2) == 0.D0) THEN - self%nodes(n)%obj%v = self%nodes(n)%obj%v * 2.0D0!2.0D0/3.0D0 - - END IF - - END DO - - END SELECT + ! ! Adjust node volume at axis + ! SELECT CASE(self%geometry) + ! CASE("Cyl") + ! DO n = 1, numNodes + ! r = self%nodes(n)%obj%getCoordinates() + ! IF (r(2) == 0.D0) THEN + ! self%nodes(n)%obj%v = self%nodes(n)%obj%v * 2.0D0!2.0D0/3.0D0 + ! + ! END IF + ! + ! END DO + ! + ! END SELECT !Call mesh connectivity CALL self%connectMesh diff --git a/src/modules/mesh/moduleMesh.f90 b/src/modules/mesh/moduleMesh.f90 index e96ff2a..af1cd36 100644 --- a/src/modules/mesh/moduleMesh.f90 +++ b/src/modules/mesh/moduleMesh.f90 @@ -78,6 +78,8 @@ MODULE moduleMesh REAL(8):: normal(1:3) !Weight for random injection of particles REAL(8):: weight = 1.D0 + ! Surface of edge + REAL(8):: surface = 0.D0 !Pointer to boundary type TYPE(boundaryCont), POINTER:: boundary !Array of functions for boundary conditions diff --git a/src/modules/moduleInject.f90 b/src/modules/moduleInject.f90 index 69a3dd6..1d4e2e7 100644 --- a/src/modules/moduleInject.f90 +++ b/src/modules/moduleInject.f90 @@ -63,6 +63,7 @@ MODULE moduleInject INTEGER, ALLOCATABLE:: edges(:) !Array with edges REAL(8), ALLOCATABLE:: cumWeight(:) !Array of cummulative probability REAL(8):: sumWeight + REAL(8):: surface ! Total surface of injection TYPE(velDistCont):: v(1:3) !Velocity distribution function in each direction CONTAINS PROCEDURE, PASS:: init => initInject @@ -164,15 +165,12 @@ MODULE moduleInject END DO - !Calculates cumulative probability - ALLOCATE(self%cumWeight(1:self%nEdges)) - et = 1 - self%cumWeight(1) = mesh%edges(self%edges(et))%obj%weight - DO et = 2, self%nEdges - self%cumWeight(et) = mesh%edges(self%edges(et))%obj%weight + self%cumWeight(et-1) + !Calculates total area + self%surface = 0.D0 + DO et = 1, self%nEdges + self%surface = self%surface + mesh%edges(self%edges(et))%obj%surface END DO - self%sumWeight = self%cumWeight(self%nEdges) END SUBROUTINE initInject @@ -313,12 +311,12 @@ MODULE moduleInject !$OMP DO DO n = nMin, nMax - randomX = randomWeighted(self%cumWeight, self%sumWeight) + randomX = random(1, self%nEdges) randomEdge => mesh%edges(self%edges(randomX))%obj !Random position in edge partInj(n)%r = randomEdge%randPos() !Assign weight to particle. - partInj(n)%weight = self%species%weight + partInj(n)%weight = self%species%weight * randomEdge%surface / self%surface !Volume associated to the edge: IF (ASSOCIATED(randomEdge%e1)) THEN partInj(n)%cell = randomEdge%e1%n From 11831a973d86aacc0d8e44b01fd6ecc203300b1a Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Tue, 9 Jul 2024 21:25:30 +0200 Subject: [PATCH 17/39] Still not working Trying to have a very simple volume per node assuming a rectangle and the density at the axis it higher than it should (kinda like when using the more accurate volume calculation). This is still weird. I also suspect that the size of the first cell in the axis will also affect this... --- src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 index 3f88902..bac265c 100644 --- a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 +++ b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 @@ -582,6 +582,8 @@ MODULE moduleMesh2DCyl REAL(8):: detJ REAL(8):: fPsi(1:4) REAL(8):: dPsi(1:3, 1:4), pDer(1:3, 1:3) + REAL(8):: corrUp, corrDown + REAL(8):: dZ, r2, r1 self%volume = 0.D0 @@ -593,12 +595,20 @@ MODULE moduleMesh2DCyl fPsi = self%fPsi(Xi, 4) r = DOT_PRODUCT(fPsi,self%r) !Computes total volume of the cell - self%volume = r*detJ*PI8 !4*2*pi + self%volume = r*detJ*PI8 !2*pi * 4 (weight of 1 point 2D-Gaussian integral) !Computes volume per node - self%n1%v = self%n1%v + fPsi(1)*self%volume - self%n2%v = self%n2%v + fPsi(2)*self%volume - self%n3%v = self%n3%v + fPsi(3)*self%volume - self%n4%v = self%n4%v + fPsi(4)*self%volume + ! self%n1%v = self%n1%v + fPsi(1)*self%volume + ! self%n2%v = self%n2%v + fPsi(2)*self%volume + ! self%n3%v = self%n3%v + fPsi(3)*self%volume + ! self%n4%v = self%n4%v + fPsi(4)*self%volume + dZ = MAXVAL(self%z) - MIN(self%z) + r2 = MAXVAL(self%r) + r1 = MINVAL(self%r) + + self%n1%v = self%n1%v + dZ/2.D0 * PI * ( r2**2 - 3.0D0*r1**2 + 2.0D0*r2*r1)*0.25D0 + self%n2%v = self%n2%v + dZ/2.D0 * PI * ( r2**2 - 3.0D0*r1**2 + 2.0D0*r2*r1)*0.25D0 + self%n3%v = self%n3%v + dZ/2.D0 * PI * (3.0D0*r2**2 - r1**2 - 2.0D0*r2*r1)*0.25D0 + self%n4%v = self%n4%v + dZ/2.D0 * PI * (3.0D0*r2**2 - r1**2 - 2.0D0*r2*r1)*0.25D0 END SUBROUTINE volumeQuad From 667a2ecd93c8e0263252cca4aa3457ce95bfbe3e Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Tue, 9 Jul 2024 21:57:32 +0200 Subject: [PATCH 18/39] So, no idea... Basically things do not work. I've added a correction to the node volume in the axis which gives okays results but still this is not perfect. I need to find a better way to do things. Also, I've noticed that the density changes with the size of the cells, which should not happen! I'vw to check this issue. --- src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 | 24 ++++++++--------- .../mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 | 14 ++++++++++ .../mesh/inout/vtu/moduleMeshInputVTU.f90 | 26 +++++++++---------- 3 files changed, 39 insertions(+), 25 deletions(-) diff --git a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 index bac265c..166ae84 100644 --- a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 +++ b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 @@ -597,18 +597,18 @@ MODULE moduleMesh2DCyl !Computes total volume of the cell self%volume = r*detJ*PI8 !2*pi * 4 (weight of 1 point 2D-Gaussian integral) !Computes volume per node - ! self%n1%v = self%n1%v + fPsi(1)*self%volume - ! self%n2%v = self%n2%v + fPsi(2)*self%volume - ! self%n3%v = self%n3%v + fPsi(3)*self%volume - ! self%n4%v = self%n4%v + fPsi(4)*self%volume - dZ = MAXVAL(self%z) - MIN(self%z) - r2 = MAXVAL(self%r) - r1 = MINVAL(self%r) - - self%n1%v = self%n1%v + dZ/2.D0 * PI * ( r2**2 - 3.0D0*r1**2 + 2.0D0*r2*r1)*0.25D0 - self%n2%v = self%n2%v + dZ/2.D0 * PI * ( r2**2 - 3.0D0*r1**2 + 2.0D0*r2*r1)*0.25D0 - self%n3%v = self%n3%v + dZ/2.D0 * PI * (3.0D0*r2**2 - r1**2 - 2.0D0*r2*r1)*0.25D0 - self%n4%v = self%n4%v + dZ/2.D0 * PI * (3.0D0*r2**2 - r1**2 - 2.0D0*r2*r1)*0.25D0 + Xi = (/-5.D-1, -5.D-1, 0.D0/) + r = self%gatherF(Xi, 4, self%r) + self%n1%v = self%n1%v + fPsi(1)*r*detJ*PI8 + Xi = (/ 5.D-1, -5.D-1, 0.D0/) + r = self%gatherF(Xi, 4, self%r) + self%n2%v = self%n2%v + fPsi(2)*r*detJ*PI8 + Xi = (/ 5.D-1, 5.D-1, 0.D0/) + r = self%gatherF(Xi, 4, self%r) + self%n3%v = self%n3%v + fPsi(3)*r*detJ*PI8 + Xi = (/-5.D-1, 5.D-1, 0.D0/) + r = self%gatherF(Xi, 4, self%r) + self%n4%v = self%n4%v + fPsi(4)*r*detJ*PI8 END SUBROUTINE volumeQuad diff --git a/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 b/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 index 0df1289..11c3b13 100644 --- a/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 +++ b/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 @@ -296,6 +296,20 @@ MODULE moduleMeshInputGmsh2 CLOSE(10) + ! Adjust node volume at axis + SELECT CASE(self%geometry) + CASE("Cyl") + DO n = 1, self%numNodes + r = self%nodes(n)%obj%getCoordinates() + IF (r(2) == 0.D0) THEN + self%nodes(n)%obj%v = self%nodes(n)%obj%v * 3.0D0/2.0D0 + + END IF + + END DO + + END SELECT + !Call mesh connectivity CALL self%connectMesh diff --git a/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 b/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 index 309ca5c..ff0490a 100644 --- a/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 +++ b/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 @@ -496,19 +496,19 @@ MODULE moduleMeshInputVTU END DO - ! ! Adjust node volume at axis - ! SELECT CASE(self%geometry) - ! CASE("Cyl") - ! DO n = 1, numNodes - ! r = self%nodes(n)%obj%getCoordinates() - ! IF (r(2) == 0.D0) THEN - ! self%nodes(n)%obj%v = self%nodes(n)%obj%v * 2.0D0!2.0D0/3.0D0 - ! - ! END IF - ! - ! END DO - ! - ! END SELECT + ! Adjust node volume at axis + SELECT CASE(self%geometry) + CASE("Cyl") + DO n = 1, numNodes + r = self%nodes(n)%obj%getCoordinates() + IF (r(2) == 0.D0) THEN + self%nodes(n)%obj%v = self%nodes(n)%obj%v * 3.0D0/2.0D0 + + END IF + + END DO + + END SELECT !Call mesh connectivity CALL self%connectMesh From d608639e77a17511111ac326949f5de28044c864 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Tue, 9 Jul 2024 22:05:16 +0200 Subject: [PATCH 19/39] Forgot to save Sorry. --- src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 b/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 index ff0490a..61802fb 100644 --- a/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 +++ b/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 @@ -499,7 +499,7 @@ MODULE moduleMeshInputVTU ! Adjust node volume at axis SELECT CASE(self%geometry) CASE("Cyl") - DO n = 1, numNodes + DO n = 1, self%numNodes r = self%nodes(n)%obj%getCoordinates() IF (r(2) == 0.D0) THEN self%nodes(n)%obj%v = self%nodes(n)%obj%v * 3.0D0/2.0D0 From cb92462f3683408f218bac22d7f6b50cb72bf63d Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Wed, 10 Jul 2024 21:55:45 +0200 Subject: [PATCH 20/39] New injection based on surface to all geometries. WARNING: 3DCart still not working (too tired to calculate things and I'm not ussing it...) --- src/modules/mesh/1DCart/moduleMesh1DCart.f90 | 3 +++ src/modules/mesh/1DRad/moduleMesh1DRad.f90 | 3 +++ src/modules/mesh/2DCart/moduleMesh2DCart.f90 | 3 ++- src/modules/mesh/3DCart/moduleMesh3DCart.f90 | 3 +++ 4 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/modules/mesh/1DCart/moduleMesh1DCart.f90 b/src/modules/mesh/1DCart/moduleMesh1DCart.f90 index 269f157..f400ab0 100644 --- a/src/modules/mesh/1DCart/moduleMesh1DCart.f90 +++ b/src/modules/mesh/1DCart/moduleMesh1DCart.f90 @@ -104,6 +104,7 @@ MODULE moduleMesh1DCart USE moduleSpecies USE moduleBoundary USE moduleErrors + USE moduleRefParam, ONLY: L_ref IMPLICIT NONE CLASS(meshEdge1DCart), INTENT(out):: self @@ -122,6 +123,8 @@ MODULE moduleMesh1DCart self%x = r1(1) + self%surface = 1.D0 / L_ref**2 + self%normal = (/ 1.D0, 0.D0, 0.D0 /) !Boundary index diff --git a/src/modules/mesh/1DRad/moduleMesh1DRad.f90 b/src/modules/mesh/1DRad/moduleMesh1DRad.f90 index d998267..fd617bd 100644 --- a/src/modules/mesh/1DRad/moduleMesh1DRad.f90 +++ b/src/modules/mesh/1DRad/moduleMesh1DRad.f90 @@ -104,6 +104,7 @@ MODULE moduleMesh1DRad USE moduleSpecies USE moduleBoundary USE moduleErrors + USE moduleRefParam, ONLY: L_ref IMPLICIT NONE CLASS(meshEdge1DRad), INTENT(out):: self @@ -122,6 +123,8 @@ MODULE moduleMesh1DRad self%r = r1(1) + self%surface = 1.D0 / L_ref**2 + self%normal = (/ 1.D0, 0.D0, 0.D0 /) !Boundary index diff --git a/src/modules/mesh/2DCart/moduleMesh2DCart.f90 b/src/modules/mesh/2DCart/moduleMesh2DCart.f90 index 4bf1f32..dbc8b25 100644 --- a/src/modules/mesh/2DCart/moduleMesh2DCart.f90 +++ b/src/modules/mesh/2DCart/moduleMesh2DCart.f90 @@ -144,6 +144,7 @@ MODULE moduleMesh2DCart USE moduleSpecies USE moduleBoundary USE moduleErrors + USE moduleRefParam, ONLY: L_ref IMPLICIT NONE CLASS(meshEdge2DCart), INTENT(out):: self @@ -163,7 +164,7 @@ MODULE moduleMesh2DCart r2 = self%n2%getCoordinates() self%x = (/r1(1), r2(1)/) self%y = (/r1(2), r2(2)/) - self%weight = 1.D0 + self%surface = SQRT((self%x(2) - self%x(1))**2 + (self%y(2) - self%y(1))**2) / L_ref !Normal vector self%normal = (/ -(self%y(2)-self%y(1)), & self%x(2)-self%x(1) , & diff --git a/src/modules/mesh/3DCart/moduleMesh3DCart.f90 b/src/modules/mesh/3DCart/moduleMesh3DCart.f90 index c451689..8170df7 100644 --- a/src/modules/mesh/3DCart/moduleMesh3DCart.f90 +++ b/src/modules/mesh/3DCart/moduleMesh3DCart.f90 @@ -109,6 +109,7 @@ MODULE moduleMesh3DCart USE moduleBoundary USE moduleErrors USE moduleMath + USE moduleRefParam, ONLY: L_ref IMPLICIT NONE CLASS(meshEdge3DCartTria), INTENT(out):: self @@ -142,6 +143,8 @@ MODULE moduleMesh3DCart self%normal = crossProduct(vec1, vec2) self%normal = normalize(self%normal) + self%surface = 1.D0/L_ref**2 !TODO: FIX THIS WHEN MOVING TO 3D + !Boundary index self%boundary => boundary(bt) ALLOCATE(self%fBoundary(1:nSpecies)) From 9d961bb85fafba67008a1241eb467b7d800703ad Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Wed, 10 Jul 2024 21:57:22 +0200 Subject: [PATCH 21/39] Removing weight from edges This parameter is no longer needed. Also removing the cumulative sum of weights from the injection. --- src/modules/mesh/moduleMesh.f90 | 2 -- src/modules/moduleInject.f90 | 2 -- 2 files changed, 4 deletions(-) diff --git a/src/modules/mesh/moduleMesh.f90 b/src/modules/mesh/moduleMesh.f90 index af1cd36..a2eaa5f 100644 --- a/src/modules/mesh/moduleMesh.f90 +++ b/src/modules/mesh/moduleMesh.f90 @@ -76,8 +76,6 @@ MODULE moduleMesh CLASS(meshCell), POINTER:: eColl => NULL() !Normal vector REAL(8):: normal(1:3) - !Weight for random injection of particles - REAL(8):: weight = 1.D0 ! Surface of edge REAL(8):: surface = 0.D0 !Pointer to boundary type diff --git a/src/modules/moduleInject.f90 b/src/modules/moduleInject.f90 index 1d4e2e7..529b687 100644 --- a/src/modules/moduleInject.f90 +++ b/src/modules/moduleInject.f90 @@ -61,8 +61,6 @@ MODULE moduleInject CLASS(speciesGeneric), POINTER:: species !Species of injection INTEGER:: nEdges INTEGER, ALLOCATABLE:: edges(:) !Array with edges - REAL(8), ALLOCATABLE:: cumWeight(:) !Array of cummulative probability - REAL(8):: sumWeight REAL(8):: surface ! Total surface of injection TYPE(velDistCont):: v(1:3) !Velocity distribution function in each direction CONTAINS From e23fc2fc2cf7d992cbc7af276bde82977462f400 Mon Sep 17 00:00:00 2001 From: Jorge Gonzalez Date: Thu, 11 Jul 2024 11:21:38 +0200 Subject: [PATCH 22/39] Small progress I made some small changes to how things are calculated. I have also discovered that the issue with different density when changing injection is not related with the node volume but with the way injection is carried out. When loading particles from a file, all provide the same density regardless the cell (node) volume. I am doing testing in 2DCart as it is easier to set up. --- src/modules/mesh/inout/vtu/moduleMeshOutputVTU.f90 | 2 +- src/modules/mesh/moduleMesh.f90 | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/modules/mesh/inout/vtu/moduleMeshOutputVTU.f90 b/src/modules/mesh/inout/vtu/moduleMeshOutputVTU.f90 index 6286cfc..8637b7e 100644 --- a/src/modules/mesh/inout/vtu/moduleMeshOutputVTU.f90 +++ b/src/modules/mesh/inout/vtu/moduleMeshOutputVTU.f90 @@ -209,7 +209,7 @@ MODULE moduleMeshOutputVTU WRITE(fileID,"(8X,A)") '' !Electric field WRITE(fileID,"(10X,A, A, A)") '' - WRITE(fileID, "(6(ES20.6E3))") (self%cells(n)%obj%gatherElectricField(Xi)*EF_ref, n = 1, self%numCells) + WRITE(fileID,"(6(ES20.6E3))") (self%cells(n)%obj%gatherElectricField(Xi)*EF_ref, n = 1, self%numCells) WRITE(fileID,"(10X,A)") '' WRITE(fileID,"(8X,A)") '' diff --git a/src/modules/mesh/moduleMesh.f90 b/src/modules/mesh/moduleMesh.f90 index a2eaa5f..7390bca 100644 --- a/src/modules/mesh/moduleMesh.f90 +++ b/src/modules/mesh/moduleMesh.f90 @@ -613,6 +613,7 @@ MODULE moduleMesh INTEGER:: sp INTEGER:: i CLASS(meshNode), POINTER:: node + REAL(8):: pFraction !Particle fraction cellNodes = self%getNodes(nNodes) fPsi = self%fPsi(part%Xi, nNodes) @@ -623,10 +624,11 @@ MODULE moduleMesh DO i = 1, nNodes node => mesh%nodes(cellNodes(i))%obj + pFraction = fPsi(i)*part%weight CALL OMP_SET_LOCK(node%lock) - node%output(sp)%den = node%output(sp)%den + part%weight*fPsi(i) - node%output(sp)%mom(:) = node%output(sp)%mom(:) + part%weight*fPsi(i)*part%v(:) - node%output(sp)%tensorS(:,:) = node%output(sp)%tensorS(:,:) + part%weight*fPsi(i)*tensorS + node%output(sp)%den = node%output(sp)%den + pFraction + node%output(sp)%mom(:) = node%output(sp)%mom(:) + pFraction*part%v(:) + node%output(sp)%tensorS(:,:) = node%output(sp)%tensorS(:,:) + pFraction*tensorS CALL OMP_UNSET_LOCK(node%lock) END DO From 96c563c1462c048e4ddf96ba73b142ab00dd70ff Mon Sep 17 00:00:00 2001 From: Jorge Gonzalez Date: Thu, 11 Jul 2024 14:39:56 +0200 Subject: [PATCH 23/39] Finally, some progress I rewrote how particles are injected. Now the particles per edge and its weight are calculated in the initialization. There is the possibility for the user to select the particles per edge. TODO: Write documentation for new feature. TODO: Test in 2DCyl --- src/modules/init/moduleInput.f90 | 5 +- src/modules/moduleInject.f90 | 183 +++++++++++++++++++------------ 2 files changed, 114 insertions(+), 74 deletions(-) diff --git a/src/modules/init/moduleInput.f90 b/src/modules/init/moduleInput.f90 index e30bf97..bd59e32 100644 --- a/src/modules/init/moduleInput.f90 +++ b/src/modules/init/moduleInput.f90 @@ -1236,6 +1236,7 @@ MODULE moduleInput REAL(8):: flow CHARACTER(:), ALLOCATABLE:: units INTEGER:: physicalSurface + INTEGER:: particlesPerEdge INTEGER:: sp CALL config%info('inject', found, n_children = nInject) @@ -1260,8 +1261,10 @@ MODULE moduleInput CALL config%get(object // '.flow', flow, found) CALL config%get(object // '.units', units, found) CALL config%get(object // '.physicalSurface', physicalSurface, found) + particlesPerEdge = 0 + CALL config%get(object // '.particlesPerEdge', particlesPerEdge, found) - CALL inject(i)%init(i, v, normal, T, flow, units, sp, physicalSurface) + CALL inject(i)%init(i, v, normal, T, flow, units, sp, physicalSurface, particlesPerEdge) CALL readVelDistr(config, inject(i), object) diff --git a/src/modules/moduleInject.f90 b/src/modules/moduleInject.f90 index 529b687..59748eb 100644 --- a/src/modules/moduleInject.f90 +++ b/src/modules/moduleInject.f90 @@ -61,6 +61,8 @@ MODULE moduleInject CLASS(speciesGeneric), POINTER:: species !Species of injection INTEGER:: nEdges INTEGER, ALLOCATABLE:: edges(:) !Array with edges + INTEGER, ALLOCATABLE:: particlesPerEdge(:) ! Particles per edge + REAL(8), ALLOCATABLE:: weightPerEdge(:) ! Weight per edge REAL(8):: surface ! Total surface of injection TYPE(velDistCont):: v(1:3) !Velocity distribution function in each direction CONTAINS @@ -74,7 +76,7 @@ MODULE moduleInject CONTAINS !Initialize an injection of particles - SUBROUTINE initInject(self, i, v, n, T, flow, units, sp, physicalSurface) + SUBROUTINE initInject(self, i, v, n, T, flow, units, sp, physicalSurface, particlesPerEdge) USE moduleMesh USE moduleRefParam USE moduleConstParam @@ -86,52 +88,28 @@ MODULE moduleInject CLASS(injectGeneric), INTENT(inout):: self INTEGER, INTENT(in):: i REAL(8), INTENT(in):: v, n(1:3), T(1:3) - INTEGER, INTENT(in):: sp, physicalSurface + INTEGER, INTENT(in):: sp, physicalSurface, particlesPerEdge REAL(8):: tauInject REAL(8), INTENT(in):: flow CHARACTER(:), ALLOCATABLE, INTENT(in):: units INTEGER:: e, et INTEGER:: phSurface(1:mesh%numEdges) INTEGER:: nVolColl + REAL(8):: fluxPerStep = 0.D0 - self%id = i - self%vMod = v / v_ref - self%n = n / NORM2(n) - self%T = T / T_ref - self%species => species(sp)%obj - tauInject = tau(self%species%n) - SELECT CASE(units) - CASE ("sccm") - !Standard cubic centimeter per minute - self%nParticles = INT(flow*sccm2atomPerS*tauInject*ti_ref/species(sp)%obj%weight) - - CASE ("A") - !Input current in Ampers - self%nParticles = INT(flow*tauInject*ti_ref/(qe*species(sp)%obj%weight)) - - CASE ("Am2") - !Input current in Ampers per square meter - self%nParticles = INT(flow*tauInject*ti_ref*L_ref**2/(qe*species(sp)%obj%weight)) - - CASE ("part/s") - !Input current in Ampers - self%nParticles = INT(flow*tauInject*ti_ref/species(sp)%obj%weight) - - CASE DEFAULT - CALL criticalError("No support for units: " // units, 'initInject') - - END SELECT - !Scale particles for different species steps - IF (self%nParticles == 0) CALL criticalError("The number of particles for inject is 0.", 'initInject') - + self%id = i + self%vMod = v / v_ref + self%n = n / NORM2(n) + self%T = T / T_ref !Gets the edge elements from which particles are injected DO e = 1, mesh%numEdges phSurface(e) = mesh%edges(e)%obj%physicalSurface END DO - self%nEdges = COUNT(phSurface == physicalSurface) - ALLOCATE(inject(i)%edges(1:self%nEdges)) + ALLOCATE(self%edges(1:self%nEdges)) + ALLOCATE(self%particlesPerEdge(1:self%nEdges)) + ALLOCATE(self%weightPerEdge(1:self%nEdges)) et = 0 DO e=1, mesh%numEdges IF (mesh%edges(e)%obj%physicalSurface == physicalSurface) THEN @@ -170,6 +148,60 @@ MODULE moduleInject END DO + ! Information about species and flux + self%species => species(sp)%obj + tauInject = tau(self%species%n) + SELECT CASE(units) + CASE ("sccm") + !Standard cubic centimeter per minute + fluxPerStep = flow*sccm2atomPerS*tauInject*ti_ref + + CASE ("A") + !Current in Ampers + fluxPerStep = flow*tauInject*ti_ref/qe + + CASE ("Am2") + !Input current in Ampers per square meter + fluxPerStep = flow*tauInject*ti_ref*self%surface*L_ref**2/qe + + CASE ("part/s") + !Input current in Ampers + fluxPerStep = flow*tauInject*ti_ref + + CASE DEFAULT + CALL criticalError("No support for units: " // units, 'initInject') + + END SELECT + fluxPerStep = fluxPerStep / self%surface + + !Assign particles per edge + IF (particlesPerEdge > 0) THEN + ! Particles per edge defined by the user + self%particlesPerEdge = particlesPerEdge + DO et = 1, self%nEdges + self%weightPerEdge(et) = fluxPerStep*mesh%edges(self%edges(et))%obj%surface / REAL(particlesPerEdge) + + END DO + + ELSE + ! No particles assigned per edge, use the species weight + self%weightPerEdge = self%species%weight + DO et = 1, self%nEdges + self%particlesPerEdge(et) = FLOOR(fluxPerStep*mesh%edges(self%edges(et))%obj%surface /self%species%weight) + + END DO + + END IF + + print *, self%particlesPerEdge + print *, self%weightPerEdge + + self%nParticles = SUM(self%particlesPerEdge) + print *, self%nParticles + + !Scale particles for different species steps + IF (self%nParticles == 0) CALL criticalError("The number of particles for inject is 0.", 'initInject') + END SUBROUTINE initInject !Injection of particles @@ -285,9 +317,10 @@ MODULE moduleInject CLASS(injectGeneric), INTENT(in):: self INTEGER:: randomX INTEGER, SAVE:: nMin, nMax !Min and Max index in partInj array - INTEGER:: i + INTEGER:: i, e INTEGER:: n, sp CLASS(meshEdge), POINTER:: randomEdge + INTEGER:: particlesPerEdge REAL(8):: direction(1:3) !Insert particles @@ -300,58 +333,62 @@ MODULE moduleInject END IF END DO - nMin = nMin + 1 - nMax = nMin + self%nParticles - 1 - !Particle is considered to be outside the domain - partInj(nMin:nMax)%n_in = .FALSE. !$OMP END SINGLE !$OMP DO - DO n = nMin, nMax - randomX = random(1, self%nEdges) - randomEdge => mesh%edges(self%edges(randomX))%obj - !Random position in edge - partInj(n)%r = randomEdge%randPos() - !Assign weight to particle. - partInj(n)%weight = self%species%weight * randomEdge%surface / self%surface - !Volume associated to the edge: - IF (ASSOCIATED(randomEdge%e1)) THEN - partInj(n)%cell = randomEdge%e1%n + DO e = 1, self%nEdges + ! Select edge for injection + randomEdge => mesh%edges(self%edges(e))%obj + ! Inject particles in edge + DO i = 1, self%particlesPerEdge(e) + ! Index in the global partInj array + n = nMin - 1 + SUM(self%particlesPerEdge(1:e-1)) + i + !Particle is considered to be outside the domain + partInj(n)%n_in = .FALSE. + !Random position in edge + partInj(n)%r = randomEdge%randPos() + !Assign weight to particle. + partInj(n)%weight = self%weightPerEdge(e) + !Volume associated to the edge: + IF (ASSOCIATED(randomEdge%e1)) THEN + partInj(n)%cell = randomEdge%e1%n - ELSEIF (ASSOCIATED(randomEdge%e2)) THEN - partInj(n)%cell = randomEdge%e2%n + ELSEIF (ASSOCIATED(randomEdge%e2)) THEN + partInj(n)%cell = randomEdge%e2%n - ELSE - CALL criticalError("No Volume associated to edge", 'addParticles') + ELSE + CALL criticalError("No Volume associated to edge", 'addParticles') - END IF - partInj(n)%cellColl = randomEdge%eColl%n - sp = self%species%n + END IF + partInj(n)%cellColl = randomEdge%eColl%n + sp = self%species%n - !Assign particle type - partInj(n)%species => self%species + !Assign particle type + partInj(n)%species => self%species - direction = self%n + direction = self%n - partInj(n)%v = 0.D0 + partInj(n)%v = 0.D0 - partInj(n)%v = self%vMod*direction + (/ self%v(1)%obj%randomVel(), & - self%v(2)%obj%randomVel(), & - self%v(3)%obj%randomVel() /) + partInj(n)%v = self%vMod*direction + (/ self%v(1)%obj%randomVel(), & + self%v(2)%obj%randomVel(), & + self%v(3)%obj%randomVel() /) - !If velocity is not in the right direction, invert it - IF (DOT_PRODUCT(direction, partInj(n)%v) < 0.D0) THEN - partInj(n)%v = - partInj(n)%v + !If velocity is not in the right direction, invert it + IF (DOT_PRODUCT(direction, partInj(n)%v) < 0.D0) THEN + partInj(n)%v = - partInj(n)%v - END IF + END IF - !Obtain natural coordinates of particle in cell - partInj(n)%Xi = mesh%cells(partInj(n)%cell)%obj%phy2log(partInj(n)%r) - !Push new particle with the minimum time step - CALL solver%pusher(sp)%pushParticle(partInj(n), tau(sp)) - !Assign cell to new particle - CALL solver%updateParticleCell(partInj(n)) + !Obtain natural coordinates of particle in cell + partInj(n)%Xi = mesh%cells(partInj(n)%cell)%obj%phy2log(partInj(n)%r) + !Push new particle with the minimum time step + CALL solver%pusher(sp)%pushParticle(partInj(n), tau(sp)) + !Assign cell to new particle + CALL solver%updateParticleCell(partInj(n)) + + END DO END DO !$OMP END DO From 6d62807fb43466048a1f63996ecfd3e77bb51478 Mon Sep 17 00:00:00 2001 From: Jorge Gonzalez Date: Thu, 11 Jul 2024 14:50:14 +0200 Subject: [PATCH 24/39] Remove testing 'print' statements 2DCyl still seems to have some problems but waiting for simulation. --- src/modules/moduleInject.f90 | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/modules/moduleInject.f90 b/src/modules/moduleInject.f90 index 59748eb..93302d9 100644 --- a/src/modules/moduleInject.f90 +++ b/src/modules/moduleInject.f90 @@ -193,11 +193,7 @@ MODULE moduleInject END IF - print *, self%particlesPerEdge - print *, self%weightPerEdge - self%nParticles = SUM(self%particlesPerEdge) - print *, self%nParticles !Scale particles for different species steps IF (self%nParticles == 0) CALL criticalError("The number of particles for inject is 0.", 'initInject') From 03f3b81811359af69f312b1ea47b1ec56beff861 Mon Sep 17 00:00:00 2001 From: Jorge Gonzalez Date: Thu, 11 Jul 2024 15:31:01 +0200 Subject: [PATCH 25/39] Manual updated The manual has been modified to account for the new particlePerEdge option and to indicate that now when the flux is giving by a flux like in the Am2 units, the real surface of the inject is used to scale it. --- doc/user-manual/fpakc_UserManual.pdf | Bin 186028 -> 186195 bytes doc/user-manual/fpakc_UserManual.tex | 7 ++++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/doc/user-manual/fpakc_UserManual.pdf b/doc/user-manual/fpakc_UserManual.pdf index 37d80141e4c7e64c2cb808e7e072b95019a502ae..ef1494ac62b3a07c882225d34ac2998d565ae727 100644 GIT binary patch delta 27417 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 z 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ˤ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 diff --git a/doc/user-manual/fpakc_UserManual.tex b/doc/user-manual/fpakc_UserManual.tex index fd48ed2..13be4cd 100644 --- a/doc/user-manual/fpakc_UserManual.tex +++ b/doc/user-manual/fpakc_UserManual.tex @@ -611,7 +611,7 @@ make \begin{itemize} \item \textbf{A}: Ampere. \item \textbf{Am2}: Ampere per square meter. - This value will be multiplied by the square of the reference length to convert to A, it will not consider the surface area of injection. + This value will be multiplied by the surface of injection. \item \textbf{sccm}: Standard cubic centimetre. \item \textbf{part/s}: Particles (real) per second. \end{itemize} @@ -638,6 +638,11 @@ make Temperature in each direction. \item \textbf{physicalSurface}: Integer. Identification of the edge in the mesh file. + \item \textbf{particlesPerEdge}: Integer. + Optional. + Number of particles to be injected by each edge in the numerical domain. + The weight of the particles for each edge will modified by the surface of the edge to ensure the right flux is injected. + If no value is provided, the number of particles to inject per edge will be calculated with the species weight and the surface of the edge respect to the total one. \end{itemize} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{reference} From d710cc5e6631353bbbb34df41b48bdb3e4dc0cb0 Mon Sep 17 00:00:00 2001 From: Jorge Gonzalez Date: Thu, 11 Jul 2024 15:52:13 +0200 Subject: [PATCH 26/39] Probes fixed! This should've been commited in another branch, but I am taking advantage of this to clean up the code a bit. --- src/modules/moduleProbe.f90 | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/modules/moduleProbe.f90 b/src/modules/moduleProbe.f90 index c7d3cf5..c29eeda 100644 --- a/src/modules/moduleProbe.f90 +++ b/src/modules/moduleProbe.f90 @@ -101,7 +101,7 @@ MODULE moduleProbe !Maximum radius !TODO: Make this an input parameter - self%maxR = 1.D0 + self%maxR = 1.D-2/L_ref !Init the probe lock CALL OMP_INIT_LOCK(self%lock) @@ -148,7 +148,7 @@ MODULE moduleProbe deltaR = NORM2(self%r - part%r) !Only include particle if it is inside the maximum radius - IF (deltaR < self%maxR) THEN + ! IF (deltaR < self%maxR) THEN !find lower index for all dimensions CALL self%findLowerIndex(part%v, i, j, k, inside) @@ -162,28 +162,28 @@ MODULE moduleProbe fk = self%vk(k+1) - part%v(3) fk1 = part%v(3) - self%vk(k) - ! weight = part%weight * DEXP(deltaR/self%maxR) - weight = part%weight + weight = part%weight * DEXP(-deltaR/self%maxR) + ! weight = part%weight !Lock the probe CALL OMP_SET_LOCK(self%lock) !Assign particle weight to distribution function - self%f(i , j , k ) = fi * fj * fk * weight - self%f(i+1, j , k ) = fi1 * fj * fk * weight - self%f(i , j+1, k ) = fi * fj1 * fk * weight - self%f(i+1, j+1, k ) = fi1 * fj1 * fk * weight - self%f(i , j , k+1) = fi * fj * fk1 * weight - self%f(i+1, j , k+1) = fi1 * fj * fk1 * weight - self%f(i , j+1, k+1) = fi * fj1 * fk1 * weight - self%f(i+1, j+1, k+1) = fi1 * fj1 * fk1 * weight + self%f(i , j , k ) = self%f(i , j , k ) + fi * fj * fk * weight + self%f(i+1, j , k ) = self%f(i+1, j , k ) + fi1 * fj * fk * weight + self%f(i , j+1, k ) = self%f(i , j+1, k ) + fi * fj1 * fk * weight + self%f(i+1, j+1, k ) = self%f(i+1, j+1, k ) + fi1 * fj1 * fk * weight + self%f(i , j , k+1) = self%f(i , j , k+1) + fi * fj * fk1 * weight + self%f(i+1, j , k+1) = self%f(i+1, j , k+1) + fi1 * fj * fk1 * weight + self%f(i , j+1, k+1) = self%f(i , j+1, k+1) + fi * fj1 * fk1 * weight + self%f(i+1, j+1, k+1) = self%f(i+1, j+1, k+1) + fi1 * fj1 * fk1 * weight !Unlock the probe CALL OMP_UNSET_LOCK(self%lock) END IF - END IF + ! END IF END IF From bc8f20528749446ed9b1b7c083e69cf062aa8b26 Mon Sep 17 00:00:00 2001 From: Jorge Gonzalez Date: Thu, 11 Jul 2024 15:55:02 +0200 Subject: [PATCH 27/39] Clean-up! Trying to reduce warnings and unused variables in the code. This should not be in this branch. --- src/modules/init/moduleInput.f90 | 3 +-- src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 | 2 -- .../mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 | 5 +++-- .../mesh/inout/vtu/moduleMeshInputVTU.f90 | 1 + .../mesh/inout/vtu/moduleMeshOutputVTU.f90 | 9 +++------ src/modules/mesh/moduleMesh.f90 | 6 ++++++ src/modules/moduleInject.f90 | 16 +++++++--------- src/modules/solver/electromagnetic/moduleEM.f90 | 3 ++- 8 files changed, 23 insertions(+), 22 deletions(-) diff --git a/src/modules/init/moduleInput.f90 b/src/modules/init/moduleInput.f90 index bd59e32..6f1d5bb 100644 --- a/src/modules/init/moduleInput.f90 +++ b/src/modules/init/moduleInput.f90 @@ -308,7 +308,7 @@ MODULE moduleInput LOGICAL:: found CHARACTER(:), ALLOCATABLE:: object INTEGER:: nInitial - INTEGER:: i, j, p, e + INTEGER:: i, p, e CHARACTER(LEN=2):: iString CHARACTER(:), ALLOCATABLE:: spName INTEGER:: sp @@ -923,7 +923,6 @@ MODULE moduleInput LOGICAL:: found CHARACTER(:), ALLOCATABLE:: meshFormat, meshFile REAL(8):: volume - CHARACTER(:), ALLOCATABLE:: meshFileVTU !Temporary to test VTU OUTPUT object = 'geometry' diff --git a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 index 166ae84..2d300b9 100644 --- a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 +++ b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 @@ -582,8 +582,6 @@ MODULE moduleMesh2DCyl REAL(8):: detJ REAL(8):: fPsi(1:4) REAL(8):: dPsi(1:3, 1:4), pDer(1:3, 1:3) - REAL(8):: corrUp, corrDown - REAL(8):: dZ, r2, r1 self%volume = 0.D0 diff --git a/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 b/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 index 11c3b13..1c8de50 100644 --- a/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 +++ b/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 @@ -108,6 +108,7 @@ MODULE moduleMeshInputGmsh2 READ(10, *) totalNumElem !Count edges and volume elements + numEdges = 0 SELECT TYPE(self) TYPE IS(meshParticles) self%numEdges = 0 @@ -342,7 +343,7 @@ MODULE moduleMeshInputGmsh2 DO i = 1, numNodes !Reads the density - READ(10, *), e, density(i) + READ(10, *) e, density(i) END DO @@ -353,7 +354,7 @@ MODULE moduleMeshInputGmsh2 DO i = 1, numNodes !Reads the velocity - READ(10, *), e, velocity(i, 1:3) + READ(10, *) e, velocity(i, 1:3) END DO diff --git a/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 b/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 index 61802fb..d408387 100644 --- a/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 +++ b/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 @@ -275,6 +275,7 @@ MODULE moduleMeshInputVTU END DO !Count the number of edges + numEdges = 0 SELECT CASE(self%dimen) CASE(3) !Edges are triangles, type 5 in VTK diff --git a/src/modules/mesh/inout/vtu/moduleMeshOutputVTU.f90 b/src/modules/mesh/inout/vtu/moduleMeshOutputVTU.f90 index 8637b7e..da90b6b 100644 --- a/src/modules/mesh/inout/vtu/moduleMeshOutputVTU.f90 +++ b/src/modules/mesh/inout/vtu/moduleMeshOutputVTU.f90 @@ -315,9 +315,8 @@ MODULE moduleMeshOutputVTU CLASS(meshParticles), INTENT(in):: self INTEGER, INTENT(in):: t - INTEGER:: n, i, fileID + INTEGER:: i, fileID CHARACTER(:), ALLOCATABLE:: fileName, fileNameCollection - TYPE(outputFormat):: output(1:self%numNodes) fileID = 60 @@ -352,10 +351,9 @@ MODULE moduleMeshOutputVTU CLASS(meshGeneric), INTENT(in):: self INTEGER, INTENT(in):: t - INTEGER:: n, i, fileID + INTEGER:: fileID CHARACTER(:), ALLOCATABLE:: fileName, fileNameCollection CHARACTER (LEN=iterationDigits):: tstring - TYPE(outputFormat):: output(1:self%numNodes) fileID = 62 @@ -424,9 +422,8 @@ MODULE moduleMeshOutputVTU IMPLICIT NONE CLASS(meshParticles), INTENT(in):: self - INTEGER:: n, i, fileIDMean, fileIDDeviation + INTEGER:: i, fileIDMean, fileIDDeviation CHARACTER(:), ALLOCATABLE:: fileNameMean, fileNameDeviation - TYPE(outputFormat):: output(1:self%numNodes) fileIDMean = 66 fileIDDeviation = 67 diff --git a/src/modules/mesh/moduleMesh.f90 b/src/modules/mesh/moduleMesh.f90 index 7390bca..ae53aa0 100644 --- a/src/modules/mesh/moduleMesh.f90 +++ b/src/modules/mesh/moduleMesh.f90 @@ -1025,6 +1025,9 @@ MODULE moduleMesh ALLOCATE(deltaV_ij(1:cell%listPart_in(i)%amount, 1:3)) ALLOCATE(p_ij(1:cell%listPart_in(i)%amount, 1:3)) ALLOCATE(mass_ij(1:cell%listPart_in(i)%amount)) + deltaV_ij = 0.D0 + p_ij = 0.D0 + mass_ij = 0.D0 !Loop over particles of species_i partTemp => cell%listPart_in(i)%head p = 1 @@ -1109,6 +1112,9 @@ MODULE moduleMesh ALLOCATE(deltaV_ji(1:cell%listPart_in(j)%amount, 1:3)) ALLOCATE(p_ji(1:cell%listPart_in(j)%amount, 1:3)) ALLOCATE(mass_ji(1:cell%listPart_in(j)%amount)) + deltaV_ji = 0.D0 + p_ji = 0.D0 + mass_ji = 0.D0 !Loop over particles of species_j partTemp => cell%listPart_in(j)%head p = 1 diff --git a/src/modules/moduleInject.f90 b/src/modules/moduleInject.f90 index 93302d9..18c7fbb 100644 --- a/src/modules/moduleInject.f90 +++ b/src/modules/moduleInject.f90 @@ -151,28 +151,29 @@ MODULE moduleInject ! Information about species and flux self%species => species(sp)%obj tauInject = tau(self%species%n) + ! Convert units SELECT CASE(units) CASE ("sccm") !Standard cubic centimeter per minute - fluxPerStep = flow*sccm2atomPerS*tauInject*ti_ref + fluxPerStep = flow*sccm2atomPerS CASE ("A") !Current in Ampers - fluxPerStep = flow*tauInject*ti_ref/qe + fluxPerStep = flow/qe CASE ("Am2") !Input current in Ampers per square meter - fluxPerStep = flow*tauInject*ti_ref*self%surface*L_ref**2/qe + fluxPerStep = flow*self%surface*L_ref**2/qe CASE ("part/s") !Input current in Ampers - fluxPerStep = flow*tauInject*ti_ref + fluxPerStep = flow CASE DEFAULT CALL criticalError("No support for units: " // units, 'initInject') END SELECT - fluxPerStep = fluxPerStep / self%surface + fluxPerStep = fluxPerStep * tauInject * ti_ref / self%surface !Assign particles per edge IF (particlesPerEdge > 0) THEN @@ -307,16 +308,13 @@ MODULE moduleInject USE moduleMesh USE moduleRandom USE moduleErrors - USE moduleRefParam, ONLY: L_ref IMPLICIT NONE CLASS(injectGeneric), INTENT(in):: self - INTEGER:: randomX - INTEGER, SAVE:: nMin, nMax !Min and Max index in partInj array + INTEGER, SAVE:: nMin INTEGER:: i, e INTEGER:: n, sp CLASS(meshEdge), POINTER:: randomEdge - INTEGER:: particlesPerEdge REAL(8):: direction(1:3) !Insert particles diff --git a/src/modules/solver/electromagnetic/moduleEM.f90 b/src/modules/solver/electromagnetic/moduleEM.f90 index bdf6b03..d5d0793 100644 --- a/src/modules/solver/electromagnetic/moduleEM.f90 +++ b/src/modules/solver/electromagnetic/moduleEM.f90 @@ -30,8 +30,9 @@ MODULE moduleEM INTEGER, ALLOCATABLE:: nodes(:) INTEGER:: n + nNodes = 1 nNodes = edge%nNodes - nodes = edge%getNodes(nNodes) + nodes = edge%getNodes(nNodes) DO n = 1, nNodes SELECT CASE(self%typeEM) From 72dd3c9073f5123da5267c6f3f6e38749e683e0d Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Thu, 11 Jul 2024 17:40:57 +0200 Subject: [PATCH 28/39] I think I have it So the radius for the volume integral in the nodes has to be set with a 1/4 3/4 ratio to match the change in volume as the radius changes along the volume. This has a bigger impact close to the edge. Still unsure if this is the "right" thing to do, but at least it works okay (it seems). --- src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 index 2d300b9..ccf0c0f 100644 --- a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 +++ b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 @@ -247,7 +247,7 @@ MODULE moduleMesh2DCyl !QUAD FUNCTIONS !Init element SUBROUTINE initCellQuad2DCyl(self, n, p, nodes) - USE moduleRefParam + USE moduleRefParam, ONLY: L_ref IMPLICIT NONE CLASS(meshCell2DCylQuad), INTENT(out):: self @@ -594,17 +594,17 @@ MODULE moduleMesh2DCyl r = DOT_PRODUCT(fPsi,self%r) !Computes total volume of the cell self%volume = r*detJ*PI8 !2*pi * 4 (weight of 1 point 2D-Gaussian integral) - !Computes volume per node - Xi = (/-5.D-1, -5.D-1, 0.D0/) + !Computes volume per node. Change the radius point to calculate the area to improve accuracy near the axis. + Xi = (/-5.D-1, -0.25D0, 0.D0/) r = self%gatherF(Xi, 4, self%r) self%n1%v = self%n1%v + fPsi(1)*r*detJ*PI8 - Xi = (/ 5.D-1, -5.D-1, 0.D0/) + Xi = (/ 5.D-1, -0.25D0, 0.D0/) r = self%gatherF(Xi, 4, self%r) self%n2%v = self%n2%v + fPsi(2)*r*detJ*PI8 - Xi = (/ 5.D-1, 5.D-1, 0.D0/) + Xi = (/ 5.D-1, 0.75D0, 0.D0/) r = self%gatherF(Xi, 4, self%r) self%n3%v = self%n3%v + fPsi(3)*r*detJ*PI8 - Xi = (/-5.D-1, 5.D-1, 0.D0/) + Xi = (/-5.D-1, 0.75D0, 0.D0/) r = self%gatherF(Xi, 4, self%r) self%n4%v = self%n4%v + fPsi(4)*r*detJ*PI8 From 152ae6b097422d5b5e924835627b5d52473c5c5b Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Thu, 11 Jul 2024 18:19:26 +0200 Subject: [PATCH 29/39] No longer needed The correction in the node volume is no longer needed as now things are being calculated right with the last change. Still, at some point I should review the calculation of the node volume in 2DCyl. --- .../mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 | 14 -------------- src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 | 14 -------------- 2 files changed, 28 deletions(-) diff --git a/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 b/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 index 1c8de50..1ad6a36 100644 --- a/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 +++ b/src/modules/mesh/inout/gmsh2/moduleMeshInputGmsh2.f90 @@ -297,20 +297,6 @@ MODULE moduleMeshInputGmsh2 CLOSE(10) - ! Adjust node volume at axis - SELECT CASE(self%geometry) - CASE("Cyl") - DO n = 1, self%numNodes - r = self%nodes(n)%obj%getCoordinates() - IF (r(2) == 0.D0) THEN - self%nodes(n)%obj%v = self%nodes(n)%obj%v * 3.0D0/2.0D0 - - END IF - - END DO - - END SELECT - !Call mesh connectivity CALL self%connectMesh diff --git a/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 b/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 index d408387..184d645 100644 --- a/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 +++ b/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 @@ -497,20 +497,6 @@ MODULE moduleMeshInputVTU END DO - ! Adjust node volume at axis - SELECT CASE(self%geometry) - CASE("Cyl") - DO n = 1, self%numNodes - r = self%nodes(n)%obj%getCoordinates() - IF (r(2) == 0.D0) THEN - self%nodes(n)%obj%v = self%nodes(n)%obj%v * 3.0D0/2.0D0 - - END IF - - END DO - - END SELECT - !Call mesh connectivity CALL self%connectMesh From fb9d1ad8375267eaa1f4bfe7c3b0c44952c94a4d Mon Sep 17 00:00:00 2001 From: Jorge Gonzalez Date: Thu, 11 Jul 2024 16:44:29 +0000 Subject: [PATCH 30/39] Update moduleMesh2DCyl.f90 This is not needed. --- src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 | 1 - 1 file changed, 1 deletion(-) diff --git a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 index ccf0c0f..ae1eb92 100644 --- a/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 +++ b/src/modules/mesh/2DCyl/moduleMesh2DCyl.f90 @@ -247,7 +247,6 @@ MODULE moduleMesh2DCyl !QUAD FUNCTIONS !Init element SUBROUTINE initCellQuad2DCyl(self, n, p, nodes) - USE moduleRefParam, ONLY: L_ref IMPLICIT NONE CLASS(meshCell2DCylQuad), INTENT(out):: self From abedb79b1651386d39e4e08c9de877a66a6d70e4 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Fri, 12 Jul 2024 11:02:26 +0200 Subject: [PATCH 31/39] Some comments Just some comments on how I am going to make the desired changes (have a Dirichlet boundary condition for the electric potential that changes with time). This might be a good opportunity to rework the boundary conditions in the electrostatic field and include other things like a Newmann boundary condition. We will see. --- src/modules/init/moduleInput.f90 | 6 ++++++ src/modules/solver/electromagnetic/moduleEM.f90 | 2 ++ 2 files changed, 8 insertions(+) diff --git a/src/modules/init/moduleInput.f90 b/src/modules/init/moduleInput.f90 index 6f1d5bb..4216c73 100644 --- a/src/modules/init/moduleInput.f90 +++ b/src/modules/init/moduleInput.f90 @@ -1173,6 +1173,12 @@ MODULE moduleInput IF (.NOT. found) & CALL criticalError('Required parameter "physicalSurface" for Dirichlet boundary condition not found', 'readEMBoundary') + CASE ("dirichletTime") + CALL config%get(object // '.potential', boundEM(i)%potential, found) + IF (.NOT. found) & + CALL criticalError('Required parameter "potential" for Dirichlet boundary condition not found', 'readEMBoundary') + boundEM(i)%potential = boundEM(i)%potential/Volt_ref + CASE DEFAULT CALL criticalError('Boundary type ' // boundEM(i)%typeEM // ' not yet supported', 'readEMBoundary') diff --git a/src/modules/solver/electromagnetic/moduleEM.f90 b/src/modules/solver/electromagnetic/moduleEM.f90 index d5d0793..f6c7112 100644 --- a/src/modules/solver/electromagnetic/moduleEM.f90 +++ b/src/modules/solver/electromagnetic/moduleEM.f90 @@ -2,6 +2,7 @@ MODULE moduleEM IMPLICIT NONE + ! TODO: Make this a derived type. TYPE:: boundaryEM CHARACTER(:), ALLOCATABLE:: typeEM INTEGER:: physicalSurface @@ -9,6 +10,7 @@ MODULE moduleEM CONTAINS PROCEDURE, PASS:: apply + !PROCEDURE, PASS:: update !only for time dependent boundary conditions or maybe change apply????? That might be better. END TYPE boundaryEM From f0a27c05295e110829f91c23f1624b9596d1df32 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Fri, 12 Jul 2024 13:17:02 +0200 Subject: [PATCH 32/39] More comments So if the source vector is being updated every time step, it might be "easy" to implement these things. --- src/modules/solver/electromagnetic/moduleEM.f90 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/modules/solver/electromagnetic/moduleEM.f90 b/src/modules/solver/electromagnetic/moduleEM.f90 index f6c7112..ce33570 100644 --- a/src/modules/solver/electromagnetic/moduleEM.f90 +++ b/src/modules/solver/electromagnetic/moduleEM.f90 @@ -49,7 +49,7 @@ MODULE moduleEM END DO - END SUBROUTINE + END SUBROUTINE apply !Assemble the source vector based on the charge density to solve Poisson's equation SUBROUTINE assembleSourceVector(vectorF) @@ -130,6 +130,7 @@ MODULE moduleEM ALLOCATE(tempF(1:mesh%numNodes)) !$OMP END SINGLE + !TODO: Is this done every time step??? Then things are gonna be really simple. CALL assembleSourceVector(tempF) !$OMP SINGLE From 49025a6965869b7a19975b8cad73a989cc0d6028 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Fri, 12 Jul 2024 19:21:00 +0200 Subject: [PATCH 33/39] Starting changes Planning the new way to do BC in the EM field solver. Probably I have to change how things are read, but I don't think this is going to affect the input file. --- src/modules/solver/electromagnetic/moduleEM.f90 | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/modules/solver/electromagnetic/moduleEM.f90 b/src/modules/solver/electromagnetic/moduleEM.f90 index ce33570..a141eac 100644 --- a/src/modules/solver/electromagnetic/moduleEM.f90 +++ b/src/modules/solver/electromagnetic/moduleEM.f90 @@ -1,12 +1,23 @@ !Module to solve the electromagnetic field MODULE moduleEM + USE moduleMesh IMPLICIT NONE + ! Array of pointers to nodes. + !TODO: This is probably better in moduleMesh as multiple modules could use this. + TYPE:: meshNodePointer + CLASS(meshNode), POINTER:: obj + CONTAINS + + END TYPE meshNodePointer + + ! TODO: Make this a derived type. TYPE:: boundaryEM CHARACTER(:), ALLOCATABLE:: typeEM INTEGER:: physicalSurface REAL(8):: potential + TYPE(meshNodePointer), ALLOCATABLE:: nodes(:) CONTAINS PROCEDURE, PASS:: apply @@ -42,6 +53,7 @@ MODULE moduleEM mesh%K(nodes(n), :) = 0.D0 mesh%K(nodes(n), nodes(n)) = 1.D0 + ! TODO: Change this to pointer mesh%nodes(nodes(n))%obj%emData%type = self%typeEM mesh%nodes(nodes(n))%obj%emData%phi = self%potential From ac277259408bd6670ea17085527e3f91881fb04e Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Fri, 12 Jul 2024 23:08:19 +0200 Subject: [PATCH 34/39] Big one... I should've commited before, but I wanted to make things compile. The big change is that I've added a global time step so the parameter does not need to be passed in each function. This is useful as we are moving towards using time profiles for boundary conditions and injection of particles (not in this branch, but in the future and the procedure will be quite similar) --- src/fpakc.f90 | 25 ++- src/modules/common/moduleCaseParam.f90 | 5 + src/modules/init/moduleInput.f90 | 134 +++++++------ .../mesh/inout/0D/moduleMeshOutput0D.f90 | 21 +- .../inout/gmsh2/moduleMeshOutputGmsh2.f90 | 38 ++-- .../mesh/inout/moduleMeshInoutCommon.f90 | 8 +- .../mesh/inout/vtu/moduleMeshInputVTU.f90 | 2 +- .../mesh/inout/vtu/moduleMeshOutputVTU.f90 | 35 ++-- src/modules/mesh/moduleMesh.f90 | 15 +- src/modules/moduleInject.f90 | 26 +-- src/modules/moduleProbe.f90 | 28 +-- src/modules/output/moduleOutput.f90 | 6 +- .../solver/electromagnetic/moduleEM.f90 | 180 +++++++++++++----- src/modules/solver/moduleSolver.f90 | 37 ++-- 14 files changed, 340 insertions(+), 220 deletions(-) diff --git a/src/fpakc.f90 b/src/fpakc.f90 index e90a5e0..ae6e7bb 100644 --- a/src/fpakc.f90 +++ b/src/fpakc.f90 @@ -11,12 +11,12 @@ PROGRAM fpakc USE OMP_LIB IMPLICIT NONE - ! t = time step - INTEGER:: t ! arg1 = Input argument 1 (input file) CHARACTER(200):: arg1 ! inputFile = path+name of input file CHARACTER(:), ALLOCATABLE:: inputFile + ! generic integer for time step + INTEGER:: t tStep = omp_get_wtime() !Gets the input file @@ -32,10 +32,13 @@ PROGRAM fpakc CALL initOutput(inputFile) !Do '0' iteration - t = tInitial + timeStep = tInitial !$OMP PARALLEL DEFAULT(SHARED) !$OMP SINGLE + ! Initial reset of probes + CALL resetProbes() + CALL verboseError("Initial scatter of particles...") !$OMP END SINGLE CALL doScatter() @@ -49,19 +52,21 @@ PROGRAM fpakc tStep = omp_get_wtime() - tStep !Output initial state - CALL doOutput(t) + CALL doOutput() CALL verboseError('Starting main loop...') !$OMP PARALLEL DEFAULT(SHARED) DO t = tInitial + 1, tFinal - !Insert new particles and push them !$OMP SINGLE tStep = omp_get_wtime() + ! Update global time step index + timeStep = t + !Checks if a species needs to me moved in this iteration - CALL solver%updatePushSpecies(t) + CALL solver%updatePushSpecies() !Checks if probes need to be calculated this iteration - CALL resetProbes(t) + CALL resetProbes() tPush = omp_get_wtime() !$OMP END SINGLE @@ -79,7 +84,7 @@ PROGRAM fpakc !$OMP END SINGLE IF (doMCCollisions) THEN - CALL meshForMCC%doCollisions(t) + CALL meshForMCC%doCollisions() END IF @@ -124,12 +129,12 @@ PROGRAM fpakc !$OMP SINGLE tEMField = omp_get_wtime() - tEMField - CALL doAverage(t) + CALL doAverage() tStep = omp_get_wtime() - tStep !Output data - CALL doOutput(t) + CALL doOutput() !$OMP END SINGLE END DO diff --git a/src/modules/common/moduleCaseParam.f90 b/src/modules/common/moduleCaseParam.f90 index 8df3210..551d867 100644 --- a/src/modules/common/moduleCaseParam.f90 +++ b/src/modules/common/moduleCaseParam.f90 @@ -2,8 +2,13 @@ MODULE moduleCaseParam !Final and initial iterations INTEGER:: tFinal, tInitial = 0 + ! Global index of current iteration + INTEGER:: timeStep + ! Time step for all species REAL(8), ALLOCATABLE:: tau(:) + ! Minimum time step REAL(8):: tauMin + ! Time step for Monte-Carlo Collisions REAL(8):: tauColl END MODULE moduleCaseParam diff --git a/src/modules/init/moduleInput.f90 b/src/modules/init/moduleInput.f90 index 4216c73..6800ac1 100644 --- a/src/modules/init/moduleInput.f90 +++ b/src/modules/init/moduleInput.f90 @@ -264,8 +264,8 @@ MODULE moduleInput CALL readEMBoundary(config) !Read constant magnetic field DO i = 1, 3 - WRITE(istring, '(i2)') i - CALL config%get(object // '.B(' // istring // ')', B(i), found) + WRITE(iString, '(i2)') i + CALL config%get(object // '.B(' // iString // ')', B(i), found) IF (.NOT. found) THEN CALL criticalError('Constant magnetic field not provided in direction ' // iString, 'readSolver') @@ -799,7 +799,7 @@ MODULE moduleInput TYPE(json_file), INTENT(inout):: config INTEGER:: i, s - CHARACTER(2):: istring, sString + CHARACTER(2):: iString, sString CHARACTER(:), ALLOCATABLE:: object, bType REAL(8):: Tw, cw !Wall temperature and specific heat !Neutral Properties @@ -815,8 +815,8 @@ MODULE moduleInput CALL config%info('boundary', found, n_children = nBoundary) ALLOCATE(boundary(1:nBoundary)) DO i = 1, nBoundary - WRITE(istring, '(i2)') i - object = 'boundary(' // TRIM(istring) // ')' + WRITE(iString, '(i2)') i + object = 'boundary(' // TRIM(iString) // ')' boundary(i)%n = i CALL config%get(object // '.name', boundary(i)%name, found) @@ -1100,13 +1100,13 @@ MODULE moduleInput TYPE(json_file), INTENT(inout):: config CHARACTER(:), ALLOCATABLE:: object LOGICAL:: found - CHARACTER(2):: istring + CHARACTER(2):: iString INTEGER:: i CHARACTER(:), ALLOCATABLE:: speciesName REAL(8), ALLOCATABLE, DIMENSION(:):: r REAL(8), ALLOCATABLE, DIMENSION(:):: v1, v2, v3 INTEGER, ALLOCATABLE, DIMENSION(:):: points - REAL(8):: timeStep + REAL(8):: everyTimeStep CALL config%info('output.probes', found, n_children = nProbes) @@ -1114,7 +1114,7 @@ MODULE moduleInput DO i = 1, nProbes WRITE(iString, '(I2)') i - object = 'output.probes(' // trim(istring) // ')' + object = 'output.probes(' // trim(iString) // ')' CALL config%get(object // '.species', speciesName, found) CALL config%get(object // '.position', r, found) @@ -1122,16 +1122,14 @@ MODULE moduleInput CALL config%get(object // '.velocity_2', v2, found) CALL config%get(object // '.velocity_3', v3, found) CALL config%get(object // '.points', points, found) - CALL config%get(object // '.timeStep', timeStep, found) + CALL config%get(object // '.timeStep', everyTimeStep, found) IF (ANY(points < 2)) CALL criticalError("Number of points in probe " // iString // " incorrect", 'readProbes') - CALL probe(i)%init(i, speciesName, r, v1, v2, v3, points, timeStep) + CALL probe(i)%init(i, speciesName, r, v1, v2, v3, points, everyTimeStep) END DO - CALL resetProbes(tInitial) - END SUBROUTINE readProbes SUBROUTINE readEMBoundary(config) @@ -1147,40 +1145,56 @@ MODULE moduleInput TYPE(json_file), INTENT(inout):: config CHARACTER(:), ALLOCATABLE:: object LOGICAL:: found - CHARACTER(2):: istring - INTEGER:: i, e, s + CHARACTER(:), ALLOCATABLE:: typeEM + REAL(8):: potential + INTEGER:: physicalSurface + CHARACTER(:), ALLOCATABLE:: timeProfile + INTEGER:: b, e, s, n, ni + CHARACTER(2):: bString INTEGER:: info EXTERNAL:: dgetrf CALL config%info('boundaryEM', found, n_children = nBoundaryEM) - IF (found) ALLOCATE(boundEM(1:nBoundaryEM)) + IF (found) ALLOCATE(boundaryEM(1:nBoundaryEM)) - DO i = 1, nBoundaryEM - WRITE(istring, '(I2)') i - object = 'boundaryEM(' // trim(istring) // ')' + DO b = 1, nBoundaryEM + WRITE(bString, '(I2)') b + object = 'boundaryEM(' // trim(bString) // ')' - CALL config%get(object // '.type', boundEM(i)%typeEM, found) + CALL config%get(object // '.type', typeEM, found) - SELECT CASE(boundEM(i)%typeEM) + SELECT CASE(typeEM) CASE ("dirichlet") - CALL config%get(object // '.potential', boundEM(i)%potential, found) - IF (.NOT. found) & + CALL config%get(object // '.potential', potential, found) + IF (.NOT. found) THEN CALL criticalError('Required parameter "potential" for Dirichlet boundary condition not found', 'readEMBoundary') - boundEM(i)%potential = boundEM(i)%potential/Volt_ref - CALL config%get(object // '.physicalSurface', boundEM(i)%physicalSurface, found) - IF (.NOT. found) & + END IF + + CALL config%get(object // '.physicalSurface', physicalSurface, found) + IF (.NOT. found) THEN CALL criticalError('Required parameter "physicalSurface" for Dirichlet boundary condition not found', 'readEMBoundary') + END IF + + CALL initDirichlet(boundaryEM(b)%obj, physicalSurface, potential) + CASE ("dirichletTime") - CALL config%get(object // '.potential', boundEM(i)%potential, found) - IF (.NOT. found) & + CALL config%get(object // '.potential', potential, found) + IF (.NOT. found) THEN CALL criticalError('Required parameter "potential" for Dirichlet boundary condition not found', 'readEMBoundary') - boundEM(i)%potential = boundEM(i)%potential/Volt_ref + + END IF + + CALL config%get(object // '.physicalSurface', physicalSurface, found) + IF (.NOT. found) THEN + CALL criticalError('Required parameter "physicalSurface" for Dirichlet boundary condition not found', 'readEMBoundary') + + END IF CASE DEFAULT - CALL criticalError('Boundary type ' // boundEM(i)%typeEM // ' not yet supported', 'readEMBoundary') + CALL criticalError('Boundary type ' // typeEM // ' not yet supported', 'readEMBoundary') END SELECT @@ -1199,18 +1213,28 @@ MODULE moduleInput END DO - IF (ALLOCATED(boundEM)) THEN - DO e = 1, mesh%numEdges - IF (ANY(mesh%edges(e)%obj%physicalSurface == boundEM(:)%physicalSurface)) THEN - DO i = 1, nBoundaryEM - IF (mesh%edges(e)%obj%physicalSurface == boundEM(i)%physicalSurface) THEN - CALL boundEM(i)%apply(mesh%edges(e)%obj) + ! Modify K matrix due to boundary conditions + DO b = 1, nBoundaryEM + SELECT TYPE(boundary => boundaryEM(b)%obj) + TYPE IS(boundaryEMDirichlet) + DO n = 1, boundary%nNodes + ni = boundary%nodes(n)%obj%n + mesh%K(ni, :) = 0.D0 + mesh%K(ni, ni) = 1.D0 - END IF - END DO - END IF - END DO - END IF + END DO + + TYPE IS(boundaryEMDirichletTime) + DO n = 1, boundary%nNodes + ni = boundary%nodes(n)%obj%n + mesh%K(ni, :) = 0.D0 + mesh%K(ni, ni) = 1.D0 + + END DO + + END SELECT + + END DO !Compute the PLU factorization of K once boundary conditions have been read CALL dgetrf(mesh%numNodes, mesh%numNodes, mesh%K, mesh%numNodes, mesh%IPIV, info) @@ -1231,13 +1255,13 @@ MODULE moduleInput TYPE(json_file), INTENT(inout):: config INTEGER:: i - CHARACTER(2):: istring + CHARACTER(2):: iString CHARACTER(:), ALLOCATABLE:: object LOGICAL:: found CHARACTER(:), ALLOCATABLE:: speciesName CHARACTER(:), ALLOCATABLE:: name REAL(8):: v - REAL(8), ALLOCATABLE:: T(:), normal(:) + REAL(8), ALLOCATABLE:: temperature(:), normal(:) REAL(8):: flow CHARACTER(:), ALLOCATABLE:: units INTEGER:: physicalSurface @@ -1248,8 +1272,8 @@ MODULE moduleInput ALLOCATE(inject(1:nInject)) nPartInj = 0 DO i = 1, nInject - WRITE(istring, '(i2)') i - object = 'inject(' // trim(istring) // ')' + WRITE(iString, '(i2)') i + object = 'inject(' // trim(iString) // ')' !Find species CALL config%get(object // '.species', speciesName, found) @@ -1257,7 +1281,7 @@ MODULE moduleInput CALL config%get(object // '.name', name, found) CALL config%get(object // '.v', v, found) - CALL config%get(object // '.T', T, found) + CALL config%get(object // '.T', temperature, found) CALL config%get(object // '.n', normal, found) IF (.NOT. found) THEN ALLOCATE(normal(1:3)) @@ -1269,7 +1293,7 @@ MODULE moduleInput particlesPerEdge = 0 CALL config%get(object // '.particlesPerEdge', particlesPerEdge, found) - CALL inject(i)%init(i, v, normal, T, flow, units, sp, physicalSurface, particlesPerEdge) + CALL inject(i)%init(i, v, normal, temperature, flow, units, sp, physicalSurface, particlesPerEdge) CALL readVelDistr(config, inject(i), object) @@ -1329,28 +1353,28 @@ MODULE moduleInput TYPE(injectGeneric), INTENT(inout):: inj CHARACTER(:), ALLOCATABLE, INTENT(in):: object INTEGER:: i - CHARACTER(2):: istring + CHARACTER(2):: iString CHARACTER(:), ALLOCATABLE:: fvType LOGICAL:: found - REAL(8):: v, T, m + REAL(8):: v, temperature, m !Reads species mass m = inj%species%m !Reads distribution functions for velocity DO i = 1, 3 - WRITE(istring, '(i2)') i - CALL config%get(object // '.velDist('// TRIM(istring) //')', fvType, found) - IF (.NOT. found) CALL criticalError("No velocity distribution in direction " // istring // & + WRITE(iString, '(i2)') i + CALL config%get(object // '.velDist('// TRIM(iString) //')', fvType, found) + IF (.NOT. found) CALL criticalError("No velocity distribution in direction " // iString // & " found for " // object, 'readVelDistr') SELECT CASE(fvType) CASE ("Maxwellian") - T = inj%T(i) - CALL initVelDistMaxwellian(inj%v(i)%obj, t, m) + temperature = inj%temperature(i) + CALL initVelDistMaxwellian(inj%v(i)%obj, temperature, m) CASE ("Half-Maxwellian") - T = inj%T(i) - CALL initVelDistHalfMaxwellian(inj%v(i)%obj, t, m) + temperature = inj%temperature(i) + CALL initVelDistHalfMaxwellian(inj%v(i)%obj, temperature, m) CASE ("Delta") v = inj%vMod*inj%n(i) diff --git a/src/modules/mesh/inout/0D/moduleMeshOutput0D.f90 b/src/modules/mesh/inout/0D/moduleMeshOutput0D.f90 index 97ec729..c0dcfbb 100644 --- a/src/modules/mesh/inout/0D/moduleMeshOutput0D.f90 +++ b/src/modules/mesh/inout/0D/moduleMeshOutput0D.f90 @@ -1,22 +1,22 @@ MODULE moduleMeshOutput0D CONTAINS - SUBROUTINE printOutput0D(self, t) + SUBROUTINE printOutput0D(self) USE moduleMesh USE moduleRefParam USE moduleSpecies USE moduleOutput + USE moduleCaseParam, ONLY: timeStep IMPLICIT NONE CLASS(meshParticles), INTENT(in):: self - INTEGER, INTENT(in):: t INTEGER:: i TYPE(outputFormat):: output CHARACTER(:), ALLOCATABLE:: fileName DO i = 1, nSpecies fileName='OUTPUT_' // species(i)%obj%name // '.dat' - IF (t == 0) THEN + IF (timeStep == 0) THEN OPEN(20, file = path // folder // '/' // fileName, action = 'write') WRITE(20, "(A1, 14X, A5, A20, 40X, A20, 2(A20))") "#","t (s)","density (m^-3)", "velocity (m/s)", & "pressure (Pa)", "temperature (K)" @@ -27,14 +27,17 @@ MODULE moduleMeshOutput0D OPEN(20, file = path // folder // '/' // fileName, position = 'append', action = 'write') CALL calculateOutput(self%nodes(1)%obj%output(i), output, self%nodes(1)%obj%v, species(i)%obj) - WRITE(20, "(7(ES20.6E3))") REAL(t)*tauMin*ti_ref, output%density, output%velocity, output%pressure, output%temperature + WRITE(20, "(7(ES20.6E3))") REAL(timeStep)*tauMin*ti_ref, output%density, & + output%velocity, & + output%pressure, & + output%temperature CLOSE(20) END DO END SUBROUTINE printOutput0D - SUBROUTINE printColl0D(self, t) + SUBROUTINE printColl0D(self) USE moduleMesh USE moduleRefParam USE moduleCaseParam @@ -43,12 +46,11 @@ MODULE moduleMeshOutput0D IMPLICIT NONE CLASS(meshGeneric), INTENT(in):: self - INTEGER, INTENT(in):: t CHARACTER(:), ALLOCATABLE:: fileName INTEGER:: k fileName='OUTPUT_Collisions.dat' - IF (t == tInitial) THEN + IF (timeStep == tInitial) THEN OPEN(20, file = path // folder // '/' // fileName, action = 'write') WRITE(20, "(A1, 14X, A5, A20)") "#","t (s)","collisions" WRITE(*, "(6X,A15,A)") "Creating file: ", fileName @@ -57,12 +59,12 @@ MODULE moduleMeshOutput0D END IF OPEN(20, file = path // folder // '/' // fileName, position = 'append', action = 'write') - WRITE(20, "(ES20.6E3, 10I20)") REAL(t)*tauMin*ti_ref, (self%cells(1)%obj%tallyColl(k)%tally, k=1,nCollPairs) + WRITE(20, "(ES20.6E3, 10I20)") REAL(timeStep)*tauMin*ti_ref, (self%cells(1)%obj%tallyColl(k)%tally, k=1,nCollPairs) CLOSE(20) END SUBROUTINE printColl0D - SUBROUTINE printEM0D(self, t) + SUBROUTINE printEM0D(self) USE moduleMesh USE moduleRefParam USE moduleCaseParam @@ -70,7 +72,6 @@ MODULE moduleMeshOutput0D IMPLICIT NONE CLASS(meshParticles), INTENT(in):: self - INTEGER, INTENT(in):: t END SUBROUTINE printEM0D diff --git a/src/modules/mesh/inout/gmsh2/moduleMeshOutputGmsh2.f90 b/src/modules/mesh/inout/gmsh2/moduleMeshOutputGmsh2.f90 index ccdcf3d..8176bb5 100644 --- a/src/modules/mesh/inout/gmsh2/moduleMeshOutputGmsh2.f90 +++ b/src/modules/mesh/inout/gmsh2/moduleMeshOutputGmsh2.f90 @@ -80,50 +80,50 @@ MODULE moduleMeshOutputGmsh2 END SUBROUTINE writeGmsh2FooterElementData !Prints the scattered properties of particles into the nodes - SUBROUTINE printOutputGmsh2(self, t) + SUBROUTINE printOutputGmsh2(self) USE moduleMesh USE moduleRefParam USE moduleSpecies USE moduleOutput USE moduleMeshInoutCommon + USE moduleCaseParam, ONLY: timeStep IMPLICIT NONE CLASS(meshParticles), INTENT(in):: self - INTEGER, INTENT(in):: t INTEGER:: n, i TYPE(outputFormat):: output(1:self%numNodes) REAL(8):: time CHARACTER(:), ALLOCATABLE:: fileName - time = DBLE(t)*tauMin*ti_ref + time = DBLE(timeStep)*tauMin*ti_ref DO i = 1, nSpecies - fileName = formatFileName(prefix, species(i)%obj%name, 'msh', t) + fileName = formatFileName(prefix, species(i)%obj%name, 'msh', timeStep) WRITE(*, "(6X,A15,A)") "Creating file: ", fileName OPEN (60, file = path // folder // '/' // fileName) CALL writeGmsh2HeaderMesh(60) - CALL writeGmsh2HeaderNodeData(60, species(i)%obj%name // ' density (m^-3)', t, time, 1, self%numNodes) + CALL writeGmsh2HeaderNodeData(60, species(i)%obj%name // ' density (m^-3)', timeStep, time, 1, self%numNodes) DO n=1, self%numNodes CALL calculateOutput(self%nodes(n)%obj%output(i), output(n), self%nodes(n)%obj%v, species(i)%obj) WRITE(60, "(I6,ES20.6E3)") n, output(n)%density END DO CALL writeGmsh2FooterNodeData(60) - CALL writeGmsh2HeaderNodeData(60, species(i)%obj%name // ' velocity (m s^-1)', t, time, 3, self%numNodes) + CALL writeGmsh2HeaderNodeData(60, species(i)%obj%name // ' velocity (m s^-1)', timeStep, time, 3, self%numNodes) DO n=1, self%numNodes WRITE(60, "(I6,3(ES20.6E3))") n, output(n)%velocity END DO CALL writeGmsh2FooterNodeData(60) - CALL writeGmsh2HeaderNodeData(60, species(i)%obj%name // ' Pressure (Pa)', t, time, 1, self%numNodes) + CALL writeGmsh2HeaderNodeData(60, species(i)%obj%name // ' Pressure (Pa)', timeStep, time, 1, self%numNodes) DO n=1, self%numNodes WRITE(60, "(I6,3(ES20.6E3))") n, output(n)%pressure END DO CALL writeGmsh2FooterNodeData(60) - CALL writeGmsh2HeaderNodeData(60, species(i)%obj%name // ' Temperature (K)', t, time, 1, self%numNodes) + CALL writeGmsh2HeaderNodeData(60, species(i)%obj%name // ' Temperature (K)', timeStep, time, 1, self%numNodes) DO n=1, self%numNodes WRITE(60, "(I6,3(ES20.6E3))") n, output(n)%temperature END DO @@ -135,7 +135,7 @@ MODULE moduleMeshOutputGmsh2 END SUBROUTINE printOutputGmsh2 !Prints the number of collisions into the volumes - SUBROUTINE printCollGmsh2(self, t) + SUBROUTINE printCollGmsh2(self) USE moduleMesh USE moduleRefParam USE moduleCaseParam @@ -145,7 +145,6 @@ MODULE moduleMeshOutputGmsh2 IMPLICIT NONE CLASS(meshGeneric), INTENT(in):: self - INTEGER, INTENT(in):: t INTEGER:: numEdges INTEGER:: k, c INTEGER:: n @@ -167,9 +166,9 @@ MODULE moduleMeshOutputGmsh2 END SELECT IF (collOutput) THEN - time = DBLE(t)*tauMin*ti_ref + time = DBLE(timeStep)*tauMin*ti_ref - fileName = formatFileName(prefix, 'Collisions', 'msh', t) + fileName = formatFileName(prefix, 'Collisions', 'msh', timeStep) WRITE(*, "(6X,A15,A)") "Creating file: ", fileName OPEN (60, file = path // folder // '/' // fileName) @@ -179,7 +178,7 @@ MODULE moduleMeshOutputGmsh2 DO c = 1, interactionMatrix(k)%amount WRITE(cString, "(I2)") c title = '"Pair ' // interactionMatrix(k)%sp_i%name // '-' // interactionMatrix(k)%sp_j%name // ' collision ' // cString - CALL writeGmsh2HeaderElementData(60, title, t, time, 1, self%numCells) + CALL writeGmsh2HeaderElementData(60, title, timeStep, time, 1, self%numCells) DO n=1, self%numCells WRITE(60, "(I6,I10)") n + numEdges, self%cells(n)%obj%tallyColl(k)%tally(c) END DO @@ -196,7 +195,7 @@ MODULE moduleMeshOutputGmsh2 END SUBROUTINE printCollGmsh2 !Prints the electrostatic EM properties into the nodes and volumes - SUBROUTINE printEMGmsh2(self, t) + SUBROUTINE printEMGmsh2(self) USE moduleMesh USE moduleRefParam USE moduleCaseParam @@ -205,7 +204,6 @@ MODULE moduleMeshOutputGmsh2 IMPLICIT NONE CLASS(meshParticles), INTENT(in):: self - INTEGER, INTENT(in):: t INTEGER:: n, e REAL(8):: time CHARACTER(:), ALLOCATABLE:: fileName @@ -214,27 +212,27 @@ MODULE moduleMeshOutputGmsh2 Xi = (/ 0.D0, 0.D0, 0.D0 /) IF (emOutput) THEN - time = DBLE(t)*tauMin*ti_ref + time = DBLE(timeStep)*tauMin*ti_ref - fileName = formatFileName(prefix, 'EMField', 'msh', t) + fileName = formatFileName(prefix, 'EMField', 'msh', timeStep) WRITE(*, "(6X,A15,A)") "Creating file: ", fileName OPEN (20, file = path // folder // '/' // fileName) CALL writeGmsh2HeaderMesh(20) - CALL writeGmsh2HeaderNodeData(20, 'Potential (V)', t, time, 1, self%numNodes) + CALL writeGmsh2HeaderNodeData(20, 'Potential (V)', timeStep, time, 1, self%numNodes) DO n=1, self%numNodes WRITE(20, *) n, self%nodes(n)%obj%emData%phi*Volt_ref END DO CALL writeGmsh2FooterNodeData(20) - CALL writeGmsh2HeaderElementData(20, 'Electric Field (V m^-1)', t, time, 3, self%numCells) + CALL writeGmsh2HeaderElementData(20, 'Electric Field (V m^-1)', timeStep, time, 3, self%numCells) DO e=1, self%numCells WRITE(20, *) e+self%numEdges, self%cells(e)%obj%gatherElectricField(Xi)*EF_ref END DO CALL writeGmsh2FooterElementData(20) - CALL writeGmsh2HeaderNodeData(20, 'Magnetic Field (T)', t, time, 3, self%numNodes) + CALL writeGmsh2HeaderNodeData(20, 'Magnetic Field (T)', timeStep, time, 3, self%numNodes) DO n=1, self%numNodes WRITE(20, *) n, self%nodes(n)%obj%emData%B * B_ref END DO diff --git a/src/modules/mesh/inout/moduleMeshInoutCommon.f90 b/src/modules/mesh/inout/moduleMeshInoutCommon.f90 index e4a6c72..7dc2e84 100644 --- a/src/modules/mesh/inout/moduleMeshInoutCommon.f90 +++ b/src/modules/mesh/inout/moduleMeshInoutCommon.f90 @@ -3,17 +3,17 @@ MODULE moduleMeshInoutCommon CHARACTER(LEN=4):: prefix = 'Step' CONTAINS - PURE FUNCTION formatFileName(prefix, suffix, extension, t) RESULT(fileName) + PURE FUNCTION formatFileName(prefix, suffix, extension, timeStep) RESULT(fileName) USE moduleOutput IMPLICIT NONE CHARACTER(*), INTENT(in):: prefix, suffix, extension - INTEGER, INTENT(in), OPTIONAL:: t + INTEGER, INTENT(in), OPTIONAL:: timeStep CHARACTER (LEN=iterationDigits):: tString CHARACTER(:), ALLOCATABLE:: fileName - IF (PRESENT(t)) THEN - WRITE(tString, iterationFormat) t + IF (PRESENT(timeStep)) THEN + WRITE(tString, iterationFormat) timeStep fileName = prefix // '_' // tString // '_' // suffix // '.' // extension ELSE diff --git a/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 b/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 index 184d645..e07db01 100644 --- a/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 +++ b/src/modules/mesh/inout/vtu/moduleMeshInputVTU.f90 @@ -167,7 +167,7 @@ MODULE moduleMeshInputVTU CLASS(meshGeneric), INTENT(inout):: self CHARACTER(:), ALLOCATABLE, INTENT(in):: filename REAL(8):: r(1:3) !3 generic coordinates - INTEGER:: fileID, error, found + INTEGER:: fileID CHARACTER(LEN=256):: line INTEGER:: numNodes, numElements, numEdges INTEGER, ALLOCATABLE, DIMENSION(:):: entitiesID, offsets, connectivity, types diff --git a/src/modules/mesh/inout/vtu/moduleMeshOutputVTU.f90 b/src/modules/mesh/inout/vtu/moduleMeshOutputVTU.f90 index da90b6b..81e4bbf 100644 --- a/src/modules/mesh/inout/vtu/moduleMeshOutputVTU.f90 +++ b/src/modules/mesh/inout/vtu/moduleMeshOutputVTU.f90 @@ -215,17 +215,16 @@ MODULE moduleMeshOutputVTU END SUBROUTINE writeEM - SUBROUTINE writeCollection(fileID, t, fileNameStep, fileNameCollection) + SUBROUTINE writeCollection(fileID, fileNameStep, fileNameCollection) USE moduleCaseParam USE moduleOutput USE moduleRefParam IMPLICIT NONE INTEGER:: fileID - INTEGER, INTENT(in):: t CHARACTER(*):: fileNameStep, fileNameCollection - IF (t == tInitial) THEN + IF (timeStep == tInitial) THEN !Create collection file WRITE(*, "(6X,A15,A)") "Creating file: ", fileNameCollection OPEN (fileID + 1, file = path // folder // '/' // fileNameCollection) @@ -237,10 +236,11 @@ MODULE moduleMeshOutputVTU !Write iteration file in collection OPEN (fileID + 1, file = path // folder // '/' // fileNameCollection, ACCESS='APPEND') - WRITE(fileID + 1, "(4X, A, ES20.6E3, A, A, A)") '' + WRITE(fileID + 1, "(4X, A, ES20.6E3, A, A, A)") & + '' !Close collection file - IF (t == tFinal) THEN + IF (timeStep == tFinal) THEN WRITE (fileID + 1, "(2X, A)") '' WRITE (fileID + 1, "(A)") '' @@ -307,21 +307,21 @@ MODULE moduleMeshOutputVTU END SUBROUTINE writeAverage - SUBROUTINE printOutputVTU(self,t) + SUBROUTINE printOutputVTU(self) USE moduleMesh USE moduleSpecies USE moduleMeshInoutCommon + USE moduleCaseParam, ONLY: timeStep IMPLICIT NONE CLASS(meshParticles), INTENT(in):: self - INTEGER, INTENT(in):: t INTEGER:: i, fileID CHARACTER(:), ALLOCATABLE:: fileName, fileNameCollection fileID = 60 DO i = 1, nSpecies - fileName = formatFileName(prefix, species(i)%obj%name, 'vtu', t) + fileName = formatFileName(prefix, species(i)%obj%name, 'vtu', timeStep) WRITE(*, "(6X,A15,A)") "Creating file: ", fileName OPEN (fileID, file = path // folder // '/' // fileName) @@ -337,28 +337,27 @@ MODULE moduleMeshOutputVTU !Write collection file for time plotting fileNameCollection = formatFileName('Collection', species(i)%obj%name, 'pvd') - CALL writeCollection(fileID, t, fileName, filenameCollection) + CALL writeCollection(fileID, fileName, filenameCollection) END DO END SUBROUTINE printOutputVTU - SUBROUTINE printCollVTU(self,t) + SUBROUTINE printCollVTU(self) USE moduleMesh USE moduleOutput USE moduleMeshInoutCommon + USE moduleCaseParam, ONLY: timeStep IMPLICIT NONE CLASS(meshGeneric), INTENT(in):: self - INTEGER, INTENT(in):: t INTEGER:: fileID CHARACTER(:), ALLOCATABLE:: fileName, fileNameCollection - CHARACTER (LEN=iterationDigits):: tstring fileID = 62 IF (collOutput) THEN - fileName = formatFileName(prefix, 'Collisions', 'vtu', t) + fileName = formatFileName(prefix, 'Collisions', 'vtu', timeStep) WRITE(*, "(6X,A15,A)") "Creating file: ", fileName OPEN (fileID, file = path // folder // '/' // fileName) @@ -374,26 +373,26 @@ MODULE moduleMeshOutputVTU !Write collection file for time plotting fileNameCollection = formatFileName('Collection', 'Collisions', 'pvd') - CALL writeCollection(fileID, t, fileName, filenameCollection) + CALL writeCollection(fileID, fileName, filenameCollection) END IF END SUBROUTINE printCollVTU - SUBROUTINE printEMVTU(self, t) + SUBROUTINE printEMVTU(self) USE moduleMesh USE moduleMeshInoutCommon + USE moduleCaseParam, ONLY: timeStep IMPLICIT NONE CLASS(meshParticles), INTENT(in):: self - INTEGER, INTENT(in):: t INTEGER:: fileID CHARACTER(:), ALLOCATABLE:: fileName, fileNameCollection fileID = 64 IF (emOutput) THEN - fileName = formatFileName(prefix, 'EMField', 'vtu', t) + fileName = formatFileName(prefix, 'EMField', 'vtu', timeStep) WRITE(*, "(6X,A15,A)") "Creating file: ", fileName OPEN (fileID, file = path // folder // '/' // fileName) @@ -409,7 +408,7 @@ MODULE moduleMeshOutputVTU !Write collection file for time plotting fileNameCollection = formatFileName('Collection', 'EMField', 'pvd') - CALL writeCollection(fileID, t, fileName, filenameCollection) + CALL writeCollection(fileID, fileName, filenameCollection) END IF diff --git a/src/modules/mesh/moduleMesh.f90 b/src/modules/mesh/moduleMesh.f90 index ae53aa0..f933dd1 100644 --- a/src/modules/mesh/moduleMesh.f90 +++ b/src/modules/mesh/moduleMesh.f90 @@ -372,10 +372,9 @@ MODULE moduleMesh END SUBROUTINE connectMesh_interface !Prints number of collisions in each cell - SUBROUTINE printColl_interface(self, t) + SUBROUTINE printColl_interface(self) IMPORT meshGeneric CLASS(meshGeneric), INTENT(in):: self - INTEGER, INTENT(in):: t END SUBROUTINE printColl_interface @@ -403,18 +402,16 @@ MODULE moduleMesh ABSTRACT INTERFACE !Prints Species data - SUBROUTINE printOutput_interface(self, t) + SUBROUTINE printOutput_interface(self) IMPORT meshParticles CLASS(meshParticles), INTENT(in):: self - INTEGER, INTENT(in):: t END SUBROUTINE printOutput_interface !Prints EM info - SUBROUTINE printEM_interface(self, t) + SUBROUTINE printEM_interface(self) IMPORT meshParticles CLASS(meshParticles), INTENT(in):: self - INTEGER, INTENT(in):: t END SUBROUTINE printEM_interface @@ -789,7 +786,7 @@ MODULE moduleMesh END FUNCTION findCellBrute !Computes collisions in element - SUBROUTINE doCollisions(self, t) + SUBROUTINE doCollisions(self) USE moduleCollisions USE moduleSpecies USE moduleList @@ -797,10 +794,10 @@ MODULE moduleMesh USE moduleRandom USE moduleOutput USE moduleMath + USE moduleCaseParam, ONLY: timeStep IMPLICIT NONE CLASS(meshGeneric), INTENT(inout), TARGET:: self - INTEGER, INTENT(in):: t INTEGER:: e CLASS(meshCell), POINTER:: cell INTEGER:: k, i, j @@ -816,7 +813,7 @@ MODULE moduleMesh REAL(8):: rnd_real !Random number for collision INTEGER:: rnd_int !Random number for collision - IF (MOD(t, everyColl) == 0) THEN + IF (MOD(timeStep, everyColl) == 0) THEN !Collisions need to be performed in this iteration !$OMP DO SCHEDULE(DYNAMIC) PRIVATE(part_i, part_j, partTemp_i, partTemp_j) DO e=1, self%numCells diff --git a/src/modules/moduleInject.f90 b/src/modules/moduleInject.f90 index 18c7fbb..5b96be2 100644 --- a/src/modules/moduleInject.f90 +++ b/src/modules/moduleInject.f90 @@ -54,7 +54,7 @@ MODULE moduleInject INTEGER:: id CHARACTER(:), ALLOCATABLE:: name REAL(8):: vMod !Velocity (module) - REAL(8):: T(1:3) !Temperature + REAL(8):: temperature(1:3) !Temperature REAL(8):: n(1:3) !Direction of injection LOGICAL:: fixDirection !The injection of particles has a fix direction defined by n INTEGER:: nParticles !Number of particles to introduce each time step @@ -76,7 +76,7 @@ MODULE moduleInject CONTAINS !Initialize an injection of particles - SUBROUTINE initInject(self, i, v, n, T, flow, units, sp, physicalSurface, particlesPerEdge) + SUBROUTINE initInject(self, i, v, n, temperature, flow, units, sp, physicalSurface, particlesPerEdge) USE moduleMesh USE moduleRefParam USE moduleConstParam @@ -87,7 +87,7 @@ MODULE moduleInject CLASS(injectGeneric), INTENT(inout):: self INTEGER, INTENT(in):: i - REAL(8), INTENT(in):: v, n(1:3), T(1:3) + REAL(8), INTENT(in):: v, n(1:3), temperature(1:3) INTEGER, INTENT(in):: sp, physicalSurface, particlesPerEdge REAL(8):: tauInject REAL(8), INTENT(in):: flow @@ -97,10 +97,10 @@ MODULE moduleInject INTEGER:: nVolColl REAL(8):: fluxPerStep = 0.D0 - self%id = i - self%vMod = v / v_ref - self%n = n / NORM2(n) - self%T = T / T_ref + self%id = i + self%vMod = v / v_ref + self%n = n / NORM2(n) + self%temperature = temperature / T_ref !Gets the edge elements from which particles are injected DO e = 1, mesh%numEdges phSurface(e) = mesh%edges(e)%obj%physicalSurface @@ -232,23 +232,23 @@ MODULE moduleInject END SUBROUTINE doInjects - SUBROUTINE initVelDistMaxwellian(velDist, T, m) + SUBROUTINE initVelDistMaxwellian(velDist, temperature, m) IMPLICIT NONE CLASS(velDistGeneric), ALLOCATABLE, INTENT(out):: velDist - REAL(8), INTENT(in):: T, m + REAL(8), INTENT(in):: temperature, m - velDist = velDistMaxwellian(vTh = DSQRT(T/m)) + velDist = velDistMaxwellian(vTh = DSQRT(temperature/m)) END SUBROUTINE initVelDistMaxwellian - SUBROUTINE initVelDistHalfMaxwellian(velDist, T, m) + SUBROUTINE initVelDistHalfMaxwellian(velDist, temperature, m) IMPLICIT NONE CLASS(velDistGeneric), ALLOCATABLE, INTENT(out):: velDist - REAL(8), INTENT(in):: T, m + REAL(8), INTENT(in):: temperature, m - velDist = velDistHalfMaxwellian(vTh = DSQRT(T/m)) + velDist = velDistHalfMaxwellian(vTh = DSQRT(temperature/m)) END SUBROUTINE initVelDistHalfMaxwellian diff --git a/src/modules/moduleProbe.f90 b/src/modules/moduleProbe.f90 index c29eeda..754d56a 100644 --- a/src/modules/moduleProbe.f90 +++ b/src/modules/moduleProbe.f90 @@ -27,7 +27,7 @@ MODULE moduleProbe CONTAINS !Functions for probeDistFunc type - SUBROUTINE init(self, id, speciesName, r, v1, v2, v3, points, timeStep) + SUBROUTINE init(self, id, speciesName, r, v1, v2, v3, points, everyTimeStep) USE moduleCaseParam USE moduleRefParam USE moduleSpecies @@ -41,7 +41,7 @@ MODULE moduleProbe REAL(8), INTENT(in):: r(1:3) REAL(8), INTENT(in):: v1(1:2), v2(1:2), v3(1:2) INTEGER, INTENT(in):: points(1:3) - REAL(8), INTENT(in):: timeStep + REAL(8), INTENT(in):: everyTimeStep INTEGER:: sp, i REAL(8):: dv(1:3) @@ -91,11 +91,11 @@ MODULE moduleProbe 1:self%nv(3))) !Number of iterations between output - IF (timeStep == 0.D0) THEN + IF (everyTimeStep == 0.D0) THEN self%every = 1 ELSE - self%every = NINT(timeStep/ tauMin / ti_ref) + self%every = NINT(everyTimeStep/ tauMin / ti_ref) END IF @@ -189,13 +189,13 @@ MODULE moduleProbe END SUBROUTINE calculate - SUBROUTINE output(self, t) + SUBROUTINE output(self) USE moduleOutput USE moduleRefParam + USE moduleCaseParam, ONLY: timeStep IMPLICIT NONE CLASS(probeDistFunc), INTENT(inout):: self - INTEGER, INTENT(in):: t CHARACTER (LEN=iterationDigits):: tstring CHARACTER (LEN=3):: pstring CHARACTER(:), ALLOCATABLE:: filename @@ -204,14 +204,14 @@ MODULE moduleProbe !Divide by the velocity cube volume self%f = self%f * self%dvInv - WRITE(tstring, iterationFormat) t + WRITE(tstring, iterationFormat) timeStep WRITE(pstring, "(I3.3)") self%id fileName='Probe_' // tstring// '_f_' // pstring // '.dat' WRITE(*, "(6X,A15,A)") "Creating file: ", fileName OPEN (10, file = path // folder // '/' // fileName) WRITE(10, "(A1, 1X, A)") "# ", self%species%name WRITE(10, "(A6, 3(ES15.6E3), A2)") "# r = ", self%r(:)*L_ref, " m" - WRITE(10, "(A6, ES15.6E3, A2)") "# t = ", REAL(t)*tauMin*ti_ref, " s" + WRITE(10, "(A6, ES15.6E3, A2)") "# t = ", REAL(timeStep)*tauMin*ti_ref, " s" WRITE(10, "(A1, A19, 3(A20))") "#", "v1 (m s^-1)", "v2 (m s^-1)", "v3 (m s^-1)", "f" DO i = 1, self%nv(1) DO j = 1, self%nv(2) @@ -252,15 +252,15 @@ MODULE moduleProbe END SUBROUTINE doProbes - SUBROUTINE outputProbes(t) + SUBROUTINE outputProbes() + USE moduleCaseParam, ONLY: timeStep IMPLICIT NONE - INTEGER, INTENT(in):: t INTEGER:: i DO i = 1, nProbes IF (probe(i)%update) THEN - CALL probe(i)%output(t) + CALL probe(i)%output() END IF @@ -268,15 +268,15 @@ MODULE moduleProbe END SUBROUTINE outputProbes - SUBROUTINE resetProbes(t) + SUBROUTINE resetProbes() + USE moduleCaseParam, ONLY: timeStep IMPLICIT NONE - INTEGER, INTENT(in):: t INTEGER:: i DO i = 1, nProbes probe(i)%f = 0.D0 - probe(i)%update = t == tFinal .OR. t == tInitial .OR. MOD(t, probe(i)%every) == 0 + probe(i)%update = timeStep == tFinal .OR. timeStep == tInitial .OR. MOD(timeStep, probe(i)%every) == 0 END DO diff --git a/src/modules/output/moduleOutput.f90 b/src/modules/output/moduleOutput.f90 index 18fbb7f..e6dc91f 100644 --- a/src/modules/output/moduleOutput.f90 +++ b/src/modules/output/moduleOutput.f90 @@ -160,12 +160,12 @@ MODULE moduleOutput END SUBROUTINE calculateOutput - SUBROUTINE printTime(t, first) + SUBROUTINE printTime(first) USE moduleSpecies USE moduleCompTime + USE moduleCaseParam, ONLY: timeStep IMPLICIT NONE - INTEGER, INTENT(in):: t LOGICAL, INTENT(in), OPTIONAL:: first CHARACTER(:), ALLOCATABLE:: fileName @@ -187,7 +187,7 @@ MODULE moduleOutput OPEN(20, file = path // folder // '/' // fileName, position = 'append', action = 'write') - WRITE (20, "(I10, I10, 7(ES20.6E3))") t, nPartOld, tStep, tPush, tReset, tColl, tCoul, tWeight, tEMField + WRITE (20, "(I10, I10, 7(ES20.6E3))") timeStep, nPartOld, tStep, tPush, tReset, tColl, tCoul, tWeight, tEMField CLOSE(20) diff --git a/src/modules/solver/electromagnetic/moduleEM.f90 b/src/modules/solver/electromagnetic/moduleEM.f90 index a141eac..30a23ad 100644 --- a/src/modules/solver/electromagnetic/moduleEM.f90 +++ b/src/modules/solver/electromagnetic/moduleEM.f90 @@ -1,6 +1,7 @@ !Module to solve the electromagnetic field MODULE moduleEM USE moduleMesh + USE moduleTable IMPLICIT NONE ! Array of pointers to nodes. @@ -11,57 +12,155 @@ MODULE moduleEM END TYPE meshNodePointer - - ! TODO: Make this a derived type. - TYPE:: boundaryEM - CHARACTER(:), ALLOCATABLE:: typeEM - INTEGER:: physicalSurface - REAL(8):: potential + ! Generic type for electromagnetic boundary conditions + TYPE, PUBLIC, ABSTRACT:: boundaryEMGeneric + INTEGER:: nNodes TYPE(meshNodePointer), ALLOCATABLE:: nodes(:) CONTAINS - PROCEDURE, PASS:: apply + PROCEDURE(applyEM_interface), DEFERRED, PASS:: apply !PROCEDURE, PASS:: update !only for time dependent boundary conditions or maybe change apply????? That might be better. - END TYPE boundaryEM + END TYPE boundaryEMGeneric + + ABSTRACT INTERFACE + ! Apply boundary condition to the load vector for the Poission equation + SUBROUTINE applyEM_interface(self, vectorF) + IMPORT boundaryEMGeneric + CLASS(boundaryEMGeneric), INTENT(in):: self + REAL(8), INTENT(inout):: vectorF(:) + + END SUBROUTINE applyEM_interface + + END INTERFACE + + TYPE, EXTENDS(boundaryEMGeneric):: boundaryEMDirichlet + REAL(8):: potential + + CONTAINS + ! boundaryEMGeneric DEFERRED PROCEDURES + PROCEDURE, PASS:: apply => applyDirichlet + + END TYPE boundaryEMDirichlet + + TYPE, EXTENDS(boundaryEMGeneric):: boundaryEMDirichletTime + REAL(8):: potential + TYPE(table1D):: temporalProfile + + CONTAINS + ! boundaryEMGeneric DEFERRED PROCEDURES + PROCEDURE, PASS:: apply => applyDirichletTime + + END TYPE boundaryEMDirichletTime + + ! Container for boundary conditions + TYPE:: boundaryEMCont + CLASS(boundaryEMGeneric), ALLOCATABLE:: obj + + END TYPE boundaryEMCont INTEGER:: nBoundaryEM - TYPE(boundaryEM), ALLOCATABLE:: boundEM(:) + TYPE(boundaryEMCont), ALLOCATABLE:: boundaryEM(:) !Information of charge and reference parameters for rho vector REAL(8), ALLOCATABLE:: qSpecies(:) CONTAINS - !Apply boundary conditions to the K matrix for Poisson's equation - SUBROUTINE apply(self, edge) + ! Initialize Dirichlet boundary condition + SUBROUTINE initDirichlet(self, physicalSurface, potential) + USE moduleMesh + USE moduleRefParam, ONLY: Volt_ref + IMPLICIT NONE + + CLASS(boundaryEMGeneric), ALLOCATABLE, INTENT(out):: self + INTEGER:: physicalSurface + REAL(8), INTENT(in):: potential + CLASS(meshEdge), POINTER:: edge + INTEGER, ALLOCATABLE:: nodes(:), nodesEdge(:) + INTEGER:: nNodes, nodesNew + INTEGER:: e, n + + ! Allocate boundary edge + ALLOCATE(boundaryEMDirichlet:: self) + + SELECT TYPE(self) + TYPE IS(boundaryEMDirichlet) + self%potential = potential / Volt_ref + + !TODO: This is going into a function + !Temporal array to hold nodes + ALLOCATE(nodes(0)) + + ! Loop thorugh the edges and identify those that are part of the boundary + DO e = 1, mesh%numEdges + edge => mesh%edges(e)%obj + IF (edge%physicalSurface == physicalSurface) THEN + ! Edge is of the right boundary index + ! Get nodes in the edge + nNodes = edge%nNodes + nodesEdge = edge%getNodes(nNodes) + ! Collect all nodes that are not already in the temporal array + DO n = 1, nNodes + IF (ANY(nodes == nodesEdge(n))) THEN + ! Node already in array, skip + CYCLE + + ELSE + ! If not, add element to array of nodes + nodes = [nodes, nodesEdge(n)] + + END IF + + END DO + + END IF + + END DO + + ! Point boundary to nodes + nNodes = SIZE(nodes) + ALLOCATE(self%nodes(nNodes)) + DO n = 1, nNodes + self%nodes(n)%obj => mesh%nodes(nodes(n))%obj + + END DO + + END SELECT + + END SUBROUTINE initDirichlet + + !Apply Dirichlet boundary condition to the poisson equation + SUBROUTINE applyDirichlet(self, vectorF) USE moduleMesh IMPLICIT NONE - CLASS(boundaryEM), INTENT(in):: self - CLASS(meshEdge):: edge - INTEGER:: nNodes - INTEGER, ALLOCATABLE:: nodes(:) - INTEGER:: n + CLASS(boundaryEMDirichlet), INTENT(in):: self + REAL(8), INTENT(inout):: vectorF(:) + INTEGER:: n, ni - nNodes = 1 - nNodes = edge%nNodes - nodes = edge%getNodes(nNodes) - - DO n = 1, nNodes - SELECT CASE(self%typeEM) - CASE ("dirichlet") - mesh%K(nodes(n), :) = 0.D0 - mesh%K(nodes(n), nodes(n)) = 1.D0 - - ! TODO: Change this to pointer - mesh%nodes(nodes(n))%obj%emData%type = self%typeEM - mesh%nodes(nodes(n))%obj%emData%phi = self%potential - - END SELECT + DO n = 1, self%nNodes + self%nodes(n)%obj%emData%phi = self%potential END DO - END SUBROUTINE apply + END SUBROUTINE applyDirichlet + + !Apply Dirichlet boundary condition with time temporal profile + SUBROUTINE applyDirichletTime(self, vectorF) + USE moduleMesh + USE moduleCaseParam, ONLY: timeStep, tauMin + IMPLICIT NONE + + CLASS(boundaryEMDirichletTime), INTENT(in):: self + REAL(8), INTENT(inout):: vectorF(:) + INTEGER:: n, ni + + DO n = 1, self%nNodes + self%nodes(n)%obj%emData%phi = self%potential + + END DO + + END SUBROUTINE applyDirichletTime !Assemble the source vector based on the charge density to solve Poisson's equation SUBROUTINE assembleSourceVector(vectorF) @@ -74,13 +173,14 @@ MODULE moduleEM INTEGER, ALLOCATABLE:: nodes(:) REAL(8), ALLOCATABLE:: rho(:) INTEGER:: nNodes - INTEGER:: e, i, ni + INTEGER:: e, i, ni, b CLASS(meshNode), POINTER:: node !$OMP SINGLE vectorF = 0.D0 !$OMP END SINGLE + ! Calculate charge density in each node !$OMP DO REDUCTION(+:vectorF) DO e = 1, mesh%numCells nNodes = mesh%cells(e)%obj%nNodes @@ -112,18 +212,12 @@ MODULE moduleEM !$OMP END DO !Apply boundary conditions - !$OMP DO - DO i = 1, mesh%numNodes - node => mesh%nodes(i)%obj - - SELECT CASE(node%emData%type) - CASE ("dirichlet") - vectorF(i) = node%emData%phi - - END SELECT + !$OMP SINGLE + DO b = 1, nBoundaryEM + CALL boundaryEM(b)%obj%apply(vectorF) END DO - !$OMP END DO + !$OMP END SINGLE END SUBROUTINE assembleSourceVector diff --git a/src/modules/solver/moduleSolver.f90 b/src/modules/solver/moduleSolver.f90 index 0b2837f..5928508 100644 --- a/src/modules/solver/moduleSolver.f90 +++ b/src/modules/solver/moduleSolver.f90 @@ -491,47 +491,46 @@ MODULE moduleSolver END SUBROUTINE updateParticleCell !Update the information about if a species needs to be moved this iteration - SUBROUTINE updatePushSpecies(self, t) + SUBROUTINE updatePushSpecies(self) USE moduleSpecies + USE moduleCaseparam, ONLY: timeStep IMPLICIT NONE CLASS(solverGeneric), INTENT(inout):: self - INTEGER, INTENT(in):: t INTEGER:: s DO s=1, nSpecies - self%pusher(s)%pushSpecies = MOD(t, self%pusher(s)%every) == 0 + self%pusher(s)%pushSpecies = MOD(timeStep, self%pusher(s)%every) == 0 END DO END SUBROUTINE updatePushSpecies !Output the different data and information - SUBROUTINE doOutput(t) + SUBROUTINE doOutput() USE moduleMesh USE moduleOutput USE moduleSpecies USE moduleCompTime USE moduleProbe + USE moduleCaseParam, ONLY: timeStep IMPLICIT NONE - INTEGER, INTENT(in):: t - - CALL outputProbes(t) + CALL outputProbes() counterOutput = counterOutput + 1 IF (counterOutput >= triggerOutput .OR. & - t == tFinal .OR. t == tInitial) THEN + timeStep == tFinal .OR. timeStep == tInitial) THEN !Resets output counter counterOutput=0 - CALL mesh%printOutput(t) - IF (ASSOCIATED(meshForMCC)) CALL meshForMCC%printColl(t) - CALL mesh%printEM(t) - WRITE(*, "(5X,A21,I10,A1,I10)") "t/tFinal: ", t, "/", tFinal + CALL mesh%printOutput() + IF (ASSOCIATED(meshForMCC)) CALL meshForMCC%printColl() + CALL mesh%printEM() + WRITE(*, "(5X,A21,I10,A1,I10)") "t/tFinal: ", timeStep, "/", tFinal WRITE(*, "(5X,A21,I10)") "Particles: ", nPartOld - IF (t == 0) THEN + IF (timeStep == 0) THEN WRITE(*, "(5X,A21,F8.1,A2)") " init time: ", 1.D3*tStep, "ms" ELSE @@ -549,34 +548,32 @@ MODULE moduleSolver counterCPUTime = counterCPUTime + 1 IF (counterCPUTime >= triggerCPUTime .OR. & - t == tFinal .OR. t == tInitial) THEN + timeStep == tFinal .OR. timeStep == tInitial) THEN !Reset CPU Time counter counterCPUTime = 0 - CALL printTime(t, t == 0) + CALL printTime(timeStep == 0) END IF !Output average values - IF (useAverage .AND. t == tFinal) THEN + IF (useAverage .AND. timeStep == tFinal) THEN CALL mesh%printAverage() END IF END SUBROUTINE doOutput - SUBROUTINE doAverage(t) + SUBROUTINE doAverage() USE moduleAverage USE moduleMesh IMPLICIT NONE - INTEGER, INTENT(in):: t INTEGER:: tAverage, n - IF (useAverage) THEN - tAverage = t - tAverageStart + tAverage = timeStep - tAverageStart IF (tAverage == 1) THEN !First iteration in which average scheme is used From 10dee05922e17d72258fbd432ed1c689f08571ba Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Fri, 12 Jul 2024 23:30:35 +0200 Subject: [PATCH 35/39] NOT WORKING: Compilation okay, but not Dirichlet BC The code compiles but the right BC is not being applied to the vectorF. I'll check this tomorrow. --- src/modules/init/moduleInput.f90 | 12 +- .../solver/electromagnetic/moduleEM.f90 | 126 ++++++++++++------ 2 files changed, 92 insertions(+), 46 deletions(-) diff --git a/src/modules/init/moduleInput.f90 b/src/modules/init/moduleInput.f90 index 6800ac1..eea1937 100644 --- a/src/modules/init/moduleInput.f90 +++ b/src/modules/init/moduleInput.f90 @@ -1148,8 +1148,8 @@ MODULE moduleInput CHARACTER(:), ALLOCATABLE:: typeEM REAL(8):: potential INTEGER:: physicalSurface - CHARACTER(:), ALLOCATABLE:: timeProfile - INTEGER:: b, e, s, n, ni + CHARACTER(:), ALLOCATABLE:: temporalProfile + INTEGER:: b, s, n, ni CHARACTER(2):: bString INTEGER:: info EXTERNAL:: dgetrf @@ -1187,12 +1187,20 @@ MODULE moduleInput END IF + CALL config%get(object // '.temporalProfile', temporalProfile, found) + IF (.NOT. found) THEN + CALL criticalError('Required parameter "potential" for Dirichlet boundary condition not found', 'readEMBoundary') + + END IF + CALL config%get(object // '.physicalSurface', physicalSurface, found) IF (.NOT. found) THEN CALL criticalError('Required parameter "physicalSurface" for Dirichlet boundary condition not found', 'readEMBoundary') END IF + CALL initDirichletTime(boundaryEM(b)%obj, physicalSurface, potential, temporalProfile) + CASE DEFAULT CALL criticalError('Boundary type ' // typeEM // ' not yet supported', 'readEMBoundary') diff --git a/src/modules/solver/electromagnetic/moduleEM.f90 b/src/modules/solver/electromagnetic/moduleEM.f90 index 30a23ad..b480330 100644 --- a/src/modules/solver/electromagnetic/moduleEM.f90 +++ b/src/modules/solver/electromagnetic/moduleEM.f90 @@ -66,20 +66,65 @@ MODULE moduleEM REAL(8), ALLOCATABLE:: qSpecies(:) CONTAINS - ! Initialize Dirichlet boundary condition - SUBROUTINE initDirichlet(self, physicalSurface, potential) + SUBROUTINE findNodes(self, physicalSurface) USE moduleMesh - USE moduleRefParam, ONLY: Volt_ref IMPLICIT NONE - CLASS(boundaryEMGeneric), ALLOCATABLE, INTENT(out):: self - INTEGER:: physicalSurface - REAL(8), INTENT(in):: potential + CLASS(boundaryEMGeneric), INTENT(inout):: self + INTEGER, INTENT(in):: physicalSurface CLASS(meshEdge), POINTER:: edge INTEGER, ALLOCATABLE:: nodes(:), nodesEdge(:) INTEGER:: nNodes, nodesNew INTEGER:: e, n + !Temporal array to hold nodes + ALLOCATE(nodes(0)) + + ! Loop thorugh the edges and identify those that are part of the boundary + DO e = 1, mesh%numEdges + edge => mesh%edges(e)%obj + IF (edge%physicalSurface == physicalSurface) THEN + ! Edge is of the right boundary index + ! Get nodes in the edge + nNodes = edge%nNodes + nodesEdge = edge%getNodes(nNodes) + ! Collect all nodes that are not already in the temporal array + DO n = 1, nNodes + IF (ANY(nodes == nodesEdge(n))) THEN + ! Node already in array, skip + CYCLE + + ELSE + ! If not, add element to array of nodes + nodes = [nodes, nodesEdge(n)] + + END IF + + END DO + + END IF + + END DO + + ! Point boundary to nodes + nNodes = SIZE(nodes) + ALLOCATE(self%nodes(nNodes)) + DO n = 1, nNodes + self%nodes(n)%obj => mesh%nodes(nodes(n))%obj + + END DO + + END SUBROUTINE findNodes + + ! Initialize Dirichlet boundary condition + SUBROUTINE initDirichlet(self, physicalSurface, potential) + USE moduleRefParam, ONLY: Volt_ref + IMPLICIT NONE + + CLASS(boundaryEMGeneric), ALLOCATABLE, INTENT(out):: self + INTEGER, INTENT(in):: physicalSurface + REAL(8), INTENT(in):: potential + ! Allocate boundary edge ALLOCATE(boundaryEMDirichlet:: self) @@ -87,48 +132,39 @@ MODULE moduleEM TYPE IS(boundaryEMDirichlet) self%potential = potential / Volt_ref - !TODO: This is going into a function - !Temporal array to hold nodes - ALLOCATE(nodes(0)) - - ! Loop thorugh the edges and identify those that are part of the boundary - DO e = 1, mesh%numEdges - edge => mesh%edges(e)%obj - IF (edge%physicalSurface == physicalSurface) THEN - ! Edge is of the right boundary index - ! Get nodes in the edge - nNodes = edge%nNodes - nodesEdge = edge%getNodes(nNodes) - ! Collect all nodes that are not already in the temporal array - DO n = 1, nNodes - IF (ANY(nodes == nodesEdge(n))) THEN - ! Node already in array, skip - CYCLE - - ELSE - ! If not, add element to array of nodes - nodes = [nodes, nodesEdge(n)] - - END IF - - END DO - - END IF - - END DO - - ! Point boundary to nodes - nNodes = SIZE(nodes) - ALLOCATE(self%nodes(nNodes)) - DO n = 1, nNodes - self%nodes(n)%obj => mesh%nodes(nodes(n))%obj - - END DO + CALL findNodes(self, physicalSurface) END SELECT END SUBROUTINE initDirichlet + ! Initialize Dirichlet boundary condition + SUBROUTINE initDirichletTime(self, physicalSurface, potential, temporalProfile) + USE moduleRefParam, ONLY: Volt_ref, ti_ref + IMPLICIT NONE + + CLASS(boundaryEMGeneric), ALLOCATABLE, INTENT(out):: self + INTEGER, INTENT(in):: physicalSurface + REAL(8), INTENT(in):: potential + CHARACTER(:), ALLOCATABLE, INTENT(in):: temporalProfile + + ! Allocate boundary edge + ALLOCATE(boundaryEMDirichletTime:: self) + + SELECT TYPE(self) + TYPE IS(boundaryEMDirichletTime) + self%potential = potential / Volt_ref + + CALL findNodes(self, physicalSurface) + + CALL self%temporalProfile%init(temporalProfile) + + CALL self%temporalProfile%convert(1.D0/ti_ref, 1.D0) + + END SELECT + + END SUBROUTINE initDirichletTime + !Apply Dirichlet boundary condition to the poisson equation SUBROUTINE applyDirichlet(self, vectorF) USE moduleMesh @@ -140,6 +176,7 @@ MODULE moduleEM DO n = 1, self%nNodes self%nodes(n)%obj%emData%phi = self%potential + vectorF(self%nodes(n)%obj%n) = self%nodes(n)%obj%emData%phi END DO @@ -156,7 +193,8 @@ MODULE moduleEM INTEGER:: n, ni DO n = 1, self%nNodes - self%nodes(n)%obj%emData%phi = self%potential + self%nodes(n)%obj%emData%phi = self%potential !TODO: Correct for time + vectorF(self%nodes(n)%obj%n) = self%nodes(n)%obj%emData%phi END DO From 2d4b405fb10f203b72a456871ac7bba26c328c1c Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Sat, 13 Jul 2024 12:06:41 +0200 Subject: [PATCH 36/39] Functionality added Now we have a new boundary condition that can change the value of the potential in a surface based on a file. --- src/modules/init/moduleInput.f90 | 25 ++++++++++++------- .../solver/electromagnetic/moduleEM.f90 | 7 ++++-- 2 files changed, 21 insertions(+), 11 deletions(-) diff --git a/src/modules/init/moduleInput.f90 b/src/modules/init/moduleInput.f90 index eea1937..b5f6881 100644 --- a/src/modules/init/moduleInput.f90 +++ b/src/modules/init/moduleInput.f90 @@ -1137,7 +1137,6 @@ MODULE moduleInput USE moduleOutput USE moduleErrors USE moduleEM - USE moduleRefParam USE moduleSpecies USE json_module IMPLICIT NONE @@ -1148,7 +1147,7 @@ MODULE moduleInput CHARACTER(:), ALLOCATABLE:: typeEM REAL(8):: potential INTEGER:: physicalSurface - CHARACTER(:), ALLOCATABLE:: temporalProfile + CHARACTER(:), ALLOCATABLE:: temporalProfile, temporalProfilePath INTEGER:: b, s, n, ni CHARACTER(2):: bString INTEGER:: info @@ -1156,11 +1155,14 @@ MODULE moduleInput CALL config%info('boundaryEM', found, n_children = nBoundaryEM) - IF (found) ALLOCATE(boundaryEM(1:nBoundaryEM)) + IF (found) THEN + ALLOCATE(boundaryEM(1:nBoundaryEM)) + + END IF DO b = 1, nBoundaryEM WRITE(bString, '(I2)') b - object = 'boundaryEM(' // trim(bString) // ')' + object = 'boundaryEM(' // TRIM(bString) // ')' CALL config%get(object // '.type', typeEM, found) @@ -1174,7 +1176,8 @@ MODULE moduleInput CALL config%get(object // '.physicalSurface', physicalSurface, found) IF (.NOT. found) THEN - CALL criticalError('Required parameter "physicalSurface" for Dirichlet boundary condition not found', 'readEMBoundary') + CALL criticalError('Required parameter "physicalSurface" for Dirichlet boundary condition not found', & + 'readEMBoundary') END IF @@ -1183,23 +1186,27 @@ MODULE moduleInput CASE ("dirichletTime") CALL config%get(object // '.potential', potential, found) IF (.NOT. found) THEN - CALL criticalError('Required parameter "potential" for Dirichlet boundary condition not found', 'readEMBoundary') + CALL criticalError('Required parameter "potential" for Dirichlet Time boundary condition not found', & + 'readEMBoundary') END IF CALL config%get(object // '.temporalProfile', temporalProfile, found) IF (.NOT. found) THEN - CALL criticalError('Required parameter "potential" for Dirichlet boundary condition not found', 'readEMBoundary') + CALL criticalError('Required parameter "temporalProfile" for Dirichlet Time boundary condition not found', & + 'readEMBoundary') END IF + temporalProfilePath = path // temporalProfile CALL config%get(object // '.physicalSurface', physicalSurface, found) IF (.NOT. found) THEN - CALL criticalError('Required parameter "physicalSurface" for Dirichlet boundary condition not found', 'readEMBoundary') + CALL criticalError('Required parameter "physicalSurface" for Dirichlet Time boundary condition not found', & + 'readEMBoundary') END IF - CALL initDirichletTime(boundaryEM(b)%obj, physicalSurface, potential, temporalProfile) + CALL initDirichletTime(boundaryEM(b)%obj, physicalSurface, potential, temporalProfilePath) CASE DEFAULT CALL criticalError('Boundary type ' // typeEM // ' not yet supported', 'readEMBoundary') diff --git a/src/modules/solver/electromagnetic/moduleEM.f90 b/src/modules/solver/electromagnetic/moduleEM.f90 index b480330..703b31c 100644 --- a/src/modules/solver/electromagnetic/moduleEM.f90 +++ b/src/modules/solver/electromagnetic/moduleEM.f90 @@ -109,6 +109,7 @@ MODULE moduleEM ! Point boundary to nodes nNodes = SIZE(nodes) ALLOCATE(self%nodes(nNodes)) + self%nNodes = nNodes DO n = 1, nNodes self%nodes(n)%obj => mesh%nodes(nodes(n))%obj @@ -190,10 +191,13 @@ MODULE moduleEM CLASS(boundaryEMDirichletTime), INTENT(in):: self REAL(8), INTENT(inout):: vectorF(:) + REAL(8):: timeFactor INTEGER:: n, ni + timeFactor = self%temporalProfile%get(DBLE(timeStep)*tauMin) + DO n = 1, self%nNodes - self%nodes(n)%obj%emData%phi = self%potential !TODO: Correct for time + self%nodes(n)%obj%emData%phi = self%potential * timeFactor vectorF(self%nodes(n)%obj%n) = self%nodes(n)%obj%emData%phi END DO @@ -274,7 +278,6 @@ MODULE moduleEM ALLOCATE(tempF(1:mesh%numNodes)) !$OMP END SINGLE - !TODO: Is this done every time step??? Then things are gonna be really simple. CALL assembleSourceVector(tempF) !$OMP SINGLE From e4dfba45f8c109748bed005549fd540183543a70 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Sat, 13 Jul 2024 12:13:39 +0200 Subject: [PATCH 37/39] Manual updated New dirichletTime condition is documented. --- doc/user-manual/fpakc_UserManual.pdf | Bin 186195 -> 187186 bytes doc/user-manual/fpakc_UserManual.tex | 18 +++++++++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/doc/user-manual/fpakc_UserManual.pdf b/doc/user-manual/fpakc_UserManual.pdf index ef1494ac62b3a07c882225d34ac2998d565ae727..1666f42de4b56c9b9e049349df1126da6f6f973f 100644 GIT binary patch delta 23768 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 BX|MnQ delta 22743 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�ROsR%jeE-0^P7;y1mUrPre6LOZ?-mUxyFYN8H zsUGV|;X1<)WHfVcq_)Eg)FK1xf#H(CzaVg0Mgt!B-~T_^fcHiK0;u5{N%(U_dJn1`RkXfq?zV2hiY zgu}pC#=+5W2=?LsAs7J$V+lq;U|44nP!zTo;3zD?NXY-)2iX6QhCrCGynsL5^(6hz4{;jqa={naYBMHtpkHV5IB|)Bn*UMF~A2xVkwA(L$SPt zM4@!7!=>pdtSBj3H3(fR0EE4S@?G*oVOg%yxv%HAbf5UOXh*keUZ-o6jd;fC+jKb`ezzPXPVJZ!Sp}_wNZ(4aL9tj$b zc^eW1Mq-%(0UYwZbLnS0Iy96Kv0>U%{ z=o^^L91I2i!Q=x$pqM2C+y|5Rmka(A1b~RZZ2ACA0`>>vMV3Oarw!1JvCl%m*k^(1 zh2bqQ2nqwEv4lY3m~I6a5lC!4Bm|p=LSWHgAgu8Ufv;i(efMHmI5fCIs z@C4CVc_IPC5K~V8S70_OkObo5)0;nghy)S~F95?Gt0F-XNaSBS{Wm3m_6^7MI0*1K zRw6@yo{p(B1Ofjy%DGSq43a=$gdd;6VwX$^Q{15CDn)dlvoQ zlmO;CrWZgc@PCE}aQwfO3qTUAcp`xA@OO^=a~~8F|A8-{F@}O@fC%)0KQ#nH;6NY8 zpdp|j><){9VS-WMJ~(zr0051FD*!%V1aSQyApYArz=J^h!w?L>1bl4+sYOIEG-L z?ZVQi-{R2ngqy|GS zqJ0taf5jXE#ws}gQG)*CD!>VUy8wIvGcmdh;1&rGMjZltSaA8m1(0i69~ zp}YtJa3Kti6*wSnSb@73Lw{NaD2T*dhk*Nl4{847yP#pVMnFLXE+}nx7>^eHKRk*2 zA6`RZCm00Sy)b1#fkuo)1A>o119IuF9&+QKC;$@~3z2~V{DgTJ$p8N#7=}vgdWT1s zMm+==g@qr$P$X7^0%+L%3D|+L90*h^W`6?1z*wUIm}q~Ef`4rT01>No1F#ws%m76L z#Tt@8zrbt>z}y7=iTp3J2uPwol)lI<;Eeg21XFp z3IouvRv2KLf?#a}01>;2fdPw^Kk$qC1^)ZDf^ZNV6Z8O2b65}n$g;mf@(=Vw0cD3d zb%DtJFB(=A1Kz@VQUY|wf{0)MQvB&b0Q!O9a4hHt(6GBDfVHub3y!sh0C9(6jSMgx ziCI~|l!JpYp&tkiFk-tJfM6J|h5+S@(PjW=A+Qq@c42Ax8H~Cu#3M>J_@&W>@ z0Rw`uIzI>jEc%$90nEViAV32Q`Okp;r?CNO0rQmw@C<Il#Yfw^e|G+w^ z;I#vT4+I#DnJmDoCt%+H-S^+w2waG@L0-_X3ldoVG2#gzaKPCZ3PJ!Bjgid&g2C)8 z7qbz_Q%ptx(qp}Bfl+YmszU)^P{I%l20r${C~ZInHaZ1X1TZMA<^vuL8i8pLuoe7w zeEt2<0MM}N2m*rr_2m0ce+S-nv2+4xSoS~=e?KMuQv|?9CV}-f2}MG%XaE$%cwhqd zNg&5CdNeSvfe>Oi2mmO58V3{s7)TSWhf)A|V1*S9uwi-&Xi-?p5dsj6#RniQ%*X&U z34v7v7vC+zWR!paAO2xj0s+*<$)P#`H0@-VPGFyfH1(*Iu$6Eay@ cGItLPHxC~-8(T79lmPE6Wc>WfH&w{~A3jogl>h($ diff --git a/doc/user-manual/fpakc_UserManual.tex b/doc/user-manual/fpakc_UserManual.tex index 13be4cd..e572331 100644 --- a/doc/user-manual/fpakc_UserManual.tex +++ b/doc/user-manual/fpakc_UserManual.tex @@ -585,12 +585,20 @@ make Type of boundary. Accepted values are: \begin{itemize} - \item \textbf{dirichlet}: Elastic reflection of particles. + \item \textbf{dirichlet}: Constant value of electric potential on the surface. + \item \textbf{dirichletTime}: Constant value of the electric potential with a time variable profile. + The value of \textbf{boundaryEM.potential} will be multiplied for the corresponding value in the file \textbf{boundaryEM.temporalProfile}. \end{itemize} - \item \textbf{potential}: Real. - Fixed potential for Dirichlet boundary condition. + \item \textbf{potential}: Real. + Fixed potential for Dirichlet boundary condition. \item \textbf{physicalSurface}: Integer. Identification of the edge in the mesh file. + \item \textbf{temporalProfile}: Character. + Filename of the 2 column file containing the time variable profile. + File must be located in \textbf{output.path}. + The first column is the time in $\unit{s}$. + The second column is the factor that will multiply the value of the boundary. + \end{itemize} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -611,7 +619,7 @@ make \begin{itemize} \item \textbf{A}: Ampere. \item \textbf{Am2}: Ampere per square meter. - This value will be multiplied by the surface of injection. + This value will be multiplied by the area of injection. \item \textbf{sccm}: Standard cubic centimetre. \item \textbf{part/s}: Particles (real) per second. \end{itemize} @@ -717,7 +725,7 @@ make Output file from previous run used as an initial state for the species. The file format must be the same as in \textbf{geometry.meshType} Initial particles are assumed to have a Maxwellian distribution. - File must be located at \textbf{output.path}. + File must be located in \textbf{output.path}. \item \textbf{particlesPerCell}: Integer. Optional. Initial number of particles per cell. From 6f185c418846a518a1afb338e71ab3204b869188 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Sat, 13 Jul 2024 12:35:42 +0200 Subject: [PATCH 38/39] Organizing things Move the array of pointers to the nodes to moduleMesh. --- src/modules/mesh/moduleMesh.f90 | 7 +++++++ src/modules/solver/electromagnetic/moduleEM.f90 | 8 -------- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/modules/mesh/moduleMesh.f90 b/src/modules/mesh/moduleMesh.f90 index f933dd1..7ab3914 100644 --- a/src/modules/mesh/moduleMesh.f90 +++ b/src/modules/mesh/moduleMesh.f90 @@ -59,6 +59,13 @@ MODULE moduleMesh END TYPE meshNodeCont + ! Array of pointers to nodes. + TYPE:: meshNodePointer + CLASS(meshNode), POINTER:: obj + CONTAINS + + END TYPE meshNodePointer + !Type for array of boundary functions (one per species) TYPE, PUBLIC:: fBoundaryGeneric PROCEDURE(boundary_interface), POINTER, NOPASS:: apply => NULL() diff --git a/src/modules/solver/electromagnetic/moduleEM.f90 b/src/modules/solver/electromagnetic/moduleEM.f90 index 703b31c..126f9a6 100644 --- a/src/modules/solver/electromagnetic/moduleEM.f90 +++ b/src/modules/solver/electromagnetic/moduleEM.f90 @@ -4,14 +4,6 @@ MODULE moduleEM USE moduleTable IMPLICIT NONE - ! Array of pointers to nodes. - !TODO: This is probably better in moduleMesh as multiple modules could use this. - TYPE:: meshNodePointer - CLASS(meshNode), POINTER:: obj - CONTAINS - - END TYPE meshNodePointer - ! Generic type for electromagnetic boundary conditions TYPE, PUBLIC, ABSTRACT:: boundaryEMGeneric INTEGER:: nNodes From 2af10acd70850359cf6bfa3fcf1828885271cced Mon Sep 17 00:00:00 2001 From: Jorge Gonzalez Date: Sun, 13 Oct 2024 13:32:57 +0200 Subject: [PATCH 39/39] Issue with injecting current Values were not right in 1D geometry. Fixed. --- src/modules/mesh/1DCart/moduleMesh1DCart.f90 | 2 +- src/modules/mesh/1DRad/moduleMesh1DRad.f90 | 2 +- src/modules/moduleInject.f90 | 19 +++++++++++++++++-- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/modules/mesh/1DCart/moduleMesh1DCart.f90 b/src/modules/mesh/1DCart/moduleMesh1DCart.f90 index f400ab0..bbc72e2 100644 --- a/src/modules/mesh/1DCart/moduleMesh1DCart.f90 +++ b/src/modules/mesh/1DCart/moduleMesh1DCart.f90 @@ -123,7 +123,7 @@ MODULE moduleMesh1DCart self%x = r1(1) - self%surface = 1.D0 / L_ref**2 + self%surface = 1.D0 self%normal = (/ 1.D0, 0.D0, 0.D0 /) diff --git a/src/modules/mesh/1DRad/moduleMesh1DRad.f90 b/src/modules/mesh/1DRad/moduleMesh1DRad.f90 index fd617bd..e260900 100644 --- a/src/modules/mesh/1DRad/moduleMesh1DRad.f90 +++ b/src/modules/mesh/1DRad/moduleMesh1DRad.f90 @@ -123,7 +123,7 @@ MODULE moduleMesh1DRad self%r = r1(1) - self%surface = 1.D0 / L_ref**2 + self%surface = 1.D0 self%normal = (/ 1.D0, 0.D0, 0.D0 /) diff --git a/src/modules/moduleInject.f90 b/src/modules/moduleInject.f90 index 18c7fbb..4f4d23c 100644 --- a/src/modules/moduleInject.f90 +++ b/src/modules/moduleInject.f90 @@ -159,11 +159,26 @@ MODULE moduleInject CASE ("A") !Current in Ampers - fluxPerStep = flow/qe + SELECT TYPE(sp => self%species) + CLASS IS(speciesCharged) + fluxPerStep = flow/(qe*abs(sp%q)) + + CLASS DEFAULT + call criticalError('Attempted to assign a flux in "A" to a species without charge.', 'initInject') + + END SELECT CASE ("Am2") !Input current in Ampers per square meter - fluxPerStep = flow*self%surface*L_ref**2/qe + SELECT TYPE(sp => self%species) + CLASS IS(speciesCharged) + fluxPerStep = flow*self%surface*L_ref**2/(qe*abs(sp%q)) + + CLASS DEFAULT + call criticalError('Attempted to assign a flux in "Am2" to a species without charge.', 'initInject') + + END SELECT + CASE ("part/s") !Input current in Ampers

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 a!`#io+s*0}3&_M^ScYj#5 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