Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Surface #37

Open
wants to merge 34 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
e3ab531
Added surface geometry
reverendbedford Jun 27, 2023
da8dd82
Provided surface stresses
reverendbedford Jun 27, 2023
bc2e85e
Formatting and blacking
reverendbedford Jun 27, 2023
865bb62
Updating damage file with surface flaws
pschaugule Jul 31, 2023
f7d5a48
Updating damage file with surface flaws 2
pschaugule Jul 31, 2023
103d565
Updating damage file with surface flaws 3
pschaugule Jul 31, 2023
1025d46
Updating damage file with surface flaws 4
pschaugule Jul 31, 2023
4dc7e4a
Updating damage file with surface flaws 5
pschaugule Jul 31, 2023
872cc82
Updating damage file with surface flaws 6
pschaugule Jul 31, 2023
2ef604b
Updating damage file with surface flaws 7
pschaugule Jul 31, 2023
be426e1
Updating damage file with surface flaws 8
pschaugule Jul 31, 2023
0bc1fe1
Updating damage file with surface flaws 9
pschaugule Jul 31, 2023
bc542c9
Updating damage file with surface flaws 10
pschaugule Jul 31, 2023
ecbc27e
Updating damage file with surface flaws 11
pschaugule Jul 31, 2023
95566a2
Updating damage file with surface flaws 12
pschaugule Jul 31, 2023
238edd3
Updating damage file and receiver file
pschaugule Aug 1, 2023
08f5bb9
Updating damage file and receiver file 2
pschaugule Aug 1, 2023
4bc9019
Updating damage, materials and test files 1
pschaugule Aug 1, 2023
23731a5
Updating damage, materials and test files 2
pschaugule Aug 2, 2023
5619338
Updating damage, materials and test files 3
pschaugule Aug 2, 2023
618b8ee
Update damage and calculate reliability file
pschaugule Aug 17, 2023
55842c0
Update damage and calculate reliability file 2
pschaugule Aug 17, 2023
9d4792e
Update damage and calculate reliability file 3
pschaugule Aug 17, 2023
dde0c18
Update damage.py with paged arrays
pschaugule Aug 30, 2023
f17a889
Update damage.py with paged arrays 2
pschaugule Aug 30, 2023
29441b8
Update damage.py with paged arrays 3
pschaugule Aug 30, 2023
fa1d760
Update damage.py with paged arrays 4
pschaugule Aug 30, 2023
6fbee85
Update damage.py with paged arrays 5
pschaugule Aug 30, 2023
cf24177
Update damage.py with paged arrays 6
pschaugule Aug 30, 2023
beb88d0
Update damage.py with paged arrays 7
pschaugule Sep 6, 2023
a1e39ee
updating files with .hdf changed to .hdf5
pschaugule Sep 22, 2023
79f693e
updating managers.py
pschaugule Sep 22, 2023
8736461
ceramic receiver 1 panel folder
pschaugule Sep 22, 2023
3dbac33
Updated Weibull_3p files
pschaugule May 30, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
146 changes: 125 additions & 21 deletions examples/ceramic-receiver/calculate_reliability.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#!/usr/bin/env python3

import numpy as np

import matplotlib.pyplot as plt
import sys

sys.path.append("../..")
Expand All @@ -22,7 +22,7 @@
def sample_parameters():
params = solverparams.ParameterSet()

params["nthreads"] = 2
params["nthreads"] = 1
params["progress_bars"] = True
# If true store results on disk (slower, but less memory)
params["page_results"] = True # False
Expand Down Expand Up @@ -62,7 +62,8 @@ def sample_parameters():


if __name__ == "__main__":
model = receiver.Receiver.load("SiC_1pt00mm_spath_Sresults.hdf")
# model = receiver.Receiver.load("SiC_1pt00mm_spath_Sresults.hdf5")
model = receiver.Receiver.load("example-structural-thermal.hdf5")

# Load some customized solution parameters
# These are all optional, all the solvers have default values
Expand All @@ -83,8 +84,11 @@ def sample_parameters():
damage.MTSModelPennyShapedFlaw(params["damage"]),
damage.CSEModelGriffithFlaw(params["damage"]),
damage.CSEModelPennyShapedFlaw(params["damage"]),
damage.CSEModelGriffithNotch(params["damage"]),
damage.SMMModelGriffithFlaw(params["damage"]),
damage.SMMModelGriffithNotch(params["damage"]),
damage.SMMModelPennyShapedFlaw(params["damage"]),
damage.SMMModelSemiCircularCrack(params["damage"]),
]

