// Last edited on 2011-05-13 02:53:57 by stolfi // Reference grids and frames for Unit #4 // In all these macros, the plane {P} of the frame // goes through the point {org}, but {P}'s orientation and // the frame's position on {P} are fixed by the macro // and do not depend on the position of {org} on {P}. // Macros that take a {step} parameter fill the frame with a // regular grid with that {step} on both axes, synchronized with {org}. // If {step} is zero, the grid is omitted. // In all these macros the parameter {line_R} is the radius of the thinner // lines (diagonals, midlines, gridlines, etc.). The outer frame // uses somewhat thicker lines. // ---------------------------------------------------------------------- // HORIZONTAL GRIDS AND FRAMES #macro un4_upp_floor_ref_grid(step, line_R, org) // A horizontal reference grid on an arbitrary floor of the "upp" block. #local U = x; #local lo_U = un4_building_upp_lo_X; #local hi_U = un4_building_upp_hi_X; #local V = y; #local lo_V = un4_building_lo_Y; #local hi_V = un4_building_hi_Y; object{ generic_ref_grid(org, U,lo_U,hi_U, V,lo_V,hi_V, step, 0, 0, line_R) } #end #macro un4_east_wing_ref_grid(step, line_R, org) // A reference grid for an arbitrary floor of the eastern wing of the // "mid" or "und" block. #local U = x; #local lo_U = un4_building_upp_hi_X; #local hi_U = un4_building_mid_hi_X; #local V = y; #local lo_V = un4_building_lo_Y; #local hi_V = un4_building_hi_Y; object{ generic_ref_grid(org, U,lo_U,hi_U, V,lo_V,hi_V, step, 0, 0, line_R) } #end #macro un4_west_wing_ref_grid(step, line_R, org) // A reference grid on an arbitrary floor of the western wing of the "und" // block. #local U = x; #local lo_U = un4_building_und_lo_X; #local hi_U = un4_building_mid_lo_X; #local V = y; #local lo_V = un4_building_lo_Y; #local hi_V = un4_building_hi_Y; object{ generic_ref_grid(org, U,lo_U,hi_U, V,lo_V,hi_V, step, 0, 0, line_R) } #end #macro un4_elw_cavity_ref_frame(line_R, fr_Z) // A reference frame for the elevator shaft, at Z coordinate {fr_Z}. #local U = x; #local lo_U = un4_elw_lo_X; #local hi_U = lo_U + un4_elw_size_X; #local V = y; #local lo_V = un4_elw_lo_Y; #local hi_V = lo_V + un4_elw_size_Y; #local org = < 0, 0, fr_Z >; object{ generic_ref_grid(org, U,lo_U,hi_U, V,lo_V,hi_V, 0.0, 1, 1, line_R) } #end #macro un4_sfp_cavity_ref_frame(line_R, fr_Z) // A reference frame for the spent-fuel pool, at Z coordinate {fr_Z}. #local U = x; #local lo_U = un4_sfp_lo_X; #local hi_U = lo_U + un4_sfp_size_X; #local V = y; #local lo_V = un4_sfp_lo_Y; #local hi_V = lo_V + un4_sfp_size_Y; #local org = < 0, 0, fr_Z >; object{ generic_ref_grid(org, U,lo_U,hi_U, V,lo_V,hi_V, 0.0, 1, 1, line_R) } #end #macro un4_dsp_cavity_ref_frame(line_R, fr_Z) // A reference frame for the steam_dryer storage pool, at Z coordinate {fr_Z}. #local dot_R = 2.0*line_R; #local big_rod_R = 1.5*line_R; // Thick line. #local sma_rod_R = 1.0*line_R; // Thin line. #local U = x; #local lo_U = un4_dsp_lo_X; #local hi_U = lo_U + un4_dsp_size_X; #local V = y; #local lo_V = un4_dsp_lo_Y; #local hi_V = lo_V + un4_dsp_size_Y; #local org = < 0, 0, fr_Z >; object{ generic_ref_grid(org, U,lo_U,hi_U, V,lo_V,hi_V, 0.0, 1, 1, line_R) } #end #macro un4_crane_support_ref_frames(line_R) // A reference frame for the elevator shaft, at Z coordinate {fr_Z}. #local fr_Z = un4_crane_support_hi_Z; #local org = < 0, 0, fr_Z >; #local U = x; #local V = y; #local crn_lo_U = 0 + un4_main_corner_pillar_size_X; #local crn_hi_U = un4_crane_support_corner_top_size_X; #local crn_lo_V = un4_storey_5_S_wall_thk; // Assuming N and S walls have same thickness. #local crn_hi_V = 0 + un4_main_corner_pillar_size_Y; #local crn_fr = // Frame for the southwest corner support, assuming ot-SW-corner at X=0,Y=0. generic_ref_grid(org, U,crn_lo_U,crn_hi_U, V,crn_lo_V,crn_hi_V, 0.0, 0, 0, line_R) #local gen_lo_U = 0 + un4_main_E_W_pillar_1_5_size_X; #local gen_hi_U = un4_crane_support_corner_top_size_X; #local gen_lo_V = 0 - un4_main_E_W_pillar_1_5_size_Y/2; #local gen_hi_V = 0 + un4_main_E_W_pillar_1_5_size_Y/2; #local gen_fr = // Frame for the general west support, centered in Y, assuming W ot-wall at X=0. generic_ref_grid(org, U,gen_lo_U,gen_hi_U, V,gen_lo_V,gen_hi_V, 0.0, 0, 0, line_R) #local lo_X = un4_building_upp_lo_X; #local hi_X = un4_building_upp_hi_X; #local lo_Y = un4_building_lo_Y; #local hi_Y = un4_building_hi_Y; #local step_Y = un4_main_E_W_pillar_1_5_step_Y; #local frames_W = // West frames, assuming ot-SW corner at X=0,Y=0. union{ object{ crn_fr scale <+1,+1,+1> translate lo_Y*y } #local i = -2; #while (i <= +2) #local bY = (lo_Y + hi_Y)/2 + i*step_Y; object{ gen_fr translate bY*y } #local i = i + 1; #end object{ crn_fr scale <+1,-1,+1> translate hi_Y*y } } union{ object{ frames_W scale <+1,+1,+1> translate lo_X*x } object{ frames_W scale <-1,+1,+1> translate hi_X*x } } #end // ---------------------------------------------------------------------- // VERTICAL GRIDS AND FRAMES #macro un4_roof_storey_EW_cut_ref_grid(step, line_R, org) // A reference grid on a east-west cut of the service storey, // from roof floor to top of roof lip. #local U = x; #local lo_U = un4_building_upp_lo_X; #local hi_U = un4_building_upp_hi_X; #local V = z; #local lo_V = un4_storey_6_lo_Z; #local hi_V = un4_building_hi_Z; object{ generic_ref_grid(org, U,lo_U,hi_U, V,lo_V,hi_V, step, 0, 0, line_R) } #end #macro un4_service_storey_EW_cut_ref_grid(step, line_R, org) // A reference grid on a east-west cut of the service storey, // from service floor to top of highest tier of beams. #local U = x; #local lo_U = un4_building_upp_lo_X; #local hi_U = un4_building_upp_hi_X; #local V = z; #local lo_V = un4_storey_5_lo_Z; #local hi_V = un4_storey_5_beams_2_hi_Z; object{ generic_ref_grid(org, U,lo_U,hi_U, V,lo_V,hi_V, step, 0, 0, line_R) } #end #macro un4_sub_service_block_EW_cut_ref_grid(step, line_R, org) // A reference grid on a east-west cut of the part of the building // from the service floor down to the ground floor, excluding the // east wing. #local U = x; #local lo_U = un4_building_upp_lo_X; #local hi_U = un4_building_upp_hi_X; #local V = z; #local lo_V = un4_storey_1_lo_Z; #local hi_V = un4_storey_5_lo_Z; object{ generic_ref_grid(org, U,lo_U,hi_U, V,lo_V,hi_V, step, 0, 0, line_R) } #end #macro un4_east_wing_EW_cut_ref_grid(step, line_R, org) // A reference grid on a east-west cut of the east wing, // from the top lip of the midroof down to // ground floor. #local U = x; #local lo_U = un4_building_upp_hi_X; #local hi_U = un4_building_mid_hi_X; #local V = z; #local lo_V = un4_storey_1_lo_Z; #local hi_V = un4_building_mid_hi_Z; object{ generic_ref_grid(org, U,lo_U,hi_U, V,lo_V,hi_V, step, 0, 0, line_R) } #end #macro un4_service_storey_NS_cut_ref_grid(step, line_R, org) // A reference grid on a north-south cut of the service storey, // from service floor to top of highest tier of beams. #local U = y; #local lo_U = un4_building_lo_Y; #local hi_U = un4_building_hi_Y; #local V = z; #local lo_V = un4_storey_5_lo_Z; #local hi_V = un4_storey_5_beams_2_hi_Z; object{ generic_ref_grid(org, U,lo_U,hi_U, V,lo_V,hi_V, step, 0, 0, line_R) } #end #macro un4_sub_service_block_NS_cut_ref_grid(step, line_R, org) // A reference grid on a north-south cut of the part of the building // from the service floor down to the ground floor. #local U = y; #local lo_U = un4_building_lo_Y; #local hi_U = un4_building_hi_Y; #local V = z; #local lo_V = un4_storey_1_lo_Z; #local hi_V = un4_storey_5_lo_Z; object{ generic_ref_grid(org, U,lo_U,hi_U, V,lo_V,hi_V, step, 0, 0, line_R) } #end // ---------------------------------------------------------------------- // HORIZONTAL CIRCULAR FRAMES #macro un4_shroud_cavity_ref_circle(line_R, fr_Z) // A horizontal circle showing a cross-section of the shroud cavity, // at height {fr_Z}. #local ctr_X = un4_reactor_axis_X; #local ctr_Y = un4_reactor_axis_Y; #local rad = un4_shroud_cavity_rad; #local ctr = < ctr_X, ctr_Y, fr_Z >; object{ generic_horizontal_ref_circle(ctr, rad, 1, line_R) } #end