From 95f4b5519608632b052ab35884dbac70a7cf57ad Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Tue, 14 Apr 2026 10:51:05 +0200 Subject: [PATCH 1/5] Incorrect value, but sign is right now --- src/modules/mesh/moduleMesh@boundaryEM.f90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/mesh/moduleMesh@boundaryEM.f90 b/src/modules/mesh/moduleMesh@boundaryEM.f90 index 891e34b..eced433 100644 --- a/src/modules/mesh/moduleMesh@boundaryEM.f90 +++ b/src/modules/mesh/moduleMesh@boundaryEM.f90 @@ -163,7 +163,7 @@ submodule(moduleMesh) boundaryEM do n = 1, self%nNodes associate(node => self%nodes(n)%obj) - vectorF(node%n) = vectorF(node%n) + self%electricField + vectorF(node%n) = vectorF(node%n) - self%electricField end associate From 43592f420c67e46b8b5e29c5e45793e5b0138e0b Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Tue, 14 Apr 2026 11:42:48 +0200 Subject: [PATCH 2/5] I was tired of going to input to see the calculation of reference parameters --- src/modules/common/moduleRefParam.f90 | 29 +++++++++++++++++++++++++++ src/modules/init/moduleInput.f90 | 27 +++++-------------------- 2 files changed, 34 insertions(+), 22 deletions(-) diff --git a/src/modules/common/moduleRefParam.f90 b/src/modules/common/moduleRefParam.f90 index 051190b..af85f36 100644 --- a/src/modules/common/moduleRefParam.f90 +++ b/src/modules/common/moduleRefParam.f90 @@ -5,5 +5,34 @@ MODULE moduleRefParam !Reference parameters for non-dimensional problem REAL(8):: L_ref, v_ref, ti_ref, Vol_ref, EF_ref, Volt_ref, B_ref + contains + subroutine calculateDerivedRef() + use moduleConstParam, only: pi, qe, eps_0, kb + implicit none + + !Derived parameters + L_ref = DSQRT(kb*T_ref*eps_0/n_ref)/qe !reference length + v_ref = DSQRT(kb*T_ref/m_ref) !reference velocity + ti_ref = L_ref/v_ref !reference time + Vol_ref = L_ref**3 !reference volume + EF_ref = qe*n_ref*L_ref/eps_0 !reference electric field + Volt_ref = EF_ref*L_ref !reference voltage + B_ref = m_ref / (ti_ref * qe) !reference magnetic field + + if (sigmaVrel_ref == 0.0d0) then + ! No reference cross section provided, check radius + if (r_ref == 0.0d0) then + ! No reference radius provided, use reference length + sigmaVrel_ref = L_ref**2 * v_ref + + else + sigmaVrel_ref = pi*(r_ref+r_ref)**2*v_ref !reference cross section times velocity + + end if + + end if + + end subroutine calculateDerivedRef + END MODULE moduleRefParam diff --git a/src/modules/init/moduleInput.f90 b/src/modules/init/moduleInput.f90 index 97d68c1..8aa9635 100644 --- a/src/modules/init/moduleInput.f90 +++ b/src/modules/init/moduleInput.f90 @@ -111,7 +111,6 @@ MODULE moduleInput !Reads the reference parameters SUBROUTINE readReference(config) USE moduleRefParam - USE moduleConstParam USE moduleErrors USE json_module IMPLICIT NONE @@ -131,30 +130,14 @@ MODULE moduleInput CALL config%get(object // '.temperature', T_ref, found) IF (.NOT. found) CALL criticalError('Reference temperature not found','readReference') - !Derived parameters - L_ref = DSQRT(kb*T_ref*eps_0/n_ref)/qe !reference length - v_ref = DSQRT(kb*T_ref/m_ref) !reference velocity - ti_ref = L_ref/v_ref !reference time - Vol_ref = L_ref**3 !reference volume - EF_ref = qe*n_ref*L_ref/eps_0 !reference electric field - Volt_ref = EF_ref*L_ref !reference voltage - B_ref = m_ref / (ti_ref * qe) !reference magnetic field + ! initialize values for cross sections + sigmaVrel_ref = 0.0d0 + r_ref = 0.0d0 - !If a reference cross section is given, it is used CALL config%get(object // '.sigmaVrel', sigmavRel_ref, found) + CALL config%get(object // '.radius', r_ref, found) - !If not, the reference radius is searched - IF (.NOT. found) THEN - CALL config%get(object // '.radius', r_ref, found) - IF (found) THEN - sigmaVrel_ref = PI*(r_ref+r_ref)**2*v_ref !reference cross section times velocity - - ELSE - sigmaVrel_ref = L_ref**2 * v_ref - - END IF - - END IF + call calculateDerivedRef() END SUBROUTINE readReference From d7fc43b110143ce5f430278f26c2cbfe6390e51f Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Tue, 14 Apr 2026 19:00:41 +0200 Subject: [PATCH 3/5] There is a factor of ~3.7 between the imposed field and the calculated one that I am unable to find. Is it geometry dependent? From 0be8b0160f39dbfe1412ddee9de00bf314a1619a Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Wed, 15 Apr 2026 15:22:10 +0200 Subject: [PATCH 4/5] Formatting --- src/modules/common/moduleRefParam.f90 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/modules/common/moduleRefParam.f90 b/src/modules/common/moduleRefParam.f90 index af85f36..e5e49e1 100644 --- a/src/modules/common/moduleRefParam.f90 +++ b/src/modules/common/moduleRefParam.f90 @@ -26,7 +26,8 @@ MODULE moduleRefParam sigmaVrel_ref = L_ref**2 * v_ref else - sigmaVrel_ref = pi*(r_ref+r_ref)**2*v_ref !reference cross section times velocity + ! Use the reference radius + sigmaVrel_ref = pi*(r_ref+r_ref)**2*v_ref end if From 06a797de49d9afee710fd2132da7e3db167a91ff Mon Sep 17 00:00:00 2001 From: JGonzalez Date: Wed, 15 Apr 2026 16:56:36 +0200 Subject: [PATCH 5/5] Finally! Dividing by the volume of the node gave the right value --- src/modules/mesh/moduleMesh@boundaryEM.f90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/mesh/moduleMesh@boundaryEM.f90 b/src/modules/mesh/moduleMesh@boundaryEM.f90 index eced433..1643cdf 100644 --- a/src/modules/mesh/moduleMesh@boundaryEM.f90 +++ b/src/modules/mesh/moduleMesh@boundaryEM.f90 @@ -163,7 +163,7 @@ submodule(moduleMesh) boundaryEM do n = 1, self%nNodes associate(node => self%nodes(n)%obj) - vectorF(node%n) = vectorF(node%n) - self%electricField + vectorF(node%n) = vectorF(node%n) - self%electricField/node%v end associate