// Last edited on 2011-05-08 12:49:57 by stolfi // The pools on the service floor // All placed in the building's coordinate system unless noted. #macro un1_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 } } difference{ object{ un1_pools_massive() } object{ un1_refueling_pool_shape(0) } object{ un1_spent_fuel_pool_shape(0) } object{ un1_dryer_storage_pool_shape(0) } object{ un1_cask_loading_pool_shape(0) } object{ un1_elevator_well_cavity(0) } texture{ tx_concrete } } } #end #macro un1_pools_massive() // A block comprising the walls of all service floor pools+channels, // with the cavity filled in. union{ object{ un1_refueling_pool_shape(1) } object{ un1_spent_fuel_pool_shape(1) } object{ un1_dryer_storage_pool_shape(1) } object{ un1_cask_loading_pool_shape(1) } object{ un1_elevator_well_cavity(1) } } #end #macro un1_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) un1_shroud_cavity() #else un1_shroud_enclosure_massive() #end translate un1_reactor_axis } #end #macro un1_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 = un1_sfp_wall_thk; // Wall thickness. #local ch_thk = un1_sfp_channel_wall_thk; // Wall thickness. // Coordinates of the spent-fuel pool cavity proper: #local sz_X = un1_sfp_size_X; // X size. #local md_X = un1_reactor_axis.x; // Middle X, rel west wall. #local lo_X = md_X - sz_X/2; // Min X, rel west wall (assuming symmetrical) [TBC]. #local sz_Y = un1_sfp_size_Y; // Y size. #local lo_Y = un1_sfp_lo_Y; // Min Y, rel south wall. #local lo_Z = un1_sfp_lo_Z; // Z of bottom, rel OP. #local hi_Z = un1_service_floor_Z; // Max Z, rel OP. // Coordinates of the channel between it and the shroud cavity: #local ch_wid = un1_sfp_channel_wid; // Width of channel. #local ch_hi_Y = un1_reactor_axis.y - 0.500; // Y of end of channel. #local ch_len = ch_hi_Y - (lo_Y + sz_Y); // Length of chennel. #local ch_pos = md_X; // Coord of channel midline. #local ch_lo_Z = un1_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 un1_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 = un1_dsp_wall_thk; // Wall thickness. #local ch_thk = un1_dsp_channel_wall_thk; // Wall thickness. // Coordinates of the steam-dryer storage pool cavity proper: #local sz_X = un1_dsp_size_X; // X size. #local md_X = un1_reactor_axis.x; // Middle X, rel west wall. #local lo_X = md_X - sz_X/2; // Min X, rel west wall (assuming symmetrical) [TBC]. #local sz_Y = un1_dsp_size_Y; // Y size. #local lo_Y = un1_dsp_lo_Y; // Min Y, rel south wall. #local lo_Z = un1_dsp_lo_Z; // Z of bottom, rel OP. #local hi_Z = un1_service_floor_Z; // Max Z, rel OP. // Coordinates of the channel between it and the shroud cavity: #local ch_wid = un1_dsp_channel_wid; // Width of channel. #local ch_lo_Y = un1_reactor_axis.y + 0.500; // Y of end of channel. #local ch_len = lo_Y - ch_lo_Y; // Length of chennel. #local ch_pos = md_X; // Coord of channel midline. #local ch_lo_Z = un1_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 #macro un1_cask_loading_pool_shape(ww) // An object to excavate the DSP cavity. // Includes the channel between CLP and DSP cavities. // If {ww>0}, returns instead the pool walls with the cavity filled in. // Properly placed in the building's coordinate system. #local thk = un1_clp_wall_thk; // Wall thickness. #local ch_thk = un1_clp_channel_wall_thk; // Wall thickness. // Coordinates of the cask loading storage pool cavity proper: #local sz_X = un1_clp_size_X; // X size. #local lo_X = un1_clp_lo_X; // Min X, rel west wall. #local elw_lo_Y = un1_elw_lo_Y; // Min Y of elevator well. #local elw_sz_Y = un1_elw_size_Y; // Y size of elevator well. #local md_Y = elw_lo_Y + elw_sz_Y/2; // Midline Y. #local sz_Y = un1_clp_size_Y; // Y size. #local lo_Y = md_Y - sz_Y/2; // Min Y, rel south wall. #local lo_Z = un1_clp_lo_Z; // Z of bottom, rel OP. #local hi_Z = un1_service_floor_Z; // Max Z, rel OP. // Coordinates of the channel between it and the SFP cavity: #local ch_wid = un1_clp_channel_wid; // Width of channel. #local ch_hi_X = un1_reactor_axis.x - 0.500; // X of end of channel. #local ch_len = ch_hi_X - (lo_X + sz_X); // Length of channel. #local ch_pos = md_Y; // Coord of channel midline. #local ch_lo_Z = un1_clp_channel_lo_Z; // Z of channel bottom, rel OP. #local ch_dir = +x; // 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 un1_elevator_well_cavity(ww) // An object to excavate the elevator well cavity. // If {ww>0}, returns instead the pool walls with the cavity filled in. // Includes the channel between ELW and CLP cavities. // Properly placed in the building's coordinate system. #local thk = un1_elw_wall_thk; // Wall thickness. #local ch_thk = un1_elw_channel_wall_thk; // Wall thickness. // Coordinates of the elevator well cavity proper: #local sz_X = un1_elw_size_X; // X size. #local lo_X = un1_elw_lo_X; // Min X, rel west wall. #local sz_Y = un1_elw_size_Y; // Y size. #local lo_Y = un1_elw_lo_Y; // Min Y, rel south wall. #local lo_Z = un1_elw_lo_Z; // Z of bottom, rel OP. #local hi_Z = un1_service_floor_Z; // Max Z, rel OP. // Coordinates of the channel between it and the CLP cavity: #local ch_wid = un1_elw_channel_wid; // Width of channel. #local ch_hi_X = un1_clp_lo_X; // X of end of channel. #local ch_len = ch_hi_X - (lo_X + sz_X); // Length of channel. #local ch_pos = lo_Y + sz_Y/2; // Coord of channel midline. #local ch_lo_Z = un1_elw_channel_lo_Z; // Z of channel bottom, rel OP. #local ch_dir = +x; // Direction of channel from well. #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 un1_refueling_pool(C) // The refueling pool and its concrete walls intersection{ object{ C } difference{ object{ un1_refueling_pool(1) } object{ un1_refueling_pool(0) } } texture{ tx_concrete } } #end #macro un1_spent_fuel_pool(C) // The spent-fuel pool and its concrete walls intersection{ object{ C } difference{ object{ un1_spent_fuel_pool(1) } object{ un1_spent_fuel_pool(0) } } texture{ tx_concrete } } #end #macro un1_dryer_storage_pool(C) // The steam-dryer storage pool and its concrete walls intersection{ object{ C } difference{ object{ un1_dryer_storage_pool(1) } object{ un1_dryer_storage_pool(0) } } texture{ tx_concrete } } #end #macro un1_cask_loading_pool(C) // The cask loading pool and its concrete walls intersection{ object{ C } difference{ object{ un1_cask_loading_pool(1) } object{ un1_cask_loading_pool(0) } } texture{ tx_concrete } } #end