source: issm/trunk-jpl/src/m/qmu/dakota_in_data.py@ 25163

Last change on this file since 25163 was 25163, checked in by jdquinn, 5 years ago

CHG: MATLAB -> Python translations

  • Property svn:executable set to *
File size: 3.3 KB
Line 
1#move this stuff elsewhere
2from helpers import *
3
4from dakota_in_write import *
5from dakota_in_params import *
6from MatlabFuncs import *
7
8
9def dakota_in_data(dmeth, variables, responses, dparams, filei, *args):
10 '''
11 DAKOTA_IN_DATA - define the data to write the dakota .in and .m files.
12
13 Usage:
14 [] = dakota_in_data(dmeth, variables, responses, dparams, filei, *args)
15
16 where the required input is:
17 dmeth (dakota_method, method class object)
18 variables (structure array, variable class objects)
19 responses (structure array, response class objects)
20 dparams (structure array, method - independent parameters)
21 filei (character, name of .in and .m files)
22
23 Params may be empty, in which case defaults will be used.
24
25 The optional args are passed directly through to the QmuUpdateFunctions
26 brancher to be used by the analysis package. For example, this could be
27 model information.
28
29 This function defines the data to write the dakota .in and .m files. It is
30 necessary for multiple reasons. First, it collects the parameters and
31 applies some defaults that are unique to the environment. Second, some
32 analysis package ariables and/or responses may be treated differently by
33 Dakota. For example, an analysis package variable may be defined as an
34 array, so the QmuSetupDesign brancher will create Dakota variables for each
35 element of the array. Finally, it calls the functions to write the .in and
36 .m files. this function is independent of the particular analysis package.
37
38 This data would typically be generated by a MATLAB script for a specific
39 model, using the method, variable, and response class objects.
40 '''
41
42 # parameters
43 # get default set of parameters
44 params = dakota_in_params(struct())
45 # merge specified parameters into default set, whether or not
46 # they already exist
47 fnames = fieldnames(dparams)
48
49 for fieldname in fnames:
50 if not isfield(params, fieldname):
51 print('WARNING: dakota_in_data:unknown_param: No parameter {} in default parameter set.'.format(str(fieldname)))
52 exec('params.{} = vars(dparams)[fieldname]'.format(fieldname))
53
54 # use matlab even though we are running python
55 if params.direct and params.analysis_driver == '':
56 params.analysis_driver = 'matlab'
57
58 if strcmpi(params.analysis_driver, 'matlab') and params.analysis_components == '':
59 [pathstr, name, ext] = fileparts(filei)
60 params.analysis_components = fullfile(pathstr, name + '.py')
61
62 # merge method parameters, though they shouldn't be in dparams
63 # dmeth = dmeth_params_merge(dmeth, dparams)
64
65 # variables
66 fnames = fieldnames(variables)
67
68 # works like matlab arbitrary structs / classes, remembers order of input attributes
69 dvar = OrderedStruct()
70 dresp = OrderedStruct()
71
72 for i in range(len(fnames)):
73 # currently all variable types can just be copied
74 exec(('dvar.%s = vars(variables)[fnames[i]]') % (fnames[i]))
75
76 # responses
77 fnames = fieldnames(responses)
78
79 for i in range(len(fnames)):
80 # currently all response types can just be copied
81 exec(('dresp.%s = vars(responses)[fnames[i]]') % (fnames[i]))
82
83 # write files
84 #Write in file
85 dakota_in_write(dmeth, dvar, dresp, params, filei, *args)
Note: See TracBrowser for help on using the repository browser.