Skip to content

Commit

Permalink
Added new constraint to check D/T ratio is equal to 1, subject to f_t…
Browse files Browse the repository at this point in the history
…ritium being ixc
  • Loading branch information
ym1906 committed Feb 19, 2025
1 parent 2519e60 commit 66ddf99
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 4 deletions.
28 changes: 28 additions & 0 deletions source/fortran/constraint_equations.f90
Original file line number Diff line number Diff line change
Expand Up @@ -286,6 +286,8 @@ subroutine constraint_eqns(m,ieqn,cc,con,err,symbol,units)
case (90); call constraint_eqn_090(tmp_cc, tmp_con, tmp_err, tmp_symbol, tmp_units)
! Constraint for indication of ECRH ignitability
case (91); call constraint_eqn_091(tmp_cc, tmp_con, tmp_err, tmp_symbol, tmp_units)
! Constraint for D/T ratio
case (92); call constraint_eqn_092(tmp_cc, tmp_con, tmp_err, tmp_symbol, tmp_units)
case default

idiags(1) = icc(i)
Expand Down Expand Up @@ -3387,6 +3389,32 @@ subroutine constraint_eqn_091(tmp_cc, tmp_con, tmp_err, tmp_symbol, tmp_units)
tmp_units = 'MW'
end subroutine constraint_eqn_091

subroutine constraint_eqn_092(tmp_cc, tmp_con, tmp_err, tmp_symbol, tmp_units)
!! Equation for checking is D/T ratio is consistent, and sums to 1.
!! author: G Turkington, UKAEA
!! args : output structure : residual error; constraint value;
!! residual error in physical units; output string; units string
!! f_deuterium : input : fraction of deuterium ions
!! f_tritium : input : fraction of tritium ions
!! f_helium3 : input : fraction of helium-3 ions
use physics_variables, only: f_deuterium, f_tritium, f_helium3
implicit none
real(dp), intent(out) :: tmp_cc
real(dp), intent(out) :: tmp_con
real(dp), intent(out) :: tmp_err
character(len=1), intent(out) :: tmp_symbol
character(len=10), intent(out) :: tmp_units


! Iterate over f_tritium and calculate f_deuterium
f_deuterium = 1.0D0 - (f_tritium + f_helium3)
tmp_cc = 1.0D0 - (f_deuterium + f_tritium + f_helium3)
tmp_con = 1.0D0
tmp_err = tmp_con * tmp_cc
tmp_symbol = '='
tmp_units = 'fraction'

end subroutine constraint_eqn_092


end module constraints
12 changes: 8 additions & 4 deletions source/fortran/numerics.f90
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ module numerics
integer, parameter :: ipnvars = 175
!! ipnvars FIX : total number of variables available for iteration

integer, parameter :: ipeqns = 91
integer, parameter :: ipeqns = 92
!! ipeqns FIX : number of constraint equations available

integer, parameter :: ipnfoms = 19
Expand Down Expand Up @@ -193,7 +193,9 @@ module numerics
!! <LI> (88) Constraint for TF coil strain absolute value
!! <LI> (89) Constraint for CS coil quench protection
!! <LI> (90) Lower Limit on number of stress load cycles for CS (itr 167 fncycle)
!! <LI> (91) Checking if the design point is ECRH ignitable (itv 168 fecrh_ignition) </UL>
!! <LI> (91) Checking if the design point is ECRH ignitable (itv 168 fecrh_ignition)
!! <LI> (92) D/T/He3 ratio in fuel sums to 1 </UL>


integer, dimension(ipnvars) :: ixc
!! ixc(ipnvars) /0/ :
Expand Down Expand Up @@ -374,7 +376,7 @@ module numerics
!! <LI> (170) beta_div : field line angle wrt divertor target plate (degrees)
!! <LI> (171) casths_fraction : TF side case thickness as fraction of toridal case thickness
!! <LI> (172) casths : TF side case thickness [m]
!! <LI> (173) EMPTY : Description
!! <LI> (173) f_deuterium : Deutterium fraction in fuel
!! <LI> (174) EMPTY : Description
!! <LI> (175) EMPTY : Description
! Issue 287 iteration variables are now defined in module define_iteration_variables in iteration variables.f90
Expand Down Expand Up @@ -545,7 +547,9 @@ subroutine init_numerics()
'TF coil strain absolute value ', &
'CS current/copper area < Max ', &
'CS stress load cycles ', &
'ECRH ignitability ' &
'ECRH ignitability ', &
'D/T ratio = 1 ' &

/)

! Please note: All strings between '...' above must be exactly 33 chars long
Expand Down

0 comments on commit 66ddf99

Please sign in to comment.