Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
22 changes: 22 additions & 0 deletions deploy/api/copylot.py
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,8 @@ class CoPylot:
Modify attributes of a subset of heliostats in the current layout
save_from_script(p_data: int, sp_fname: str) -> bool
Save the current case as a SolarPILOT .spt file
load_from_script(p_data: int, sp_fname: str) -> bool
Load a SolarPILOT .spt file
dump_varmap_tofile(p_data: int, fname: str) -> bool
Dump the variable structure to a text csv file
"""
Expand Down Expand Up @@ -1031,6 +1033,26 @@ def save_from_script(self, p_data: int, sp_fname: str) -> bool:
self.pdll.sp_save_from_script.restype = c_bool
return self.pdll.sp_save_from_script( c_void_p(p_data), c_char_p(sp_fname.encode()))

#SPEXPORT bool sp_load_from_script(sp_data_t p_data, const char* sp_fname)
def load_from_script(self, p_data: int, sp_fname: str) -> bool:
"""Load a SolarPILOT .spt file

Parameters
----------
p_data : int
memory address of SolarPILOT instance
sp_fname : str
filename to load SolarPILOT case

Returns
-------
bool
True if successful, False otherwise
"""

self.pdll.sp_load_from_script.restype = c_bool
return self.pdll.sp_load_from_script( c_void_p(p_data), c_char_p(sp_fname.encode()))

#SPEXPORT bool sp_dump_varmap(sp_data_t p_data, const char* sp_fname)
def dump_varmap_tofile(self, p_data: int, fname: str) -> bool:
"""Dump the variable structure to a text csv file
Expand Down
15 changes: 15 additions & 0 deletions deploy/api/test_script.py
Original file line number Diff line number Diff line change
Expand Up @@ -290,4 +290,19 @@
assert cp.dump_varmap_tofile(r, os.path.join(cwd, "varmap.csv"))
assert cp.save_from_script(r, os.path.join(cwd, "case_study_v2.spt"))

# Testing load_from script - Pass
if True:
cp.reset_vars(r)
cp_var = "receiver.0.rec_width"
cp_value = 2.5
filename = "test_load_file.spt"
def_cp_value = cp.data_get_number(r, cp_var)
assert cp.data_set_number(r, cp_var, cp_value)
assert cp.save_from_script(r, os.path.join(cwd, filename))
assert cp.data_free(r)
r = cp.data_create()
assert cp.data_get_number(r, cp_var) == def_cp_value
assert cp.load_from_script(r, os.path.join(cwd, filename))
assert cp.data_get_number(r, cp_var) == cp_value

assert cp.data_free(r) # Works - free memory