/obj/machinery/power/nuke var/active = 1 var/debug_heat = 0 var/core_heat = T20C var/heat_transfer = 0 var/obj/fluid_pipe/sink/n_input var/obj/fluid_pipe/source/n_output /* transfers heat from the n_input pipe of a fchamber or turbine into the core we calculate the total thermal energy: (heat capcity) * (mass) * (temp) of the incoming liquid and the core, and subtract them to make a delta. the fluid LOSES heat and the core GAINS heat .. or vice versa if delta is negative */ proc/transfer_heat_fp() var/datum/reagents/fp_holder/fp = src.n_input.network.pipe_cont var/fluid_mass = src.n_input.used_capacity * nuke_knobs.fluid_mass var/delta_t = fp.total_temperature - src.core_heat; var/fluid_composite_heat_capacity = 0 var/delta_energy = 0 var/fluid_energy_after = 0 var/fluid_energy = 0 var/fluid_energy_delta = 0 var/core_energy = 0 var/core_energy_after = 0 var/core_temp_after = 0 if(delta_t == 0) return for(var/rid in fp.reagent_list) var/datum/reagent/cur = fp.reagent_list[rid] var/part = cur.volume / fp.total_volume //DEBUG_MESSAGE("\[[src.type]\] reagent part vol: [cur.volume] \n total vol: [fp.total_volume]") fluid_composite_heat_capacity += part * cur.heat_capacity //DEBUG_MESSAGE("\[[src.type]\] fluid_composite_heat_capacity: [fluid_composite_heat_capacity]") fluid_energy = fp.total_temperature * fluid_composite_heat_capacity * fluid_mass core_energy = src.core_heat * nuke_knobs.core_capacity * nuke_knobs.core_mass delta_energy = fluid_energy - core_energy fluid_energy_after = src.core_heat * fluid_composite_heat_capacity * fluid_mass fluid_energy_delta = fluid_energy - fluid_energy_after core_energy_after = core_energy + fluid_energy_delta core_temp_after = core_energy_after / (nuke_knobs.core_capacity * nuke_knobs.core_mass) if (nuke_knobs.stfu) DEBUG_MESSAGE("\[[src.type]\] delta_t: [delta_t] \n fluid_mass: [fluid_mass]") DEBUG_MESSAGE("\[[src.type]\] fluid energy: [fluid_energy]") DEBUG_MESSAGE("\[[src.type]\] core energy: [core_energy]") DEBUG_MESSAGE("\[[src.type]\] core energy after: [core_energy_after]") DEBUG_MESSAGE("\[[src.type]\] delta energy: [delta_energy]") DEBUG_MESSAGE("\[[src.type]\] fluid energy after: [fluid_energy_after]") DEBUG_MESSAGE("\[[src.type]\] fluid energy delta: [fluid_energy_delta]") DEBUG_MESSAGE("\[[src.type]\] core temp after: [core_temp_after], change: [core_temp_after - src.core_heat]") src.n_output.network.pipe_cont.total_temperature = src.core_heat src.core_heat = core_temp_after src.heat_transfer = delta_energy //delta_energy = fluid_composite_heat_capacity * fluid_mass * delta_t //src.heat_transfer = delta_energy //DEBUG_MESSAGE("delta_energy: [delta_energy]") //src.core_heat += (delta_energy / (nuke_knobs.core_capacity * nuke_knobs.core_mass)) //src.n_output.network.pipe_cont.total_temperature += (delta_energy / (fluid_composite_heat_capacity * fluid_mass)) fp.temperature_react() /obj/machinery/power/nuke/fchamber name = "Nuclear Reactor Fission Chamber" desc = "todo" icon = 'icons/obj/machines/nuclear.dmi' icon_state = "enginepoweredworking" anchored = 1 density = 1 layer = FLOOR_EQUIP_LAYER1 var/fuel_array[9][9] var/debug = 1 var/displayHtml = "" var/datum/nuke_knobset = null New() src.nuke_knobset = new /datum/nuke_knobset() nuke_core = src nuke_knobs = src.nuke_knobset SPAWN_DBG(5 DECI SECONDS) debug_messages = 1 /* XXX */ //make_fluid_networks() var/obj/fluid_pipe/sink/temp_i = locate(/obj/fluid_pipe/sink) in get_step(src,NORTH) var/obj/fluid_pipe/source/temp_o = locate(/obj/fluid_pipe/source) in get_step(src,SOUTH) //n_input = temp_i.network //n_output = temp_o.network n_input = temp_i n_output = temp_o //temp_i.network.pipe_cont.add_reagent("water", n_input.capacity, null) //temp_o.network.pipe_cont.add_reagent("water", n_input.capacity, null) ..() attack_hand(mob/user as mob) displayHtml = buildHtml() user << browse(displayHtml, "window=fissionchamber;size=550x700;can_resize=1;can_minimize=1;allow-html=1;show-url=1;statusbar=1;enable-http-images=1;can-scroll=1") return proc/buildHtml() var/html = "" html += "
" html += K_STYLE html += "" html += "| " html += "" if(fuel_array[i][j] == null) html += "..." else html += fuel_array[i][j].material.name html += "" html += " | " html += "