def master_inp_cont_gen(self,db_tuple): """ Creates the master inp content dict """ un_cnv=UnitConverter() result = {} for t in self.get_name_vars(): if t not in ["init_date", "final_date" , "init_semiMajorAxis", "name", "id", "final_id", "final_semiMajorAxis", "final_eccentricity" , "init_eccentricity"]: result[t]=un_cnv.rad_to_deg(db_tuple[self.get_i(t)]) if t in ["init_semiMajorAxis", "final_semiMajorAxis"]: result[t]=un_cnv.m_to_km(db_tuple[self.get_i(t)]) if t in ["init_date", "final_date"]: result[t]=self.format_date(db_tuple[self.get_i(t)]) if t in ["name", "final_eccentricity", "init_eccentricity"]: result[t]=db_tuple[self.get_i(t)] return result
class Sara: def __init__(self, sara_path, db, default_dir_path): self.set_sara_path(sara_path) self.set_default_dir(default_dir_path) self.set_db(db) self.uc = UnitConverter() def set_sara_path(self, sara_path): """ Sets the Master Absolute Path """ self.sara_path = sara_path def get_db(self): """ Return database instance """ return self.db def set_db(self, db): """ Sets the database instance """ self.db = db def get_default_dir(self): """ returns the absolute path to the default directory """ return self.default_dir def set_default_dir(self, default_path): """ set the defualt abs path """ self.default_dir = default_path def get_sara_path(self): """ returns the absolute path to SARA """ return self.sara_path def get_space_objects(self): """ creates the folders and set the env variable so the master simulation can be run """ return self.db.get_space_objects_data() def format_date_to_ymd(self, date): """ formats date object to YYYY/MM/DD """ return datetime.strptime(date, "%Y-%m-%dT%H:%M:%S.%f").strftime("%Y/%m/%d") def format_date_to_hms(self, date): """ formats date object to HH:MM:SS.SSS """ return datetime.strptime(date, "%Y-%m-%dT%H:%M:%S.%f").strftime("%H:%M:%S.%f") def create_files(self, db_tuple): """ creates and copies files to run SARA """ self.path = self.get_default_dir() + "/sara_sim/" + db_tuple[1] os.mkdir(self.path) os.chdir(self.path) os.mkdir("input") os.mkdir("output") cfg_content = {"name": db_tuple[1], "kep_e": db_tuple[4], "kep_i": self.uc.rad_to_deg(db_tuple[5]), "kep_ran": self.uc.rad_to_deg(db_tuple[6]), "kep_aop": self.uc.rad_to_deg(db_tuple[7]), "kep_tan": self.uc.rad_to_deg(db_tuple[8]), "kep_a": self.uc.m_to_km(db_tuple[3]), "init_date_ymd": self.format_date_to_ymd(db_tuple[2]), "init_time_hms": self.format_date_to_hms(db_tuple[2]), } cfg_template = open(self.get_default_dir() + "/sample_files/sara.inp", "r") data = cfg_template.read() data = data.format(**cfg_content) cfg_file = open(os.getcwd() + "/input/reentry.inp", "w") cfg_file.write(data) cfg_template.close() cfg_file.close() shutil.copyfile(self.get_default_dir( ) + "/sample_files/usermat.db", os.getcwd() + "/input/usermat.db") def run_sara(self): """ runs SARA """ subprocess.call(self.get_sara_path() + "/REENTRY/reentry_linux")