From 25a9a8052e89427abca610fb538c5c1a6955ecb8 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Thu, 5 Mar 2026 20:35:06 +0100 Subject: [PATCH 1/6] txs auto checkin --- doc/user-manual/fpakc_UserManual.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/user-manual/fpakc_UserManual.tex b/doc/user-manual/fpakc_UserManual.tex index 7a17942..68f7eea 100644 --- a/doc/user-manual/fpakc_UserManual.tex +++ b/doc/user-manual/fpakc_UserManual.tex @@ -853,7 +853,7 @@ make 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. + The same mesh file (\lstinline|mesh.csv|) is used for both cases. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{0D \ce{Ar}-\ce{Ar+} Elastic Collision (0D\_Argon)} From 1951c8e5d3f8362b8e97349bf5449599fec0658b Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Thu, 5 Mar 2026 20:43:12 +0100 Subject: [PATCH 2/6] txs auto checkin --- doc/user-manual/fpakc_UserManual.tex | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/user-manual/fpakc_UserManual.tex b/doc/user-manual/fpakc_UserManual.tex index 68f7eea..bc6e69c 100644 --- a/doc/user-manual/fpakc_UserManual.tex +++ b/doc/user-manual/fpakc_UserManual.tex @@ -50,6 +50,7 @@ \newglossaryentry{gitlab}{name={GitLab},description={GitLab is a web-based lifecycle tool that provides a \Gls{git}-repository manager}} \newglossaryentry{gmsh}{name={Gmsh},description={A three-dimensional finite element mesh generator with built-in pre- and post-processing facilities.}} \newglossaryentry{gnuplot}{name={Gnuplot},description={A portable command-line driven graphing utility for Linux, OS/2, MS Windows, OSX, VMS, and many other platforms.}} +\newglossaryentry{paraview}{name={ParaView},description={Tool for post-processing and visualizing data from various formats like vtu.}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \bibliography{bibliography} From e62307078fe4564848928761df09f50b5a51d080 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Thu, 5 Mar 2026 20:43:19 +0100 Subject: [PATCH 3/6] txs auto checkin --- doc/user-manual/fpakc_UserManual.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/user-manual/fpakc_UserManual.tex b/doc/user-manual/fpakc_UserManual.tex index bc6e69c..fb5a37d 100644 --- a/doc/user-manual/fpakc_UserManual.tex +++ b/doc/user-manual/fpakc_UserManual.tex @@ -847,7 +847,7 @@ make \chapter{Example runs}\label{ch:exampleRuns} This chapter presents a description of the different example files distributed with \acrshort{fpakc}. All examples in the repository have a \lstinline|README.txt| file and a reference output. - Plotting of the output is done with \Gls{gnuplot} or \Gls{gmsh}. + Plotting of the output is done with \Gls{gnuplot} or \Gls{paraview}. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{1D Emissive Cathode (1D\_Cathode)} From 4bcc96da44f09a60c9f623a3ed82f51f30c9bbef Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Thu, 5 Mar 2026 20:45:15 +0100 Subject: [PATCH 4/6] txs auto checkin --- doc/user-manual/fpakc_UserManual.tex | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/user-manual/fpakc_UserManual.tex b/doc/user-manual/fpakc_UserManual.tex index fb5a37d..c2dfd9e 100644 --- a/doc/user-manual/fpakc_UserManual.tex +++ b/doc/user-manual/fpakc_UserManual.tex @@ -48,9 +48,9 @@ \newglossaryentry{openblas}{name={OpenBLAS},description={Open-source implementation of BLAS and LAPACK APIs}} \newglossaryentry{git}{name={Git},description={Git is a distributed version-control system for tracking changes in a set of files}} \newglossaryentry{gitlab}{name={GitLab},description={GitLab is a web-based lifecycle tool that provides a \Gls{git}-repository manager}} -\newglossaryentry{gmsh}{name={Gmsh},description={A three-dimensional finite element mesh generator with built-in pre- and post-processing facilities.}} -\newglossaryentry{gnuplot}{name={Gnuplot},description={A portable command-line driven graphing utility for Linux, OS/2, MS Windows, OSX, VMS, and many other platforms.}} -\newglossaryentry{paraview}{name={ParaView},description={Tool for post-processing and visualizing data from various formats like vtu.}} +\newglossaryentry{gmsh}{name={Gmsh},description={A three-dimensional finite element mesh generator with built-in pre- and post-processing facilities}} +\newglossaryentry{gnuplot}{name={Gnuplot},description={A portable command-line driven graphing utility for Linux, OS/2, MS Windows, OSX, VMS, and many other platforms}} +\newglossaryentry{paraview}{name={ParaView},description={Tool for post-processing and visualizing data from various formats like vtu}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \bibliography{bibliography} From 3a4bf7413d2e4235eff7dbb65e4e1a38098afc64 Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Thu, 5 Mar 2026 20:49:24 +0100 Subject: [PATCH 5/6] Manual updated. at some point I should rewrite it completely. --- doc/user-manual/fpakc_UserManual.pdf | Bin 272319 -> 272414 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/doc/user-manual/fpakc_UserManual.pdf b/doc/user-manual/fpakc_UserManual.pdf index 8af12d547b22940cdd691c698dcf585bd2873bd8..3f860318f241b54f75f8bdcf798297b566d02304 100644 GIT binary patch delta 4331 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 From 5d82ea2ddcb59a816fa32111b064c46cefe43bce Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Fri, 6 Mar 2026 09:30:33 +0100 Subject: [PATCH 6/6] Code cleanup --- src/modules/init/moduleInput.f90 | 56 +++++++++---------- src/modules/mesh/0D/moduleMesh0D.f90 | 18 +++--- src/modules/mesh/1DCart/moduleMesh1DCart.f90 | 2 +- src/modules/mesh/1DRad/moduleMesh1DRad.f90 | 2 +- .../mesh/inout/0D/moduleMeshInput0D.f90 | 2 +- .../mesh/inout/text/moduleMeshInputText.f90 | 1 + .../mesh/inout/text/moduleMeshOutputText.f90 | 1 - .../mesh/moduleMesh@boundaryParticle.f90 | 2 +- src/modules/mesh/moduleMeshCommon.f90 | 8 +-- src/modules/moduleCollisions.f90 | 2 +- src/modules/moduleInject.f90 | 16 +++--- src/modules/moduleProbe.f90 | 1 - .../solver/electromagnetic/moduleEM.f90 | 1 - src/modules/solver/pusher/modulePusher.f90 | 4 +- 14 files changed, 56 insertions(+), 60 deletions(-) diff --git a/src/modules/init/moduleInput.f90 b/src/modules/init/moduleInput.f90 index 077e9d6..9494517 100644 --- a/src/modules/init/moduleInput.f90 +++ b/src/modules/init/moduleInput.f90 @@ -509,6 +509,7 @@ MODULE moduleInput USE moduleRefParam USE moduleList USE json_module + use moduleMesh, only: qSpecies IMPLICIT NONE TYPE(json_file), INTENT(inout):: config @@ -517,7 +518,7 @@ MODULE moduleInput CHARACTER(:), ALLOCATABLE:: speciesType REAL(8):: mass, charge LOGICAL:: found - INTEGER:: i + INTEGER:: s CHARACTER(:), ALLOCATABLE:: linkName INTEGER:: linkID @@ -529,8 +530,8 @@ MODULE moduleInput ALLOCATE(species(1:nSpecies)) !Reads information of individual species - DO i = 1, nSpecies - WRITE(iString, '(I2)') i + DO s = 1, nSpecies + WRITE(iString, '(I2)') s object = 'species(' // TRIM(iString) // ')' CALL config%get(object // '.type', speciesType, found) CALL config%get(object // '.mass', mass, found) @@ -539,12 +540,12 @@ MODULE moduleInput !Allocate species depending on type and assign specific parameters SELECT CASE(speciesType) CASE ("neutral") - ALLOCATE(species(i)%obj, source=speciesNeutral()) + ALLOCATE(species(s)%obj, source=speciesNeutral()) CASE ("charged") CALL config%get(object // '.charge', charge, found) IF (.NOT. found) CALL criticalError("Required parameter charge not found for species " // object, 'readSpecies') - ALLOCATE(species(i)%obj, source=speciesCharged(q = charge, & + ALLOCATE(species(s)%obj, source=speciesCharged(q = charge, & qm = charge/mass)) CASE DEFAULT @@ -552,18 +553,32 @@ MODULE moduleInput END SELECT !Assign shared parameters for all species - CALL config%get(object // '.name', species(i)%obj%name, found) - CALL config%get(object // '.weight', species(i)%obj%weight, found) - species(i)%obj%n = i - species(i)%obj%m = mass + CALL config%get(object // '.name', species(s)%obj%name, found) + CALL config%get(object // '.weight', species(s)%obj%weight, found) + species(s)%obj%n = s + species(s)%obj%m = mass + + END DO + + ! Allocate the vector with the species charges for calculating the EM field + ALLOCATE(qSpecies(1:nSpecies)) + DO s = 1, nSpecies + SELECT TYPE(sp => species(s)%obj) + TYPE IS (speciesCharged) + qSpecies(s) = sp%q + + CLASS DEFAULT + qSpecies(s) = 0.D0 + + END SELECT END DO !Read relations between species - DO i = 1, nSpecies - WRITE(iString, '(I2)') i + DO s = 1, nSpecies + WRITE(iString, '(I2)') s object = 'species(' // TRIM(iString) // ')' - SELECT TYPE(sp => species(i)%obj) + SELECT TYPE(sp => species(s)%obj) TYPE IS (speciesNeutral) !Get species linked ion CALL config%get(object // '.ion', linkName, found) @@ -921,7 +936,7 @@ MODULE moduleInput TYPE(json_file), INTENT(inout):: config CHARACTER(:), ALLOCATABLE:: object LOGICAL:: found - INTEGER:: b, s + INTEGER:: b CHARACTER(2):: bString character(:), allocatable:: bType @@ -976,20 +991,6 @@ MODULE moduleInput end do - ! TODO: Move this to the init of species - ALLOCATE(qSpecies(1:nSpecies)) - DO s = 1, nSpecies - SELECT TYPE(sp => species(s)%obj) - TYPE IS (speciesCharged) - qSpecies(s) = sp%q - - CLASS DEFAULT - qSpecies(s) = 0.D0 - - END SELECT - - END DO - END SUBROUTINE readBoundaryEM subroutine readPhysicalSurfaces(config) @@ -1081,7 +1082,6 @@ MODULE moduleInput integer:: b, ps, s integer:: e integer:: nVolColl - integer:: boundaryIndex object = 'geometry' diff --git a/src/modules/mesh/0D/moduleMesh0D.f90 b/src/modules/mesh/0D/moduleMesh0D.f90 index 133ae8e..21bfde8 100644 --- a/src/modules/mesh/0D/moduleMesh0D.f90 +++ b/src/modules/mesh/0D/moduleMesh0D.f90 @@ -43,7 +43,7 @@ MODULE moduleMesh0D CLASS(meshNode0D), INTENT(out):: self INTEGER, INTENT(in):: n - REAL(8), INTENT(in):: r(1:3) !Unused variable + REAL(8), INTENT(in):: r(1:3) ! NOTE: Required by interface but unused self%n = n @@ -117,7 +117,7 @@ MODULE moduleMesh0D PURE FUNCTION fPsi0D(Xi, nNodes) RESULT(fPsi) IMPLICIT NONE - REAL(8), INTENT(in):: Xi(1:3) + REAL(8), INTENT(in):: Xi(1:3) ! NOTE: Required by interface but unused INTEGER, INTENT(in):: nNodes REAL(8):: fPsi(1:nNodes) @@ -128,7 +128,7 @@ MODULE moduleMesh0D PURE FUNCTION dPsi0D(Xi, nNodes) RESULT(dPsi) IMPLICIT NONE - REAL(8), INTENT(in):: Xi(1:3) + REAL(8), INTENT(in):: Xi(1:3) ! NOTE: Required by interface but unused INTEGER, INTENT(in):: nNodes REAL(8):: dPsi(1:3,1:nNodes) @@ -142,7 +142,7 @@ MODULE moduleMesh0D CLASS(meshCell0D), INTENT(in):: self INTEGER, INTENT(in):: nNodes REAL(8), INTENT(in):: dPsi(1:3,1:nNodes) - REAL(8):: pDer(1:3, 1:3) + REAL(8):: pDer(1:3, 1:3) ! NOTE: Required by interface but unused pDer = 0.D0 @@ -205,7 +205,7 @@ MODULE moduleMesh0D IMPLICIT NONE CLASS(meshCell0D), INTENT(in):: self - REAL(8), INTENT(in):: r(1:3) + REAL(8), INTENT(in):: r(1:3) ! NOTE: Required by interface but unused REAL(8):: xN(1:3) xN = 0.D0 @@ -215,7 +215,7 @@ MODULE moduleMesh0D PURE FUNCTION inside0D(Xi) RESULT(ins) IMPLICIT NONE - REAL(8), INTENT(in):: Xi(1:3) + REAL(8), INTENT(in):: Xi(1:3) ! NOTE: Required by interface but unused LOGICAL:: ins ins = .TRUE. @@ -226,7 +226,7 @@ MODULE moduleMesh0D IMPLICIT NONE CLASS(meshCell0D), INTENT(in):: self - REAL(8), INTENT(in):: Xi(1:3) + REAL(8), INTENT(in):: Xi(1:3) ! NOTE: Required by interface but unused CLASS(meshElement), POINTER, INTENT(out):: neighbourElement neighbourElement => NULL() @@ -237,7 +237,7 @@ MODULE moduleMesh0D PURE FUNCTION detJ0D(pDer) RESULT(dJ) IMPLICIT NONE - REAL(8), INTENT(in):: pDer(1:3, 1:3) + REAL(8), INTENT(in):: pDer(1:3, 1:3) ! NOTE: Required by interface but unused REAL(8):: dJ dJ = 0.D0 @@ -247,7 +247,7 @@ MODULE moduleMesh0D PURE FUNCTION invJ0D(pDer) RESULT(invJ) IMPLICIT NONE - REAL(8), INTENT(in):: pDer(1:3, 1:3) + REAL(8), INTENT(in):: pDer(1:3, 1:3) ! NOTE: Required by interface but unused REAL(8):: invJ(1:3,1:3) invJ = 0.D0 diff --git a/src/modules/mesh/1DCart/moduleMesh1DCart.f90 b/src/modules/mesh/1DCart/moduleMesh1DCart.f90 index 25a3fd7..117b77d 100644 --- a/src/modules/mesh/1DCart/moduleMesh1DCart.f90 +++ b/src/modules/mesh/1DCart/moduleMesh1DCart.f90 @@ -156,7 +156,7 @@ MODULE moduleMesh1DCart IMPLICIT NONE CLASS(meshEdge1DCart), INTENT(in):: self - REAL(8), DIMENSION(1:3), INTENT(in):: r0 + REAL(8), DIMENSION(1:3), INTENT(in):: r0 ! NOTE: Required by interface but unused REAL(8), DIMENSION(1:3):: r r = (/ self%x, 0.D0, 0.D0 /) diff --git a/src/modules/mesh/1DRad/moduleMesh1DRad.f90 b/src/modules/mesh/1DRad/moduleMesh1DRad.f90 index ca09561..3f6df2b 100644 --- a/src/modules/mesh/1DRad/moduleMesh1DRad.f90 +++ b/src/modules/mesh/1DRad/moduleMesh1DRad.f90 @@ -156,7 +156,7 @@ MODULE moduleMesh1DRad IMPLICIT NONE CLASS(meshEdge1DRad), INTENT(in):: self - REAL(8), DIMENSION(1:3), INTENT(in):: r0 + REAL(8), DIMENSION(1:3), INTENT(in):: r0 ! NOTE: Required by interface but unused REAL(8), DIMENSION(1:3):: r r = (/ self%r, 0.D0, 0.D0 /) diff --git a/src/modules/mesh/inout/0D/moduleMeshInput0D.f90 b/src/modules/mesh/inout/0D/moduleMeshInput0D.f90 index d968ba3..798d2b2 100644 --- a/src/modules/mesh/inout/0D/moduleMeshInput0D.f90 +++ b/src/modules/mesh/inout/0D/moduleMeshInput0D.f90 @@ -34,7 +34,7 @@ MODULE moduleMeshInput0D IMPLICIT NONE CLASS(meshGeneric), INTENT(inout):: self - CHARACTER(:), ALLOCATABLE, INTENT(in):: filename !Dummy file, not used + CHARACTER(:), ALLOCATABLE, INTENT(in):: filename ! NOTE: Required by interface but unused REAL(8):: r(1:3) !Allocates one node diff --git a/src/modules/mesh/inout/text/moduleMeshInputText.f90 b/src/modules/mesh/inout/text/moduleMeshInputText.f90 index 9946bba..c5fe9ef 100644 --- a/src/modules/mesh/inout/text/moduleMeshInputText.f90 +++ b/src/modules/mesh/inout/text/moduleMeshInputText.f90 @@ -197,6 +197,7 @@ module moduleMeshInputText fileID = 10 open(fileID, file=trim(filename)) + nNodes = 0 do read(fileID, *, iostat=reason) line diff --git a/src/modules/mesh/inout/text/moduleMeshOutputText.f90 b/src/modules/mesh/inout/text/moduleMeshOutputText.f90 index d69ddda..e243c80 100644 --- a/src/modules/mesh/inout/text/moduleMeshOutputText.f90 +++ b/src/modules/mesh/inout/text/moduleMeshOutputText.f90 @@ -27,7 +27,6 @@ module moduleMeshOutputText subroutine writeCollOutput(self, fileID) use moduleMesh use moduleCollisions - use moduleRefParam, only: L_ref implicit none class(meshGeneric), intent(in):: self diff --git a/src/modules/mesh/moduleMesh@boundaryParticle.f90 b/src/modules/mesh/moduleMesh@boundaryParticle.f90 index 9e79835..de4edee 100644 --- a/src/modules/mesh/moduleMesh@boundaryParticle.f90 +++ b/src/modules/mesh/moduleMesh@boundaryParticle.f90 @@ -99,7 +99,6 @@ submodule(moduleMesh) boundaryParticle implicit none class(boundaryParticleGeneric), allocatable, intent(inout):: boundary - integer:: e, et allocate(boundaryQuasiNeutrality:: boundary) @@ -336,6 +335,7 @@ submodule(moduleMesh) boundaryParticle real(8):: EF_dir real(8):: alpha + alpha = 0.85d0 if (associated(edge%e1)) then cell => edge%e1 diff --git a/src/modules/mesh/moduleMeshCommon.f90 b/src/modules/mesh/moduleMeshCommon.f90 index ee5f13b..e4413aa 100644 --- a/src/modules/mesh/moduleMeshCommon.f90 +++ b/src/modules/mesh/moduleMeshCommon.f90 @@ -28,7 +28,7 @@ module moduleMeshCommon pure function fPsiPoint(Xi, nNodes) RESULT(fPsi) implicit none - real(8), intent(in):: Xi(1:3) + real(8), intent(in):: Xi(1:3) ! NOTE: Required by interface but unused integer, intent(in):: nNodes real(8):: fPsi(1:nNodes) @@ -104,7 +104,7 @@ module moduleMeshCommon pure function dPsiSegm(Xi, nNodes) result(dPsi) implicit none - real(8), intent(in):: Xi(1:3) + real(8), intent(in):: Xi(1:3) ! NOTE: Required by interface but unused integer, intent(in):: nNodes real(8):: dPsi(1:3,1:nNodes) @@ -142,7 +142,7 @@ module moduleMeshCommon pure function dPsiTria(Xi, nNodes) result(dPsi) implicit none - real(8), intent(in):: Xi(1:3) + real(8), intent(in):: Xi(1:3) ! NOTE: Required by interface but unused integer, intent(in):: nNodes real(8):: dPsi(1:3,1:nNodes) @@ -157,7 +157,7 @@ module moduleMeshCommon pure function dPsiTetra(Xi, nNodes) result(dPsi) implicit none - real(8), intent(in):: Xi(1:3) + real(8), intent(in):: Xi(1:3) ! NOTE: Required by interface but unused integer, intent(in):: nNodes real(8):: dPsi(1:3, 1:nNodes) diff --git a/src/modules/moduleCollisions.f90 b/src/modules/moduleCollisions.f90 index 36eca2e..dfe2338 100644 --- a/src/modules/moduleCollisions.f90 +++ b/src/modules/moduleCollisions.f90 @@ -553,7 +553,7 @@ MODULE moduleCollisions IMPLICIT NONE CLASS(collisionBinaryChargeExchange), INTENT(in):: self - REAL(8), INTENT(in):: vRel + REAL(8), INTENT(in):: vRel ! NOTE: Required by itnerface but unused TYPE(particle), INTENT(inout), TARGET:: part_i, part_j SELECT TYPE(sp => part_i%species) diff --git a/src/modules/moduleInject.f90 b/src/modules/moduleInject.f90 index 44c0f80..324d83b 100644 --- a/src/modules/moduleInject.f90 +++ b/src/modules/moduleInject.f90 @@ -48,9 +48,7 @@ MODULE moduleInject REAL(8):: tauInject REAL(8), INTENT(in):: flow CHARACTER(:), ALLOCATABLE, INTENT(in):: units - INTEGER:: e, et - INTEGER:: phSurface(1:mesh%numEdges) - INTEGER:: nVolColl + INTEGER:: e REAL(8):: fluxPerStep = 0.D0 self%id = i @@ -70,8 +68,8 @@ MODULE moduleInject !Calculates total area self%surface = 0.D0 - DO et = 1, self%nEdges - self%surface = self%surface + self%edges(et)%obj%surface + DO e = 1, self%nEdges + self%surface = self%surface + self%edges(e)%obj%surface END DO @@ -121,8 +119,8 @@ MODULE moduleInject IF (particlesPerEdge > 0) THEN ! Particles per edge defined by the user self%particlesPerEdge = particlesPerEdge - DO et = 1, self%nEdges - self%weightPerEdge(et) = fluxPerStep * self%edges(et)%obj%surface / real(particlesPerEdge) + DO e = 1, self%nEdges + self%weightPerEdge(e) = fluxPerStep * self%edges(e)%obj%surface / real(particlesPerEdge) END DO @@ -131,8 +129,8 @@ MODULE moduleInject ELSE ! No particles assigned per edge, use the species weight self%weightPerEdge = self%species%weight - DO et = 1, self%nEdges - self%particlesPerEdge(et) = max(1,FLOOR(fluxPerStep*self%edges(et)%obj%surface / self%species%weight)) + DO e = 1, self%nEdges + self%particlesPerEdge(e) = max(1,FLOOR(fluxPerStep*self%edges(e)%obj%surface / self%species%weight)) END DO self%nParticles = SUM(self%particlesPerEdge) diff --git a/src/modules/moduleProbe.f90 b/src/modules/moduleProbe.f90 index 754d56a..1e1339e 100644 --- a/src/modules/moduleProbe.f90 +++ b/src/modules/moduleProbe.f90 @@ -253,7 +253,6 @@ MODULE moduleProbe END SUBROUTINE doProbes SUBROUTINE outputProbes() - USE moduleCaseParam, ONLY: timeStep IMPLICIT NONE INTEGER:: i diff --git a/src/modules/solver/electromagnetic/moduleEM.f90 b/src/modules/solver/electromagnetic/moduleEM.f90 index b8d9b55..4b115aa 100644 --- a/src/modules/solver/electromagnetic/moduleEM.f90 +++ b/src/modules/solver/electromagnetic/moduleEM.f90 @@ -121,7 +121,6 @@ MODULE moduleEM REAL(8), INTENT(in):: phi(1:n) REAL(8):: n_e(1:n) REAL(8):: n_e0 = 1.0D16, phi_0 = -500.0D0, T_e = 11604.0 - INTEGER:: i n_e = n_e0 / n_ref * exp(qe * (phi*Volt_ref - phi_0) / (kb * T_e)) diff --git a/src/modules/solver/pusher/modulePusher.f90 b/src/modules/solver/pusher/modulePusher.f90 index f75c733..a7dac57 100644 --- a/src/modules/solver/pusher/modulePusher.f90 +++ b/src/modules/solver/pusher/modulePusher.f90 @@ -231,8 +231,8 @@ MODULE modulePusher USE moduleSpecies IMPLICIT NONE - TYPE(particle), INTENT(inout):: part - REAL(8), INTENT(in):: tauIn + TYPE(particle), INTENT(inout):: part ! NOTE: Required by interface but unused + REAL(8), INTENT(in):: tauIn ! NOTE: Required by interface but unused END SUBROUTINE push0D