Loading survey_sim/constraints/cmg_constraint.py +36 −3 Original line number Diff line number Diff line Loading @@ -12,13 +12,46 @@ import numpy as np class cmgConstraint(object): def __init__(self, cmgFlag=1, orbit_time=0.0638): self.initCMGWeight(flag=cmgFlag) # self.initCMGWeight(flag=cmgFlag) self.initCMG_Condition(flag=cmgFlag) self.orbit_time = orbit_time # 存储节点元素,每个元素包含三个值 [开始时间(儒略日), 当前节点cmg消耗量, 当前节点总共需要的时间(单位:天)] self.cmgNodes = [] self.total_cmg = 0 self.total_cmgTime = 0 def initCMG_Condition(self, flag=2): if flag == 1: self.CMG_angel_range = np.array([[0, 5], [5, 10], [10, 20], [20, 35], [ 35, 45], [45, 75], [75, 90], [90, 135], [135, 180]]) self.CMG_weight_single = np.array( [0., 1/29., 1/19., 1/13., 1/10., 1/6., 1/5., 1/3., 1/2.]) assert len(self.CMG_angel_range) == len( self.CMG_weight_single), "Invalid CMG data Init!" if flag == 2: self.CMG_angel_range = np.array([[0, 5], [5, 10], [10, 20], [20, 35], [ 35, 45], [45, 75], [75, 90], [90, 150], [150, 180]]) self.CMG_weight_single = np.array( [0., 1/29., 1/19., 1/13., 1/10., 1/6., 1/5., 1/4., 1/3.]) assert len(self.CMG_angel_range) == len( self.CMG_weight_single), "Invalid CMG data Init!" def get_cmg_use(self, tAngle=1.0): cmg_use = 0.0 if tAngle < 0: tAngle = 0 if tAngle > 180: tAngle = 180 for i in np.arange(len(self.CMG_angel_range)): c_range = self.CMG_angel_range[i] w = self.CMG_weight_single[i] if tAngle >= c_range[0] and tAngle < c_range[1]: cmg_use = w break if tAngle == 180: cmg_use = self.CMG_weight_single[-1] return cmg_use def initCMGWeight(self, flag=1): CMG_TM_FLAG = flag self.cmg_tm_tAngle = np.zeros(10) Loading Loading @@ -107,7 +140,7 @@ class cmgConstraint(object): 1.0 / 10.0, 1.0 / 6.0, 1.0 / 5.0, 1.0 / 34.0, 1.0 / 4.0, 1.0 / 3.0, ] ) Loading @@ -127,7 +160,7 @@ class cmgConstraint(object): ) self.cmg_tm_k = cmgWeight * cmgWRange def get_cmg_use(self, tAngle=1.0): def get_cmg_use_bak(self, tAngle=1.0): cmg_use = 0.0 Loading survey_sim/constraints/surveyConstraint.py +1 −1 Original line number Diff line number Diff line Loading @@ -2,7 +2,7 @@ Author: Zhang Xin zhangx@bao.ac.cn Date: 2020-06-17 17:03:15 LastEditors: Zhang Xin zhangx@bao.ac.cn LastEditTime: 2025-04-08 14:20:26 LastEditTime: 2025-06-25 10:33:46 FilePath: /CSST_Survey/survey_sim/constraints/surveyConstraint.py Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE ''' Loading survey_sim/strategies/SurveySim_MSC_mpi.py +5 −4 Original line number Diff line number Diff line Loading @@ -2,7 +2,7 @@ Author: Zhang Xin zhangx@bao.ac.cn Date: 2024-09-19 15:53:27 LastEditors: Zhang Xin zhangx@bao.ac.cn LastEditTime: 2025-06-17 14:39:51 LastEditTime: 2025-06-30 09:49:51 FilePath: /CSST_Survey/survey_sim/strategies/SurveySim_MSC.py Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE ''' Loading Loading @@ -446,7 +446,8 @@ class SurveySim(object): self.shadowTime = [0, 0] self.bettery_level = bettery_level if cmgCons is None: self.cmgCons = cmg_constraint.cmgConstraint(orbit_time=0.0638) self.cmgCons = cmg_constraint.cmgConstraint( orbit_time=0.0638, cmgFlag=1) else: self.cmgCons = cmgCons Loading Loading @@ -977,7 +978,7 @@ class SurveySim(object): battery_q = self.surveyCons.BATTERY_LOW print("ERROR:-----Energy not balance") self.bettery_level = battery_q return returnTime, returnTime, curPSky, None, None, None, None, orbitDataId, isInSunSide, None, None, lastSatAtt, final_cmg_value, self.bettery_level return returnTime, returnTime, curPSky, None, None, None, None, orbitDataId, isInSunSide, None, None, lastSatAtt, self.cmgCons.total_cmg, self.bettery_level else: unObs_continue_flag = 0 returnTime = curTime + (final_use_time) / 86400.0 Loading Loading @@ -1026,7 +1027,7 @@ class SurveySim(object): # gc.collect() return returnTime, otime, self.skymap.skymap[final_index], sun_r1, moon_r1, sat_r1, satVel_r1, orbitDataId_r1, isInSunSide, final_exp_time, final_Angle, curSatAtt, final_cmg_value, final_energy return returnTime, otime, self.skymap.skymap[final_index], sun_r1, moon_r1, sat_r1, satVel_r1, orbitDataId_r1, isInSunSide, final_exp_time, final_Angle, curSatAtt, self.cmgCons.total_cmg, final_energy # locateSun(infp, otime, sun_r1); # locateMoon(infp, otime, moon_r1); Loading Loading
survey_sim/constraints/cmg_constraint.py +36 −3 Original line number Diff line number Diff line Loading @@ -12,13 +12,46 @@ import numpy as np class cmgConstraint(object): def __init__(self, cmgFlag=1, orbit_time=0.0638): self.initCMGWeight(flag=cmgFlag) # self.initCMGWeight(flag=cmgFlag) self.initCMG_Condition(flag=cmgFlag) self.orbit_time = orbit_time # 存储节点元素,每个元素包含三个值 [开始时间(儒略日), 当前节点cmg消耗量, 当前节点总共需要的时间(单位:天)] self.cmgNodes = [] self.total_cmg = 0 self.total_cmgTime = 0 def initCMG_Condition(self, flag=2): if flag == 1: self.CMG_angel_range = np.array([[0, 5], [5, 10], [10, 20], [20, 35], [ 35, 45], [45, 75], [75, 90], [90, 135], [135, 180]]) self.CMG_weight_single = np.array( [0., 1/29., 1/19., 1/13., 1/10., 1/6., 1/5., 1/3., 1/2.]) assert len(self.CMG_angel_range) == len( self.CMG_weight_single), "Invalid CMG data Init!" if flag == 2: self.CMG_angel_range = np.array([[0, 5], [5, 10], [10, 20], [20, 35], [ 35, 45], [45, 75], [75, 90], [90, 150], [150, 180]]) self.CMG_weight_single = np.array( [0., 1/29., 1/19., 1/13., 1/10., 1/6., 1/5., 1/4., 1/3.]) assert len(self.CMG_angel_range) == len( self.CMG_weight_single), "Invalid CMG data Init!" def get_cmg_use(self, tAngle=1.0): cmg_use = 0.0 if tAngle < 0: tAngle = 0 if tAngle > 180: tAngle = 180 for i in np.arange(len(self.CMG_angel_range)): c_range = self.CMG_angel_range[i] w = self.CMG_weight_single[i] if tAngle >= c_range[0] and tAngle < c_range[1]: cmg_use = w break if tAngle == 180: cmg_use = self.CMG_weight_single[-1] return cmg_use def initCMGWeight(self, flag=1): CMG_TM_FLAG = flag self.cmg_tm_tAngle = np.zeros(10) Loading Loading @@ -107,7 +140,7 @@ class cmgConstraint(object): 1.0 / 10.0, 1.0 / 6.0, 1.0 / 5.0, 1.0 / 34.0, 1.0 / 4.0, 1.0 / 3.0, ] ) Loading @@ -127,7 +160,7 @@ class cmgConstraint(object): ) self.cmg_tm_k = cmgWeight * cmgWRange def get_cmg_use(self, tAngle=1.0): def get_cmg_use_bak(self, tAngle=1.0): cmg_use = 0.0 Loading
survey_sim/constraints/surveyConstraint.py +1 −1 Original line number Diff line number Diff line Loading @@ -2,7 +2,7 @@ Author: Zhang Xin zhangx@bao.ac.cn Date: 2020-06-17 17:03:15 LastEditors: Zhang Xin zhangx@bao.ac.cn LastEditTime: 2025-04-08 14:20:26 LastEditTime: 2025-06-25 10:33:46 FilePath: /CSST_Survey/survey_sim/constraints/surveyConstraint.py Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE ''' Loading
survey_sim/strategies/SurveySim_MSC_mpi.py +5 −4 Original line number Diff line number Diff line Loading @@ -2,7 +2,7 @@ Author: Zhang Xin zhangx@bao.ac.cn Date: 2024-09-19 15:53:27 LastEditors: Zhang Xin zhangx@bao.ac.cn LastEditTime: 2025-06-17 14:39:51 LastEditTime: 2025-06-30 09:49:51 FilePath: /CSST_Survey/survey_sim/strategies/SurveySim_MSC.py Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE ''' Loading Loading @@ -446,7 +446,8 @@ class SurveySim(object): self.shadowTime = [0, 0] self.bettery_level = bettery_level if cmgCons is None: self.cmgCons = cmg_constraint.cmgConstraint(orbit_time=0.0638) self.cmgCons = cmg_constraint.cmgConstraint( orbit_time=0.0638, cmgFlag=1) else: self.cmgCons = cmgCons Loading Loading @@ -977,7 +978,7 @@ class SurveySim(object): battery_q = self.surveyCons.BATTERY_LOW print("ERROR:-----Energy not balance") self.bettery_level = battery_q return returnTime, returnTime, curPSky, None, None, None, None, orbitDataId, isInSunSide, None, None, lastSatAtt, final_cmg_value, self.bettery_level return returnTime, returnTime, curPSky, None, None, None, None, orbitDataId, isInSunSide, None, None, lastSatAtt, self.cmgCons.total_cmg, self.bettery_level else: unObs_continue_flag = 0 returnTime = curTime + (final_use_time) / 86400.0 Loading Loading @@ -1026,7 +1027,7 @@ class SurveySim(object): # gc.collect() return returnTime, otime, self.skymap.skymap[final_index], sun_r1, moon_r1, sat_r1, satVel_r1, orbitDataId_r1, isInSunSide, final_exp_time, final_Angle, curSatAtt, final_cmg_value, final_energy return returnTime, otime, self.skymap.skymap[final_index], sun_r1, moon_r1, sat_r1, satVel_r1, orbitDataId_r1, isInSunSide, final_exp_time, final_Angle, curSatAtt, self.cmgCons.total_cmg, final_energy # locateSun(infp, otime, sun_r1); # locateMoon(infp, otime, moon_r1); Loading