// Last edited on 2011-05-07 12:27:46 by stolfi // Fukushima Daiichi unit #1 - drywell, shroud, and their enclosures // ====================================================================== // DRYWELL WALL, CAVITY, ENCLOSURE #macro un1_drywell_steel_wall() // Wall of drywell not including the shroud. #local T = un1_drywell_thk; // Thickness of drywell wall. #local dw_sph_ctr_Z = un1_drywell_sphere_ctr_Z; // Z of center of drywell sphere. #local dw_sph_R = un1_drywell_sphere_rad; #local sphere_ctr = < 0, 0, dw_sph_ctr_Z>; // Center of drywell sphere. #local sphere_bot = sphere_ctr - dw_sph_R*z; #local dw_cyl_top = < 0, 0, un1_shroud_Z + 0.500 >; // Z of shroud/drywell seal. #local dw_cyl_rad = un1_drywell_stem_rad; // Outer radius of drywell cylinder. #local dw_FR = un1_drywell_flange_rad; // Extra radius of drywell/shroud flange. #local dw_FT = un1_drywell_flange_thk; // Vertical thickness of drywell/shroud flange. #local rpv_CR = un1_rpv_body_rad; // Outer radius of RPV cylinder. #local rpv_FR = un1_rpv_flange_rad; // Extra radius of RPV flange. #local hole_rad = rpv_CR + rpv_FR; // Radius of opening on top of drywell. difference{ union{ sphere{ sphere_ctr, dw_sph_R - eps } cylinder{ sphere_ctr, dw_cyl_top - eps*z, dw_cyl_rad - eps } object{ generic_vessel_flange(dw_cyl_rad,T,dw_FR,dw_FT) scale <1,1,-1> translate dw_cyl_top } } union{ sphere{ sphere_ctr, dw_sph_R - T + eps } cylinder{ sphere_ctr, dw_cyl_top - (T-eps)*z, dw_cyl_rad - T + eps } cylinder{ sphere_ctr, dw_cyl_top + 0.500*z, hole_rad - 2*eps } } object{ un1_surge_pipe_punchers() } texture{ tx_enamel_yellow } bounded_by{ cylinder{ sphere_bot, dw_cyl_top, dw_sph_R } } } #end #macro un1_drywell_cavity() // Extends somewhat into the refueling pool. // Does not include the refueling pool cavity. // Oigin at OP on reactor axis. #local sphere_ctr = < 0, 0, un1_drywell_sphere_ctr_Z>; #local sphere_rad = un1_drywell_sphere_rad; #local cone3_bot_Z = un1_drywell_enclosure_cone3_bot_Z; // Bottom Z of cone 3. #local dw_cyl_top = < 0, 0, cone3_bot_Z >; #local dw_cyl_rad = un1_drywell_stem_rad; union{ sphere{ sphere_ctr, sphere_rad + eps } cylinder{ sphere_ctr, dw_cyl_top + 5*eps*z, dw_cyl_rad + eps } } #end #macro un1_drywell_enclosure(C) // The concrete around the drywell, excluding the // refueling pool, with the cavity excavated. // Origin is reactor axis at OP height. intersection{ object{ C } difference{ object{ un1_drywell_enclosure_massive() } object{ un1_drywell_cavity() } } texture{ tx_concrete } } #end #macro un1_drywell_enclosure_massive() // The concrete around the drywell, excluding the // refueling pool, with the cavity filled. // Origin is reactor axis at OP height. #local cyl0_bot_Z = un1_drywell_enclosure_cyl0_bot_Z; // Nominal bottom Z of cylinder 0 rOP. #local cyl0_R = un1_drywell_enclosure_cyl0_rad; // Radius of cylinder 0. #local cyl0_top_Z = un1_drywell_enclosure_cyl0_top_Z; // Top Z of cylinder 0 rOP. #local cone1_bot_Z = un1_drywell_enclosure_cone1_bot_Z; // Bottom Z of cone 1. #local cone1_bot_R = un1_drywell_enclosure_cone1_bot_rad; // Bottom Radius of cone 1. #local cone1_top_R = un1_drywell_enclosure_cone1_top_rad; // Top radius of cone 1. #local cone1_top_Z = un1_drywell_enclosure_cone1_top_Z; // Top Z of cone 1 rOP. #local cyl1_bot_Z = un1_drywell_enclosure_cyl1_bot_Z; // Nominal bottom Z of cylinder 1 rOP. #local cyl1_R = un1_drywell_enclosure_cyl1_rad; // Radius of cylinder 1. #local cyl1_top_Z = un1_drywell_enclosure_cyl1_top_Z; // Top Z of cylinder 1 rOP. #local cone2_bot_Z = un1_drywell_enclosure_cone2_bot_Z; // Bottom Z of cone 2. #local cone2_bot_R = un1_drywell_enclosure_cone2_bot_rad; // Bottom Radius of cone 2. #local cone2_top_R = un1_drywell_enclosure_cone2_top_rad; // Top radius of cone 2. #local cone2_top_Z = un1_drywell_enclosure_cone2_top_Z; // Top Z of cone 2 rOP. #local cyl2_bot_Z = un1_drywell_enclosure_cyl2_bot_Z; // Nominal bottom Z of cylinder 2 rOP. #local cyl2_R = un1_drywell_enclosure_cyl2_rad; // Radius of cylinder 2. #local cyl2_top_Z = un1_drywell_enclosure_cyl2_top_Z; // Top Z of cylinder 2 rOP. union{ cylinder{ (cyl0_bot_Z - eps)*z, (cyl0_top_Z + eps)*z, cyl0_R - eps } cone{ cone1_bot_Z*z, cone1_bot_R - eps, cone1_top_Z*z, cone1_top_R - eps } cylinder{ (cyl1_bot_Z - eps)*z, (cyl1_top_Z + eps)*z, cyl1_R - eps } cone{ cone2_bot_Z*z, cone2_bot_R - eps, cone2_top_Z*z, cone2_top_R - eps } cylinder{ (cyl2_bot_Z - eps)*z, (cyl2_top_Z + eps)*z, cyl2_R - eps } bounded_by{ cylinder{ (cyl0_bot_Z - 10*eps)*z, (cyl2_top_Z + 10*eps)*z, cyl1_R + 10*eps } } } #end // ====================================================================== // SHROUD WALL, CAVITY, ENCLOSURE #macro un1_shroud() // The shroud that sits on top of the drywell. // Origin at seal height on symmetry axis. #local T = un1_shroud_thk; // Thickness of shroud. #local H = un1_shroud_size_Z; // Total height of shroud. #local CR = un1_drywell_stem_rad; // Radius of main drywell cylinder. #local CH = un1_shroud_cyl_size_Z; // Height of straight part of shroud. #local DH = un1_shroud_size_Z - CH; // Height of shroud's dome shroud. #local FT = un1_drywell_flange_thk; // Vertical thickness of drywell/shroud flange. #local FR = un1_drywell_flange_rad; // Extra radius of drywell/shroud flange. #local bot_ctr = < 0, 0, 0 >; #local top_ctr = < 0, 0, H >; object{ object{ generic_flanged_capped_cylinder(CH,CR,H-CH,T,FR,FT,0,1) } texture{ tx_enamel_yellow } bounded_by{ cylinder{ bot_ctr, top_ctr, CR + FR } } } #end #macro un1_shroud_enclosure_massive() // The concrete around the refueling pool, with the cavity filled. // Origin is reactor axis at OP height. #local cone3_bot_Z = un1_drywell_enclosure_cone3_bot_Z; // Bottom Z of cone 3. #local cone3_bot_R = un1_drywell_enclosure_cone3_bot_rad; // Bottom Radius of cone 3. #local cone3_top_R = un1_drywell_enclosure_cone3_top_rad; // Top radius of cone 3. #local cone3_top_Z = un1_drywell_enclosure_cone3_top_Z; // Top Z of cone 3 rOP. #local cyl3_bot_Z = un1_drywell_enclosure_cyl3_bot_Z; // Nominal bottom Z of cylinder 3 rOP. #local cyl3_R = un1_drywell_enclosure_cyl3_rad; // Radius of cylinder 3. #local cyl3_top_Z = un1_drywell_enclosure_cyl3_top_Z; // Top Z of cylinder 3 rOP. union{ cone{ cone3_bot_Z*z, cone3_bot_R - eps, cone3_top_Z*z, cone3_top_R - eps } cylinder{ (cyl3_bot_Z - eps)*z, (cyl3_top_Z - eps)*z, cyl3_R - eps } } #end #macro un1_shroud_cavity() // Negative object to excavate the refueling pool cavity. // Includes steps for the shield plug. // Open at botom to join with the drywell cavity. // Origin at OP on reactor axis. #local cone3_bot_Z = un1_drywell_enclosure_cone3_bot_Z; // Bottom Z of cone 3. #local dw_cyl_bot = < 0, 0, cone3_bot_Z >; #local dw_cyl_top = < 0, 0, un1_shroud_cavity_Z >; #local dw_cyl_rad = un1_drywell_stem_rad; #local shr_cyl_bot = < 0, 0, un1_shroud_cavity_Z >; #local shr_cyl_top = < 0, 0, un1_service_floor_Z + 0.500 >; #local shr_cyl_rad = un1_shroud_cavity_rad; union{ cylinder{ dw_cyl_bot - 5*eps*z, dw_cyl_top + eps*z, dw_cyl_rad + eps } cylinder{ shr_cyl_bot - eps*z, shr_cyl_top + eps*z, shr_cyl_rad + eps } object{ un1_shield_plug_cavity(0) } object{ un1_shield_plug_cavity(1) } object{ un1_shield_plug_cavity(2) } } #end #macro un1_shield_plug_cavity(k) // Generates the cavity for shield plug number {k} (topmost=0). // Origin at OP on reactor axis. #local hi_Z = un1_service_floor_Z - k*un1_shield_plug_thk; #local lo_Z = hi_Z - un1_shield_plug_thk; #local rad = un1_shroud_cavity_rad + (3-k)*un1_shield_plug_step; cylinder{ < 0, 0, lo_Z - eps >, < 0, 0, hi_Z + eps >, rad + eps } #end