ProjectTorreyPines / FUSE.jl

FUsion Synthesis Engine
https://fuse.help/
Apache License 2.0
9 stars 0 forks source link

Populate pf_passive resistivity based on materials of build #339

Open orso82 opened 1 year ago

orso82 commented 1 year ago

we should work with @xinganthony and @shoushmandyar and control group in general to understand how to translate materials and type of structure to resistivity (which is already in IMAS )

xinganthony commented 1 year ago

Resistivity would be great.

I have a related request though: I had originally wanted the ability to link pf_passive.loop to build.layers. This would also give me the thickness information, which I'd like to have in the FUSE to Toksys interface.

This is to address problem with triangle meshing generating an excessively large number of triangle for layers that are thin (example: vessel). The Toksys deals with with by using parallelograms for the vessel elements for such layers, and we'd need the thickness for that. Since the layers are generated by FUSE, its a lot easier for FUSE to tell us the thickness, rather than trying to write some way to determine thickness from the R/Z values.

orso82 commented 1 year ago

@xinganthony now I populate the pf_passive.loop[...].element[1].identifier wit the info about the build.later[...] or build.structure[...] the data comes from

image
orso82 commented 1 year ago

About the resistivity information, does anyone have a good reference for materials data? Ideally we'd want to have this information as a function of temperature. For the time being I think that copper, some form of steel, tungsten, and lead would suffice.

I asked ChatGPT this and I got this linear model, which I have not double-checked. Perhaps @zalzali27 can benchmark this against what is in COMSOL?

function resistivity(material::String, temperature::Float64)
    # Define temperature coefficient of resistivity for different materials
    alpha = Dict(
        "copper" => 0.00386,  # 1/degree Celsius
        "steel" => 0.0005,  # 1/degree Celsius
        "tungsten" => 0.0045,  # 1/degree Celsius
        "lead" => 0.0039  # 1/degree Celsius
    )

    # Define reference resistivity at 20 degrees Celsius for different materials
    resistivity_20_deg = Dict(
        "copper" => 1.72e-8,  # Ohm meters
        "steel" => 1e-7,  # Ohm meters
        "tungsten" => 5.6e-8,  # Ohm meters
        "lead" => 2.2e-7  # Ohm meters
    )

    if material in keys(alpha) && material in keys(resistivity_20_deg)
        # Calculate and return resistivity as a function of temperature
        return resistivity_20_deg[material] * (1 + alpha[material] * (temperature - 20))
    else
        error("Unknown material: $material")
    end
end

@xinganthony what does TokSys use for the resistivity of the different materials?

zalzali27 commented 1 year ago

I've checked COMSOL, it seems that one type of materials is available in the GATM model (called Coil_fake_matl by Jim) which has its own resistivity

Screen Shot 2023-06-11 at 10 10 53 AM

But COMSOL has built-in materials with their thermal properties which I can use to get you the answers of each of those materials. It is so advanced that we'd have to specify which type of steel (For example: Si Steel GO 3%...) shown in the screenshot here:

Screen Shot 2023-06-11 at 10 01 55 AM
zalzali27 commented 1 year ago

In the hard copy of the thesis Development and Validation of a Computational Tool for Fusion Reactors System Analysis by Fabrizio Franza page 112-113, there is content about the conductivity and refers to current sharing temperature limit. I will look into it.

zalzali27 commented 1 year ago

From COMSOL:

Copper's resistivity temperature coefficient = 0.0039 [1/K] (Linearized resistivity) - AGREES with the above.

This coefficient is not present for the rest of the materials.

However, there is:

zalzali27 commented 1 year ago

Resistivity temperature coefficient [1/K]
Tungsten = 0.004403[1/K]
Steel alloy at 99.5 percent iron, 0.5 percent carbon tys = 0.003 [1/K]

xinganthony commented 1 year ago

Some coded values I ran into in TokSys:

Pb: 0.2200 Stainless Steel (ss316): 0.7400 LiPb (~400C): 1.2500 Copper: 1.71e-2

For actual machines though, the resistance values are often calibrated with data and adjusted (as effective toroidal resistance may not be the same as that of a solid block of the material).

EDIT the units for above is micro Ohm meter; so need to multiply by 1e-6 to get typical unit of Ohm meter. These are electrical resistances, which is what TokSys cares about.

zalzali27 commented 1 year ago

Thanks @xinganthony, just to clarify, those values are for the resistance? And in what units?

xinganthony commented 1 year ago

Here is an online reference for electrical resistivity: http://hyperphysics.phy-astr.gsu.edu/hbase/Tables/rstiv.html.

The numbers where applicable, are close to the values I found above. These should be good enough approximations at this stage I think.

xinganthony commented 1 year ago

@TimSlendebroek Can I have a new JSON file generated that updates the last one we got with the identifier that Orso put in?

@xinganthony now I populate the pf_passive.loop[...].element[1].identifier wit the info about the build.later[...] or build.structure[...] the data comes from

image