# Load the materials
Expand All @@ -93,8 +97,9 @@ def sample_parameters():
"SiC", "base", "cares", "cares"
)

reliability_filename = "SiC_1pt00mm_Reliability.txt"
reliability_filename = "example_Reliability.txt"
file = open(reliability_filename, "w")
# with open("example_Reliability.txt", "a+") as external_file:

for damage_model in damage_models:
# The solution manager
Expand All @@ -112,25 +117,124 @@ def sample_parameters():
)

# Report the best-estimate life of the receiver
reliability = solver.calculate_reliability(time=100000.0)
model.save("SiC_1pt00mm_spath_Rresults.hdf")
reliability = solver.calculate_reliability(time=100.0)
model.save("example_with_Rresults.hdf5")
# model.save("SiC_1pt00mm_spath_Rresults.hdf5")

# for pi, panel in model.panels.items():
# for ti, tube in panel.tubes.items():
# tube.write_vtk("SiC_1mm_tube-%s-%s" % (pi, ti))

for pi, panel in model.panels.items():
for ti, tube in panel.tubes.items():
tube.write_vtk("SiC_1mm_tube-%s-%s" % (pi, ti))
tube.write_vtk("variable_flow_tube-%s-%s" % (pi, ti))

print(damage_model)
print("Individual tube reliabilities:")
print(reliability["tube_reliability"])
print("Individual panel reliabilities:")
print(reliability["panel_reliability"])
print("Overall reliability:")
print(reliability["overall_reliability"])
print("Minimum tube reliabilities:")
print(min(reliability["tube_reliability"]))

file.write("model = %s \n" % (damage_model))
file.write(
"minimum tube reliability = %f \n" % (min(reliability["tube_reliability"]))
)
file.close()
# external_file.write("\n")
print("Individual tube reliabilities (volume):")
print(reliability["tube_reliability_volume"])
# external_file.write("Individual tube reliabilities (volume): %f" % ({reliability["tube_reliability_volume"]}))
print("Individual panel reliabilities (volume):")
print(reliability["panel_reliability_volume"])

print("Overall reliability (volume):")
print(reliability["overall_reliability_volume"])

print("Minimum tube reliabilities (volume):")
print(min(reliability["tube_reliability_volume"]))

print("Individual tube reliabilities (surface):")
print(reliability["tube_reliability_surface"])

print("Individual panel reliabilities (surface):")
print(reliability["panel_reliability_surface"])

print("Overall reliability (surface):")
print(reliability["overall_reliability_surface"])

print("Minimum tube reliabilities (surface):")
print(min(reliability["tube_reliability_surface"]))

print("Individual tube reliabilities (total):")
print(reliability["tube_reliability_total"])

print("Individual panel reliabilities (total):")
print(reliability["panel_reliability_total"])

print("Overall reliability (total):")
print(reliability["overall_reliability_total"])

print("Minimum tube reliabilities (total):")
print(min(reliability["tube_reliability_total"]))

# file.write("model = %s \n" % (damage_model))
# file.write(
# # "Individual tube reliabilities (volume): "
# "minimum tube reliability (volume)= %f \n" % (min(reliability["tube_reliability_volume"]))
# )

# Create bar plot of the reliabilities and save as .pdf
# damage_model = "PIAModel"
# Calculate the width for side-by-side bars
bar_width = 0.4 # Adjust the width as needed
bar_spacing = 0.1

# Tube
# Create a list of indices to be used as x-axis labels
indices = [x + 1 for x in range(len(reliability["tube_reliability_volume"]))]
x = np.arange(len(indices))
# Create the bar plot
plt.figure()
plt.bar(x - bar_width/3, reliability["tube_reliability_volume"],width=bar_width,label="Volume")
plt.bar(x, reliability["tube_reliability_surface"],width=bar_width,label="Surface")
plt.bar(x + bar_width/3, reliability["tube_reliability_total"],width=bar_width,label="Total")
plt.xticks(x,indices,rotation=45, ha='right')
# Add labels and title
plt.xlabel("Tube numbers")
plt.ylabel("Reliability")
plt.legend(loc='lower right')
# plt.ylim(0.9,1.01)
plt.title("Tube reliablities")
# Save the plot
plt.savefig(f"tube_reliability_{damage_model}.png")
# plt.savefig("tube_reliability_volume.eps", format="eps")

