def __init__(self, systemsize, oas_object, data_type=np.float):
     QuantityOfInterest.__init__(self, systemsize, data_type=data_type)
     self.data_type = data_type
     self.p = oas_object.p
     self.rvs = oas_object.rvs
     self.rv_dict = oas_object.input_dict['rv_dict']
     self.update_rv = oas_object.update_rv
Exemple #2
0
 def __init__(self, systemsize, eigen_decayrate):
     QuantityOfInterest.__init__(self, systemsize)
     self.eigen_decayrate = eigen_decayrate
     self.eigen_vals = np.zeros(systemsize)
     self.eigen_vectors = np.zeros((systemsize, systemsize))
     self.getSyntheticEigenValues()
     self.getSyntheticEigenVectors()
    def __init__(self, systemsize, **kwargs):
        QuantityOfInterest.__init__(self, systemsize)
        self.V, self.R = np.linalg.qr(np.random.rand(systemsize, systemsize))
        self.E = np.sort(np.random.rand(systemsize))

        if kwargs['positive_definite'] == True:
            pass
        elif kwargs['positive_definite'] == False:
            self.E[0] = 0.0
    def __init__(self, systemsize, input_dict, data_type=np.float):
        QuantityOfInterest.__init__(self, systemsize, data_type=data_type)
        self.input_dict = input_dict
        # self.include_dict_rv = include_dict_rv # Bool for including random variables in the durface dictionary
        self.rv_dict = self.input_dict['rv_dict']

        self.p = Problem()
        self.rvs = self.p.model.add_subsystem('random_variables',
                                              IndepVarComp(),
                                              promotes_outputs=['*'])
        self.p.model.add_subsystem(
            'oas_scaneagle',
            OASScanEagle(mesh_dict=self.input_dict['mesh_dict'],
                         surface_dict_rv=self.rv_dict))

        # Declare rvs units to ensure type stability
        # self.rvs.add_output('Mach_number', val=0.071)
        self.rvs.add_output('Mach_number', val=self.rv_dict['Mach_number'])
        self.p.model.connect('Mach_number', 'oas_scaneagle.Mach_number')

        # self.rvs.add_output('CT', val=9.80665 * 8.6e-6, units='1/s') # TSFC
        self.rvs.add_output('CT', val=self.rv_dict['CT'], units='1/s')  # TSFC
        self.p.model.connect('CT', 'oas_scaneagle.CT')

        # self.rvs.add_output('W0', val=10.,  units='kg')
        self.rvs.add_output('W0', val=self.rv_dict['W0'], units='kg')
        self.p.model.connect('W0', 'oas_scaneagle.W0')

        self.rvs.add_output('E', val=self.rv_dict['E'], units='N/m**2')
        self.p.model.connect('E', 'oas_scaneagle.wing.struct_setup.assembly.E')
        self.p.model.connect(
            'E', 'oas_scaneagle.AS_point_0.wing_perf.struct_funcs.vonmises.E')

        self.rvs.add_output('G', val=self.rv_dict['G'], units='N/m**2')
        self.p.model.connect('G', 'oas_scaneagle.wing.struct_setup.assembly.G')
        self.p.model.connect(
            'G', 'oas_scaneagle.AS_point_0.wing_perf.struct_funcs.vonmises.G')

        self.rvs.add_output('mrho', val=self.rv_dict['mrho'], units='kg/m**3')
        self.p.model.connect(
            'mrho', 'oas_scaneagle.wing.struct_setup.structural_weight.mrho')

        self.p.setup()

        # Set up reusable arrays
        self.dJ_ddv = np.zeros(
            self.input_dict['ndv'],
            dtype=self.data_type)  # Used in eval_ObjGradient_dv
        self.con_arr = np.zeros(
            self.input_dict['n_constraints'],
            dtype=self.data_type)  # Used in eval_ConstraintQoI
        self.con_jac = np.zeros(
            (self.input_dict['n_constraints'], self.input_dict['ndv']),
            dtype=self.data_type)
 def __init__(self, systemsize, input_dict, data_type=np.float):
     QuantityOfInterest.__init__(self, systemsize, data_type=data_type)
     self.input_dict = input_dict
     num_segments = input_dict['num_segments']
     transcription_order = input_dict['transcription_order']
     transcription_type = input_dict['transcription_type']
     solve_segments = input_dict['solve_segments']
     self.interceptor_obj = InterceptorWrapper(num_segments=num_segments,
                                               transcription_order=transcription_order,
                                               transcription_type=transcription_type,
                                               solve_segments=solve_segments)
