Calculate component surface area and volume using elliptical scheme Based on elliptical_blanket, elliptical_shield, elliptical_vv original author: J. Morris, CCFE, Culham Science Centre author: G. Graham, CCFE, Culham Science Centre
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | icomponent |
subroutine elliptical_component(icomponent)
!! Calculate component surface area and volume using elliptical scheme
!! Based on elliptical_blanket, elliptical_shield, elliptical_vv
!! original author: J. Morris, CCFE, Culham Science Centre
!! author: G. Graham, CCFE, Culham Science Centre
!
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
use maths_library, only: eshellarea, eshellvol
use build_variables, only: rsldi, shldith, blnkith, rsldo, shldoth, blnkoth, &
blareaib, blareaob, blarea, blnktth, &
shareaib, shareaob, sharea, shldtth, &
d_vv_in, d_vv_out, d_vv_top, d_vv_bot
use fwbs_variables, only: volblkti, volblkto, volblkt, volshld, vdewin
use physics_variables, only: rmajor, rminor, triang
implicit none
! Input variables
integer, intent(in) :: icomponent
! icomponent - blnkt=0, shld=1, vv=2
! Local variables
real(dp) :: r1, r2, r3
! Major radius to centre of inboard and outboard ellipses (m)
! (coincident in radius with top of plasma)
r1 = rmajor - rminor*triang
! Calculate distance between r1 and outer edge of inboard ...
! ... section (m)
r2 = r1 - rsldi
! ... shield (m)
if (icomponent==1) r2 = r2 - shldith
! ... blanket (m)
if (icomponent==0) r2 = r2 - shldith - blnkith
! Calculate distance between r1 and inner edge of outboard ...
! ... section (m)
r3 = rsldo - r1
! ... shield (m)
if (icomponent==1) r3 = r3 - shldoth
! ... blanket (m)
if (icomponent==0) r3 = r3 - shldoth - blnkoth
! Calculate surface area, assuming 100% coverage
if (icomponent==0) call eshellarea(r1, r2, r3, hblnkt, blareaib, blareaob, blarea)
if (icomponent==1) call eshellarea(r1, r2, r3, hshld, shareaib, shareaob, sharea)
! Calculate volumes, assuming 100% coverage
if (icomponent==0) call eshellvol(r1, r2, r3, hblnkt, blnkith, blnkoth, blnktth, &
volblkti, volblkto, volblkt)
if (icomponent==1) call eshellvol(r1, r2, r3, hshld, shldith, shldoth, shldtth, &
volshldi, volshldo, volshld)
if (icomponent==2) call eshellvol(r1, r2, r3, hvv, d_vv_in, d_vv_out, &
(d_vv_top+d_vv_bot)/2, volvvi, volvvo, vdewin)
end subroutine elliptical_component