# Panel
# Create the bar plot
plt.figure()
indices = [x + 1 for x in range(len(reliability["panel_reliability_volume"]))]
x = np.arange(len(indices))
plt.bar(x - bar_width/3, reliability["panel_reliability_volume"],width=bar_width,label="Volume")
plt.bar(x, reliability["panel_reliability_surface"],width=bar_width,label="Surface")
plt.bar(x + bar_width/3, reliability["panel_reliability_total"],width=bar_width,label="Total")
# Add labels and title
plt.xticks(x,indices,rotation=45, ha='right')
plt.xlabel("Panel numbers")
plt.ylabel("Reliability")
plt.legend(loc='lower right')
# plt.ylim(0.9,1.01)
plt.title("Panel reliablities")
# Save the plot
plt.savefig(f"panel_reliability_{damage_model}.png")
# plt.savefig("panel_reliability_volume.eps", format="eps")

# Overall
# Create the bar plot
plt.figure()
plt.bar(-bar_width/3,reliability["overall_reliability_volume"],width=bar_width,label="Volume")
plt.bar(0,reliability["overall_reliability_surface"],width=bar_width,label="Surface")
plt.bar(bar_width/3,reliability["overall_reliability_total"],width=bar_width,label="Total")
# Add labels and title
# plt.xlabel("Tube numbers")
plt.ylabel("Reliability")
plt.legend(loc='lower right')
# plt.ylim(0.9,1.01)
plt.title("Overall reliablity")
# Save the plot
plt.savefig(f"overall_reliability_{damage_model}.png")
# plt.savefig("overall_reliability_volume.eps", format="eps")

# Show the plot
# plt.show()

# file.close()
Binary file modified examples/ceramic-receiver/example-receiver.hdf5
Binary file not shown.
24 changes: 15 additions & 9 deletions examples/ceramic-receiver/run_example_variable_flow.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,8 +84,8 @@ def sample_parameters():
inlet_temp = inlet_temp * np.ones_like(times)

model.add_flowpath(flowpath, times, mass_flow, inlet_temp)
model.save("example-with-flowpath-variable_flow.hdf")
model = receiver.Receiver.load("example-with-flowpath-variable_flow.hdf")
model.save("example-with-flowpath-variable_flow.hdf5")
model = receiver.Receiver.load("example-with-flowpath-variable_flow.hdf5")

# Load some customized solution parameters
# These are all optional, all the solvers have default values
Expand All @@ -98,7 +98,7 @@ def sample_parameters():
structural_solver = structural.PythonTubeSolver(params["structural"])
# Define the system solver to use in solving the coupled structural system
system_solver = system.SpringSystemSolver(params["system"])

# Damage model to use in calculating reliability
# damage_model = damage.TimeFractionInteractionDamage(params["damage"])
damage_model = damage.PIAModel(params["damage"])
Expand Down Expand Up @@ -132,17 +132,23 @@ def sample_parameters():

# Heuristics
solver.add_heuristic(managers.CycleResetHeuristic())
# solver.solve_heat_transfer()
# solver.solve_structural()
# model.save("example-structural-thermal.hdf5")

# Report tube reliability
reliability = solver.solve_reliability()
# reliability = solver.solve_reliability()
reliability_volume = solver.calculate_reliability_volume_flaw(time=100.0)
reliability_surface = solver.calculate_reliability_surface_flaw(time=100.0)
reliability_combined = solver.calculate_reliability_combined(time=100.0)

print("Individual tube reliabilities:")
print(reliability["tube_reliability"])
# print("Individual tube reliabilities:")
# print(reliability["tube_reliability"])

print("Overall structure reliability:")
print(reliability["overall_reliability"])
# print("Overall structure reliability:")
# print(reliability["overall_reliability"])

model.save("example-with-results-variable_flow.hdf")
model.save("example-with-results-variable_flow.hdf5")

for pi, panel in model.panels.items():
for ti, tube in panel.tubes.items():
Expand Down
3 changes: 3 additions & 0 deletions examples/ceramic-receiver_1panel/Tube_st.hdf5
Git LFS file not shown
Loading
Loading