Exemple #6
0
    def __init__(self, systemsize):
        """
        Compute an exponential function of the form

            f = exp(a^T * a)

        where `a` is computed as

            x = [ a[0], a[1]/2, a[2]/3, ..., a[systemsize-1]/systemsize ]

        """
        QuantityOfInterest.__init__(self, systemsize)
    def __init__(self, systemsize, rv_dict):
        QuantityOfInterest.__init__(self, systemsize)
        # self.input_dict = input_dict # TODO: Add this feature
        # Default recommended values for the problem
        mean_v = 248.136 # Mean value of input random variable
        mean_alpha = 5   #
        mean_Ma = 0.84
        mean_re = 1.e6
        mean_rho = 0.38
        mean_cg = np.zeros((3))

        self.p = Problem() # Create problem object
        self.rvs = self.p.model.add_subsystem('random_variables', IndepVarComp(), promotes_outputs=['*'])
        self.rvs.add_output('mu', val=np.zeros(len(rv_dict)))
        self.p.model.add_subsystem('oas_example1', OASAerodynamic(rv_dict=rv_dict))

        # Figure out what are the random variables
        ctr = 0
        self.rv_array = np.array([])
        rv_indices = []
        if "v" in rv_dict:
            self.rv_array = np.append(self.rv_array, mean_v)
            rv_indices.append(ctr)
            self.p.model.connect('mu', 'oas_example1.v', src_indices=[ctr])
            ctr += 1
        if "alpha" in rv_dict:
            self.rv_array = np.append(self.rv_array, mean_alpha)
            rv_indices.append(ctr)
            self.p.model.connect('mu', 'oas_example1.alpha', src_indices=[ctr])
            ctr += 1
        if "Mach_number" in rv_dict:
            self.rv_array = np.append(self.rv_array, mean_Ma)
            rv_indices.append(ctr)
            self.p.model.connect('mu', 'oas_example1.Mach_number', src_indices=[ctr])
            ctr += 1
        if "re" in rv_dict:
            self.rv_array = np.append(self.rv_array, mean_re)
            rv_indices.append(ctr)
            self.p.model.connect('mu', 'oas_example1.re', src_indices=[ctr])
            ctr += 1
        if "rho" in rv_dict:
            self.rv_array = np.append(self.rv_array, mean_rho)
            rv_indices.append(ctr)
            self.p.model.connect('mu', 'oas_example1.rho', src_indices=[ctr])
            ctr += 1

        self.p.setup(force_alloc_complex=True)
        self.p['mu'] = self.rv_array
Exemple #8
0
    def __init__(self, systemsize, input_dict, data_type=np.float):
        QuantityOfInterest.__init__(self, systemsize, data_type=data_type)

        # Load the eigenmodes
        fname = input_dict['surrogate info full path']
        surrogate_info = np.load(fname)
        surrogate_samples = surrogate_info['input_samples']
        fval_arr = surrogate_info['fvals']

        # Create the surrogate
        self.surrogate_type = input_dict['surrogate_type']
        if self.surrogate_type == 'quadratic':
            self.surrogate = QP()
        elif self.surrogate_type == 'kriging':
            theta0 = input_dict['kriging_theta']
            self.surrogate = KRG(theta0=[theta0],
                                 corr=input_dict['correlation function'])
        else:
            raise NotImplementedError
        self.surrogate.set_training_values(surrogate_samples.T, fval_arr)
        self.surrogate.train()
Exemple #9
0
    def __init__(self, systemsize, input_dict, data_type=np.float):
        QuantityOfInterest.__init__(self, systemsize, data_type=data_type)

        # Default attributes
        self.input_dict = input_dict
        self._write_files = False
        self._aggregate_solutions = False

        num_segments = input_dict['num_segments']
        transcription_order = input_dict['transcription_order']
        transcription_type = input_dict['transcription_type']
        solve_segments = input_dict['solve_segments']
        use_polynomial_control = input_dict['use_polynomial_control']

        if 'write_files' in input_dict:
            self._write_files = True
            self._ctr1 = 0
            self._target_directory = input_dict['target_output_directory']

        if 'aggregate_solutions' in input_dict:
            self._aggregate_solutions = True
            self._ctr2 = 0
            self.altitude_aggregate = {} # np.zeros(transcription_order*num_segments + 1)
            self.aoa_aggregate = {} # np.zeros(transcription_order*num_segments)
 def __init__(self, systemsize=2, n_parameters=2, data_type=np.float):
     QuantityOfInterest.__init__(self, systemsize)
     self.data_type = data_type
     self.n_parameters = n_parameters
     self.dv = np.ones(n_parameters, dtype=self.data_type)
 def __init__(self, systemsize, tuple):
     QuantityOfInterest.__init__(self, systemsize)
     self.extra_args = tuple
     self.quadratic_matrix = np.diag([50, 1])
