// Last edited on 2011-05-08 12:59:34 by stolfi // The pools on the service floor of Unit #4 // All placed in the building's coordinate system unless noted. // All from alleged Unit #4 blueprints - [TBC] #macro un4_pools(C) // The pools on the service floor, and their walls. // Origin is at southwest corner, basement level. intersection{ object{ C texture{ tx_enamel_yellow } } union{ difference{ object{ un4_pools_massive() } object{ un4_refueling_pool_shape(0) } object{ un4_spent_fuel_pool_shape(0) } object{ un4_dryer_storage_pool_shape(0) } } difference{ object{ un4_cask_loading_pool_shape(1) } object{ un4_cask_loading_pool_shape(0) } } texture{ tx_concrete } } } #end #macro un4_pools_massive() // A block comprising the walls of all service floor pools+channels, // with the cavity filled in. union{ object{ un4_refueling_pool_shape(1) } object{ un4_spent_fuel_pool_shape(1) } object{ un4_dryer_storage_pool_shape(1) } // object{ un4_cask_loading_pool_shape(1) } // Inside SFP. } #end // ====================================================================== // REFUELING POOL #macro un4_refueling_pool(C) // The refueling pool and its concrete walls intersection{ object{ C } difference{ object{ un4_refueling_pool(1) } object{ un4_refueling_pool(0) } } texture{ tx_concrete } } #end #macro un4_refueling_pool_shape(ww) // An object to excavate the refueling pool cavity. // Includes the safety shield steps. // If {ww>0}, returns instead the pool walls with the cavity filled in. // Properly placed in the building's coordinate system. // Origin is reactor axis at OP height. object{ #if (ww = 0) un4_shroud_cavity() #else un4_shroud_enclosure_massive() #end translate un4_reactor_axis } #end // ====================================================================== // SPENT-FUEL POOL #macro un4_spent_fuel_pool_shape(ww) // An object to excavate the SFP cavity. // Includes the channel between SFP and shroud cavity. // If {ww>0}, returns instead the pool walls with the cavity filled in. // Properly placed in the building's coordinate system. #local thk = un4_sfp_wall_thk; // Wall thickness. #local ch_thk = un4_sfp_channel_wall_thk; // Wall thickness. // Coordinates of the spent-fuel pool cavity proper: #local sz_X = un4_sfp_size_X; // X size. #local lo_X = un4_sfp_lo_X; // Min X, rel west wall (assuming symmetrical) [TBC]. #local sz_Y = un4_sfp_size_Y; // Y size. #local lo_Y = un4_sfp_lo_Y; // Min Y, rel south wall. #local lo_Z = un4_sfp_lo_Z; // Z of bottom, rel OP. #local hi_Z = un4_service_floor_Z; // Max Z, rel OP. // Coordinates of the channel between it and the shroud cavity: #local ch_wid = un4_sfp_channel_wid; // Width of channel. #local ch_hi_Y = un4_reactor_axis.y - 0.500; // Y of end of channel. #local ch_len = ch_hi_Y - (lo_Y + sz_Y); // Length of channel. #local ch_pos = un4_sfp_channel_md_X; // Coord of channel midline. #local ch_lo_Z = un4_sfp_channel_lo_Z; // Z of channel bottom, rel OP. #local ch_dir = +y; // Direction of channel from pool. #if (ww = 0) object{ generic_pool_cavity( lo_X,sz_X,lo_Y,sz_Y,lo_Z,hi_Z, ch_wid,ch_len,ch_pos,ch_dir,ch_lo_Z) } #else object{ generic_pool_cavity_walls( lo_X,sz_X,lo_Y,sz_Y,lo_Z,hi_Z,thk, ch_wid,ch_len,ch_pos,ch_dir,ch_lo_Z,ch_thk) } #end #end #macro un4_spent_fuel() // The spent fuel inside the SFP. #local lo_X = un4_sfp_lo_X + un4_spent_fuel_W_gap; #local hi_X = un4_sfp_hi_X - un4_spent_fuel_E_gap; #local lo_Y = un4_sfp_lo_Y + un4_spent_fuel_S_gap; #local hi_Y = un4_sfp_hi_Y - un4_spent_fuel_N_gap; #local lo_Z = un4_sfp_lo_Z + un4_spent_fuel_bottom_gap; #local hi_Z = lo_Z + un4_spent_fuel_size_Z; box{ < lo_X, lo_Y, lo_Z > + epsv, < hi_X, hi_Y, hi_Z > - epsv texture{ tx_radio_blue } } #end // ====================================================================== // STEAM-DRYER STORAGE POOL #macro un4_dryer_storage_pool_shape(ww) // An object to excavate the DSP cavity. // Includes the channel between SFP and shroud cavity. // If {ww>0}, returns instead the pool walls with the cavity filled in. // Properly placed in the building's coordinate system. #local thk = un4_dsp_wall_thk; // Wall thickness. #local ch_thk = un4_dsp_channel_wall_thk; // Wall thickness. // Coordinates of the steam-dryer storage pool cavity proper: #local sz_X = un4_dsp_size_X; // X size. #local lo_X = un4_dsp_lo_X; // Min X, rel west wall (assuming symmetrical) [TBC]. #local sz_Y = un4_dsp_size_Y; // Y size. #local lo_Y = un4_dsp_lo_Y; // Min Y, rel south wall. #local lo_Z = un4_dsp_lo_Z; // Z of bottom, rel OP. #local hi_Z = un4_service_floor_Z; // Max Z, rel OP. // Coordinates of the channel between it and the shroud cavity: #local ch_wid = un4_dsp_channel_wid; // Width of channel. #local ch_lo_Y = un4_reactor_axis.y + 0.500; // Y of end of channel. #local ch_len = lo_Y - ch_lo_Y; // Length of chennel. #local ch_pos = un4_reactor_axis.x; // Coord of channel midline. #local ch_lo_Z = un4_dsp_channel_lo_Z; // Z of channel bottom, rel OP. #local ch_dir = -y; // Direction of channel from pool. #if (ww = 0) object{ generic_pool_cavity( lo_X,sz_X,lo_Y,sz_Y,lo_Z,hi_Z, ch_wid,ch_len,ch_pos,ch_dir,ch_lo_Z) } #else object{ generic_pool_cavity_walls( lo_X,sz_X,lo_Y,sz_Y,lo_Z,hi_Z,thk, ch_wid,ch_len,ch_pos,ch_dir,ch_lo_Z,ch_thk) } #end #end // ====================================================================== // CASK-LOADING POOL #macro un4_cask_loading_pool_shape(ww) // An object to excavate the DSP cavity. // Includes the channel between CLP and SFP cavities. // If {ww>0}, returns instead the pool walls with the cavity filled in. // Properly placed in the building's coordinate system. // Coordinates of the cask loading storage pool cavity proper: #local lo_X = un4_clp_block_lo_X; // Min X of clp wall block. #local sz_X = un4_clp_block_size_X; // X size of clp wall block. #local hi_X = lo_X + sz_X; // Max X of clp wall block. #local hi_Y = un4_clp_block_hi_Y; // Max Y of clp wall block. #local sz_Y = un4_clp_block_size_Y; // Y size of clp wall block. #local lo_Y = hi_Y - sz_Y; // Min Y of clp wall block. #local ctr_X = (lo_X + hi_X)/2; // X of center of cavity. #local ctr_Y = (lo_Y + hi_Y)/2; // Y of center of cavity. #local R = un4_clp_cavity_rad; // Radius of cavity. #local lo_Z = un4_clp_lo_Z; // Z of bottom of cavity, rOP. #local hi_Z = un4_clp_hi_Z; // Max Z, rOP. // Coordinates of the channel between it and the SFP cavity: #local ch_wid = un4_clp_channel_wid; // Width of channel. #local ch_len = 0; // Length of channel. #local ch_pos = ctr_Y; // Y coordinate of channel midline. #local ch_lo_Z = un4_clp_channel_lo_Z; // Z of channel bottom, rOP. #local ch_dir = +x; // Direction of channel from pool. #if (ww = 0) union{ cylinder{ < ctr_X, ctr_Y, lo_Z > - eps*z, < ctr_X, ctr_Y, hi_Z > + eps*z, R + eps } object{ generic_pool_channel_cavity( lo_X,sz_X,lo_Y,sz_Y, ch_wid,ch_len,ch_pos,ch_dir,ch_lo_Z) } } #else box{ < lo_X-2*eps, lo_Y+2*eps, lo_Z-2*eps >, < hi_X-eps, hi_Y+eps, hi_Z-eps > } // [sic] #end #end // ====================================================================== // ELEVATOR WELL #macro un4_elevator_well_cavity() // An object to excavate the elevator well. // Properly placed in the building's coordinate system. // Coordinates of the elevator well cavity proper: #local sz_X = un4_elw_size_X; // X size. #local lo_X = un4_elw_lo_X; // Min X, rel west wall. #local hi_X = lo_X + sz_X; // Max X, rel west wall. #local sz_Y = un4_elw_size_Y; // Y size. #local lo_Y = un4_elw_lo_Y; // Min Y, rel south wall. #local hi_Y = lo_Y + sz_Y; // Max Y, rel west wall. #local lo_Z = un4_elw_lo_Z; // Z of bottom, rel OP. #local hi_Z = un4_service_floor_Z; // Max Z, rel OP. box{ - epsv, + epsv } #end // ====================================================================== // SOUTHWEST STAIRWELL #macro un4_SW_staircase_well_cavity() // An object to excavate the well for the SW staircase. // Properly placed in the building's coordinate system. // Coordinates of the well proper: #local sz_X = un4_SW_stw_size_X; // X size. #local lo_X = un4_SW_stw_lo_X; // Min X, rel west wall. #local hi_X = lo_X + sz_X; // Max X, rel west wall. #local sz_Y = un4_SW_stw_size_Y; // Y size. #local lo_Y = un4_SW_stw_lo_Y; // Min Y, rel south wall. #local hi_Y = lo_Y + sz_Y; // Max Y, rel west wall. #local lo_Z = un4_SW_stw_lo_Z; // Z of bottom, rel OP. #local hi_Z = un4_service_floor_Z; // Max Z, rel OP. box{ - epsv, + epsv } #end