elliptical_component Subroutine

public 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

Arguments

Type IntentOptional AttributesName
integer, intent(in) :: icomponent

Contents

Source Code


Source Code

    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