Routine to calculate the rest of the IFE heat transport and plant power balance constituents, not already calculated in IFEPW1 or IFEACP author: P J Knight, CCFE, Culham Science Centre outfile : input integer : output file unit iprint : input integer : switch for writing to output file (1=yes) This routine calculates the rest of the IFE heat transport and plant power balance constituents, not already calculated in routines IFEPW1 or IFEACP. F/MI/PJK/LOGBOOK12, p.67
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | outfile | |||
integer, | intent(in) | :: | iprint |
subroutine ifepw2(outfile,iprint)
!! Routine to calculate the rest of the IFE heat transport
!! and plant power balance constituents, not already calculated in
!! IFEPW1 or IFEACP
!! author: P J Knight, CCFE, Culham Science Centre
!! outfile : input integer : output file unit
!! iprint : input integer : switch for writing to output file (1=yes)
!! This routine calculates the rest of the IFE heat transport
!! and plant power balance constituents, not already calculated in
!! routines <A HREF="ifepw1.html">IFEPW1</A> or
!! <A HREF="ifeacp.html">IFEACP</A>.
!! F/MI/PJK/LOGBOOK12, p.67
!!
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
use cost_variables, only: ireactor, ipnet
use process_output, only: oheadr, osubhd, ovarre, oblnkl, ovarin
use fwbs_variables, only: pnucloss, emult, tbr, pnucblkt
use heat_transport_variables, only: fachtmw, fcsht, psechtmw, pinjht, &
vachtmw, trithtmw, crypmw, pgrossmw, pthermmw, etath, fgrosbop, precircmw, &
pacpmw, pnetelmw, pinjwp, pfwdiv, nphx
use ife_variables, only: tdspmw, tfacmw, htpmw_ife, fauxbop, ifetyp, taufall
implicit none
! Arguments
integer, intent(in) :: outfile,iprint
! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
! Facility heat removal (fcsht calculated in IFEACP)
fachtmw = fcsht
! Total secondary heat
psechtmw = pinjht + pnucloss + fachtmw + vachtmw + trithtmw + &
tdspmw + tfacmw + crypmw + htpmw_ife
! Calculate powers relevant to a power-producing plant
if (ireactor == 1) then
! Gross electric power
pgrossmw = pthermmw * etath
! Balance of plant recirculating power fraction
fgrosbop = min( 0.5D0, ( fauxbop/(pgrossmw/1000.0D0)**0.6D0) )
! Total recirculating power
precircmw = (fgrosbop*pgrossmw) + pacpmw
! Net electric power
pnetelmw = pgrossmw - precircmw
end if
if (iprint == 0) return
! Output section
call oheadr(outfile,'Power / Heat Transport')
call ovarre(outfile,'Fusion power escaping via holes (MW)', '(pnucloss)', pnucloss)
call ovarre(outfile,'Power multiplication factor','(emult)',emult)
if (ifetyp.eq.4) then
call ovarre(outfile,'Tritium Breeding Ratio','(tbr)',tbr)
call ovarre(outfile,'Lithium Fall Time (s)','(taufall)',taufall)
end if
call ovarre(outfile,'Driver wall plug power (MW)','(pinjwp)', pinjwp)
call ovarre(outfile,'First wall nuclear heating (MW)','(pfwdiv)', pfwdiv)
call ovarre(outfile,'Blanket nuclear heating (MW)','(pnucblkt)', pnucblkt)
call ovarre(outfile,'Primary heat (MW)','(pthermmw)', pthermmw)
call ovarre(outfile,'Secondary heat (MW)','(psechtmw)', psechtmw)
call oblnkl(outfile)
call ovarre(outfile,'Heat removal from driver power (MW)', '(pinjht)', pinjht)
call ovarre(outfile,'Heat removal from cryogenic plant (MW)', '(crypmw)', crypmw)
call ovarre(outfile,'Heat removal from vacuum pumps (MW)', '(vachtmw)', vachtmw)
call ovarre(outfile,'Heat removal from target factory (MW)', '(tfacmw)', tfacmw)
call ovarre(outfile,'Heat removal from delivery system (MW)', '(tdspmw)', tdspmw)
call ovarre(outfile,'Heat removal from tritium plant (MW)', '(trithtmw)', trithtmw)
call ovarre(outfile,'Heat removal from facilities (MW)', '(fachtmw)', fachtmw)
call ovarin(outfile,'Number of primary heat exchangers', '(nphx)', nphx)
if (ireactor /= 1) return
call osubhd(outfile,'Reactor powers :')
call ovarre(outfile,'Gross electric power (MW)', '(pgrossmw)', pgrossmw)
call ovarre(outfile,'Net electric power (MW)', '(pnetelmw)', pnetelmw)
call ovarre(outfile,'Balance of plant aux. power fraction', '(fgrosbop)', fgrosbop)
end subroutine ifepw2