Exemple #12
0
    def __init__(self, systemsize, input_dict, data_type=np.float):
        QuantityOfInterest.__init__(self, systemsize, data_type=data_type)
        self.input_dict = input_dict
        self.rv_dict = self.input_dict['rv_dict']

        self.p = Problem()
        self.rvs = self.p.model.add_subsystem('random_variables',
                                              IndepVarComp(),
                                              promotes_outputs=['*'])
        self.p.model.add_subsystem(
            'oas_scaneagle',
            OASScanEagle(mesh_dict=self.input_dict['mesh_dict'],
                         rv_dict=self.rv_dict))

        # Declare rvs units to ensure type stability
        if 'Mach_number' in self.rv_dict:
            self.rvs.add_output('Mach_number',
                                val=self.rv_dict['Mach_number']['mean'])
            self.p.model.connect('Mach_number', 'oas_scaneagle.Mach_number')

        if 'CT' in self.rv_dict:
            # self.rvs.add_output('CT', val=self.rv_dict['CT']['mean'], units='1/s') # TSFC
            self.rvs.add_output('CT',
                                val=self.rv_dict['CT']['mean'],
                                units='1/h')  # TSFC
            self.p.model.connect('CT', 'oas_scaneagle.CT')

        if 'W0' in self.rv_dict:
            self.rvs.add_output('W0',
                                val=self.rv_dict['W0']['mean'],
                                units='kg')
            self.p.model.connect('W0', 'oas_scaneagle.W0')

        if 'R' in self.rv_dict:
            self.rvs.add_output('R', val=self.rv_dict['R']['mean'], units='km')
            self.p.model.connect('R', 'oas_scaneagle.R')

        if 'load_factor' in self.rv_dict:
            self.rvs.add_output('load_factor',
                                val=self.rv_dict['load_factor']['mean'])
            self.p.model.connect('load_factor', 'oas_scaneagle.load_factor')
            self.p.model.connect(
                'load_factor',
                'oas_scaneagle.AS_point_0.coupled.wing.load_factor')

        if 'E' in self.rv_dict:
            self.rvs.add_output('E',
                                val=self.rv_dict['E']['mean'],
                                units='N/m**2')
            self.p.model.connect('E',
                                 'oas_scaneagle.wing.struct_setup.assembly.E')
            self.p.model.connect(
                'E',
                'oas_scaneagle.AS_point_0.wing_perf.struct_funcs.vonmises.E')

        if 'G' in self.rv_dict:
            self.rvs.add_output('G',
                                val=self.rv_dict['G']['mean'],
                                units='N/m**2')
            self.p.model.connect('G',
                                 'oas_scaneagle.wing.struct_setup.assembly.G')
            self.p.model.connect(
                'G',
                'oas_scaneagle.AS_point_0.wing_perf.struct_funcs.vonmises.G')

        if 'mrho' in self.rv_dict:
            self.rvs.add_output('mrho',
                                val=self.rv_dict['mrho']['mean'],
                                units='kg/m**3')
            self.p.model.connect(
                'mrho',
                'oas_scaneagle.wing.struct_setup.structural_weight.mrho')

        if 'altitude' in self.rv_dict:
            self.rvs.add_output('altitude',
                                val=self.rv_dict['altitude']['mean'],
                                units='km')
            self.p.model.connect('altitude', 'oas_scaneagle.altitude')

        self.p.setup(check=False)

        # Set up reusable arrays
        self.dJ_ddv = np.zeros(
            self.input_dict['ndv'],
            dtype=self.data_type)  # Used in eval_ObjGradient_dv
        self.con_arr = np.zeros(
            self.input_dict['n_constraints'],
            dtype=self.data_type)  # Used in eval_ConstraintQoI
        self.con_jac = np.zeros(
            (self.input_dict['n_constraints'], self.input_dict['ndv']),
            dtype=self.data_type)
 def __init__(self, systemsize):
     QuantityOfInterest.__init__(self, systemsize)
 def __init__(self, systemsize):
     QuantityOfInterest.__init__(self, systemsize)
     self.A = np.random.rand(systemsize)
 def __init__(self, systemsize):
     QuantityOfInterest.__init__(self, systemsize)
     self.quadratic_matrix = np.diag([50, 40, 30, 20, 1])
 def __init__(self, systemsize=2):
     QuantityOfInterest.__init__(self, systemsize)
     self.local_minima = np.zeros(2)
     self.global_minima = 0.5 * np.array([-3 - np.sqrt(7), -3 - np.sqrt(7)])
     self.saddle_point = 0.5 * np.array([-3 + np.sqrt(7), -3 + np.sqrt(7)])
Exemple #17
0
 def __init__(self, systemsize):
     QuantityOfInterest.__init__(self, systemsize)
     self.a = np.array([0.7, 0.3])