Closed jonmaddock closed 2 weeks ago
In GitLab by @schislet on Apr 16, 2020, 11:51
marked the task Run test suite as completed
In GitLab by @schislet on Apr 16, 2020, 11:51
marked the task Does it change the output? If so, give justifications. as completed
In GitLab by @schislet on Apr 16, 2020, 11:51
marked the task Does it change the output? If so, give justifications. as incomplete
In GitLab by @schislet on Apr 16, 2020, 11:51
marked the task Does it change the output? If so, give justifications. as completed
In GitLab by @schislet on Apr 16, 2020, 15:27
marked the task Does it change the baseline 2019 run? (you may need to run on Freia) as completed
In GitLab by @schislet on Mar 18, 2021, 15:44
closed
In GitLab by @schislet on Mar 20, 2021, 10:32
reopened
In GitLab by @schislet on Mar 20, 2021, 10:54
marked the task Run test suite as incomplete
In GitLab by @schislet on Mar 20, 2021, 10:54
marked the task Does it change the output? If so, give justifications. as incomplete
In GitLab by @schislet on Mar 20, 2021, 10:54
marked the task Does it change the baseline 2019 run? (you may need to run on Freia) as incomplete
In GitLab by @schislet on Mar 23, 2021, 18:19
@mkovari @skahn @stuartmuldrew This is the cost model that I have been using in my work. I've created the issue mainly so that I can merge the changes so they won't get lost, but it's also here if you want to include something like this more broadly. The costs herein are certainly more up to date than the $/kg superconductor unit costs that currently exist for the costs.f90 module.
In GitLab by @mkovari on Mar 24, 2021, 09:17
Not sure what cost_model=3 refers to.
! Cost switch values
! No. | model
! ---- | ------
! 0 | 1990 costs model
! 1 | 2015 Kovari model
! 2 | 2019 STEP model
if (cost_model == 0) then
call costs(nout,0)
else if (cost_model == 1) then
call costs_2015(0,0)
else if (cost_model == 2) then
call costs_step(nout,0)
end if
In GitLab by @schislet on Mar 24, 2021, 11:30
Cost model == 3 is an option I wrote for using the 1990 cost model but with superconductors costed in $/kAm.
On second thought i'll introduce a different switch (with the default to be not to use this model for back compatibility) as everything else is identical between cost models 0 and 3.
In GitLab by @schislet on Mar 24, 2021, 11:45
I've added the switch variable supercond_cost_model instead of using cost_model = 3. When supercond_cost_model = 0 (which is the default) the costs are calculated from $/kg, when supercond_cost_model = 1 the costs are calculated from $/kAm. So far the model is only available when using the 1990 costs module. @mkovari
In GitLab by @schislet on Apr 3, 2021, 12:08
marked the task Run test suite as completed
In GitLab by @schislet on Apr 3, 2021, 12:09
created merge request !407 to address this issue
Hi Jack, I notice that you have created this variable:
superconductor strand critical current density under operating conditions in central solenoid (A/m2). Necessary for the cost calculation in $/kA m
I would have thought that the cost in $/(kA m) was based on the critical current for standard test conditions, not the operating conditions, which obviously the manufacturer doesn't know.
Have I got the wrong end of the stick?
That's calcuated in pfcoil.py
based on the temperature and field calculated during a run. The variable j_crit_str_0
in tfcoil_variables.f90
is the reference conditions.
OK, I see.
In GitLab by @schislet on Apr 14, 2020, 09:01
Associated branch: https://git.ccfe.ac.uk/process/process/-/tree/issue-1037
Summary
The superconducting industry uses the metric $/kAm as the costing figure of merit for superconductors rather than $/kg. A switch has been added into costs.f90 such that when supercond_cost_model = 1, the superconductor costs are calculated using this metric rather than the existing $/kg metric (which is selected by default for supercond_cost_model = 0).
The cost of the superconductor is a function of the operating field, temperature and strain (though we shall assume that the strain on the superconductor itself is zero):
[Strand/Tape Cost ($/kAm) under operating conditions] = [Strand/Tape Cost ($/kAm) under reference conditions] * [Strand/Tape Jc under reference conditions] / [Strand/Tape Jc under operating conditions]
The strand/tape costs ($/kAm) under reference conditions were taken from Cooley 2005 [1] and Cooley 2016 [and back converted into 1990 US$ assuming standard CPI inflation. At 6 T and 4.2 K these are 4.8 $/kAm for Nb3Sn strands (calculated from table 3 of [1]), 1.0 $/kAm for Nb-Ti (calculated from table 2 of [1]) and 47.4 $/kAm for REBCO (calculated from slide 3 of [2]).
The strand/Tape Jcs under reference conditions were calculated by manually calling the critical current scaling laws contained between superconductors.90 and sctfcoil.f90 at 6 T and 4.2 K. The Jcs were collected into the list variable j_crit_str_0.
The strand/tape Jcs under operating conditions are acquired from the variables j_crit_str_pf, j_crit_str_cs and j_crit_str_tf which pull the strand Jcs from sctfcoil.f90 and pfcoil.f90 when they are invoked inside the pfcoil and ohcalc subroutines in pfcoil.f90 and inside the tfspcall subroutine inside sctfcoil.f90.
From there
[Cost ($/m)] = [Cost ($/kAm) under operating conditions] * [Cable peak operating current (kA)]
The cable peak operating currents are acquired from abs(ric(i)/turns(i)) for the pf conductor, abs(ric(nohc)/turns(nohc)) for the cs conductor and cpttf for the tf conductor (converted to kA).
[1] Cooley_2005_Cost_of_strands_0953-2048_18_4_R01.pdf
[2] Cooley_2016.pdf
Checklist
After implementing issue do the following