def test_DLC_envelope(self):

        opt_tags = dlcdefs.excel_stabcon('./DLCs/', fext='xls', silent=True)

        reader = HAWC2InputReader()
        reader.htc_master_file = 'main_h2_envelope.htc'
        reader.execute()

        for icase, case in enumerate(opt_tags):
            case['[run_dir]'] = ''
            writer = HAWC2InputWriter()
            writer.vartrees = reader.vartrees
            writer.vartrees.aero.ae_filename = 'data/' + case[
                '[case_id]'] + '_ae.dat'
            writer.vartrees.aero.pc_filename = 'data/' + case[
                '[case_id]'] + '_pc.dat'
            writer.case_id = case['[case_id]']
            writer.vartrees.tags2var(case)
            writer.execute()

            wrapper = HAWC2Wrapper()
            wrapper.copyback_results = False
            wrapper.hawc2bin = 'HAWC2mb.exe'
            wrapper.log_directory = case['[log_dir]']
            wrapper.case_id = writer.case_id
            wrapper.verbose = False
            wrapper.compute()

            config = {}
            config['neq'] = 4
            config['no_bins'] = 46
            config['m'] = [12]

            ch_list = []
            string = 'blade%i-blade%i-node-%3.3i-'
            for iblade in range(1, 4):
                for i in range(1, 6):
                    ch_list.append([
                        string % (iblade, iblade, i) + 'momentvec-x',
                        string % (iblade, iblade, i) + 'momentvec-y',
                        string % (iblade, iblade, i) + 'momentvec-z',
                        string % (iblade, iblade, i) + 'forcevec-x',
                        string % (iblade, iblade, i) + 'forcevec-y',
                        string % (iblade, iblade, i) + 'forcevec-z'
                    ])

            config['ch_envelope'] = ch_list
            output = HAWC2OutputBase(config)
            output.execute(case)
    def get_dlc_casedefs(self):
        """
        Create iter_dict and opt_tags based on spreadsheets
        """

        iter_dict = dict()
        iter_dict['[empty]'] = [False]

        # see if a htc/DLCs dir exists
        dlcs_dir = os.path.join(self.P_SOURCE, 'htc', 'DLCs')
        if os.path.exists(dlcs_dir):
            opt_tags = dlcdefs.excel_stabcon(dlcs_dir)
        else:
            opt_tags = dlcdefs.excel_stabcon(os.path.join(self.P_SOURCE, 'htc'))

        if len(opt_tags) < 1:
            raise ValueError('There are is not a single case defined. Make sure '
                             'the DLC spreadsheets are configured properly.')

        # add all the root files, except anything with *.zip
        f_ziproot = []
        for (dirpath, dirnames, fnames) in os.walk(self.P_SOURCE):
            # remove all zip files
            for i, fname in enumerate(fnames):
                if fname.endswith('.zip'):
                    fnames.pop(i)
            f_ziproot.extend(fnames)
            break
        # and add those files
        for opt in opt_tags:
            opt['[zip_root_files]'] = f_ziproot

        self.master.output_dirs.extend('[Case folder]')
        self.master.output_dirs.extend('[case_id]')

        return iter_dict, opt_tags
Exemple #3
0
def launch_dlcs_excel(sim_id,
                      silent=False,
                      verbose=False,
                      pbs_turb=False,
                      runmethod=None,
                      write_htc=True,
                      zipchunks=False,
                      walltime='04:00:00',
                      postpro_node=False,
                      compress=False,
                      dlcs_dir='htc/DLCs',
                      postpro_node_zipchunks=True,
                      wine_arch='win32',
                      wine_prefix='~/.wine32',
                      m=[3, 4, 6, 8, 9, 10, 12],
                      prelude='',
                      linux=False):
    """
    Launch load cases defined in Excel files
    """

    iter_dict = dict()
    iter_dict['[empty]'] = [False]

    if postpro_node or postpro_node_zipchunks:
        #        pyenv = 'py36-wetb'
        pyenv = 'wetb_py3'
    else:
        pyenv = None

    # FIXME: THIS IS VERY MESSY, we have wine_prefix/arch and exesingle/chunks
    if linux:
        wine_arch = None
        wine_prefix = None
        prelude = 'module load mpi/openmpi_1.6.5_intelv14.0.0\n'

    # if linux:
    #     pyenv = 'wetb_py3'
    #     pyenv_cmd = 'source /home/python/miniconda3/bin/activate'
    #     exesingle = "{hawc2_exe:} {fname_htc:}"
    #     exechunks = "({winenumactl:} {hawc2_exe:} {fname_htc:}) "
    #     exechunks += "2>&1 | tee {fname_pbs_out:}"
    # else:
    #     pyenv = ''
    #     pyenv_cmd = 'source /home/ozgo/bin/activate_hawc2cfd.sh'
    #     exesingle = "time {hawc2_exe:} {fname_htc:}"
    #     exechunks = "(time numactl --physcpubind=$CPU_NR {hawc2_exe:} {fname_htc:}) "
    #     exechunks += "2>&1 | tee {fname_pbs_out:}"

    # see if a htc/DLCs dir exists
    # Load all DLC definitions and make some assumptions on tags that are not
    # defined
    if os.path.exists(dlcs_dir):
        opt_tags = dlcdefs.excel_stabcon(dlcs_dir,
                                         silent=silent,
                                         p_source=P_SOURCE)
    else:
        opt_tags = dlcdefs.excel_stabcon(os.path.join(P_SOURCE, 'htc'),
                                         silent=silent,
                                         p_source=P_SOURCE)

    if len(opt_tags) < 1:
        raise ValueError('There are is not a single case defined. Make sure '
                         'the DLC spreadsheets are configured properly.')

    # add all the root files, except anything with *.zip
    f_ziproot = []
    for (dirpath, dirnames, fnames) in os.walk(P_SOURCE):
        # remove all zip files
        for i, fname in enumerate(fnames):
            if not fname.endswith('.zip'):
                f_ziproot.append(fname)
        break
    # and add those files
    for opt in opt_tags:
        opt['[zip_root_files]'] = f_ziproot

    if runmethod == None:
        runmethod = RUNMETHOD

    master = master_tags(sim_id,
                         runmethod=runmethod,
                         silent=silent,
                         verbose=verbose)
    master.tags['[sim_id]'] = sim_id
    master.tags['[walltime]'] = walltime
    master.output_dirs.append('[Case folder]')
    master.output_dirs.append('[Case id.]')

    # TODO: copy master and DLC exchange files to p_root too!!

    # all tags set in master_tags will be overwritten by the values set in
    # variable_tag_func(), iter_dict and opt_tags
    # values set in iter_dict have precedence over opt_tags vartag_func()
    # has precedense over iter_dict, which has precedence over opt_tags.
    # dlcdefs.vartag_excel_stabcon adds support for creating hydro files
    vartag_func = dlcdefs.vartag_excel_stabcon
    cases = sim.prepare_launch(iter_dict,
                               opt_tags,
                               master,
                               vartag_func,
                               write_htc=write_htc,
                               runmethod=runmethod,
                               copyback_turb=True,
                               update_cases=False,
                               msg='',
                               ignore_non_unique=False,
                               run_only_new=False,
                               pbs_fname_appendix=False,
                               short_job_names=False,
                               silent=silent,
                               verbose=verbose,
                               pyenv=pyenv,
                               m=[3, 4, 6, 8, 9, 10, 12],
                               postpro_node=postpro_node,
                               exechunks=None,
                               exesingle=None,
                               prelude=prelude,
                               postpro_node_zipchunks=postpro_node_zipchunks,
                               wine_arch=wine_arch,
                               wine_prefix=wine_prefix)

    if pbs_turb:
        # to avoid confusing HAWC2 simulations and Mann64 generator PBS files,
        # MannTurb64 places PBS launch scripts in a "pbs_in_turb" folder
        mann64 = sim.MannTurb64(silent=silent)
        mann64.walltime = '00:59:59'
        mann64.queue = 'workq'
        mann64.gen_pbs(cases)

    if zipchunks:
        # create chunks
        # sort so we have minimal copying turb files from mimer to node/scratch
        # note that walltime here is for running all cases assigned to the
        # respective nodes. It is not walltime per case.
        sorts_on = ['[DLC]', '[Windspeed]']
        create_chunks_htc_pbs(cases,
                              sort_by_values=sorts_on,
                              queue='workq',
                              ppn=20,
                              nr_procs_series=3,
                              walltime='20:00:00',
                              chunks_dir='zip-chunks-jess',
                              compress=compress,
                              wine_arch=wine_arch,
                              wine_prefix=wine_prefix,
                              prelude=prelude)


#        create_chunks_htc_pbs(cases, sort_by_values=sorts_on, queue='workq',
#                              ppn=12, nr_procs_series=3, walltime='20:00:00',
#                              chunks_dir='zip-chunks-gorm', compress=compress,
#                              wine_arch=wine_arch, wine_prefix=wine_prefix)

    df = sim.Cases(cases).cases2df()
    df.to_excel(os.path.join(POST_DIR, sim_id + '.xls'))
    def __init__(self, config, dlcs_folder, dlcs_fext='xls', cssize=None, pfsize=None):
        super(HAWC2AeroElasticSolver, self).__init__()

        if cssize is not None:
            print 'Warning: cssize should be set in config["structural_sections"]'
            config['structural_sections'] = cssize

        if pfsize is not None:
            print 'Warning: pfsize should be set in config["aerodynamic_sections"]'
            config['aerodynamic_sections'] = pfsize

        # check that the config is ok
        self._check_config(config)

        # load cases and their tags
        dlcs = dlcdefs.excel_stabcon(dlcs_folder, fext=dlcs_fext, silent=True)
        self.ncases = len(dlcs)
        if self.ncases == 0:
            raise RuntimeError('Something went wrong when reading the DLCs, ncases=0!')

        promote = []
        if config['with_tsr']:
            promote.append('tsr')

        if config['with_structure']:
            promote.append('blade_beam_structure')

        if config['with_geom']:
            var = ['s', 'x', 'y', 'z', 'rot_x', 'rot_y', 'rot_z',
                             'chord', 'rthick', 'p_le']
            for v in var:
                promote.append(v)
            promote.append('blade_length')

        if 'with_aero_coeffs' in config.keys():
            if config['with_aero_coeffs']:
                promote.append('airfoildata:blend_var')
                for i in range(config['naero_coeffs']):
                    promote.extend(['airfoildata:aoa%02d' % i,
                                    'airfoildata:cl%02d' % i,
                                    'airfoildata:cd%02d' % i,
                                    'airfoildata:cm%02d' % i])

        # Add outputs
        agg_promo = []
        for stat in config['HAWC2Outputs']['stat_list']:
            name = 'stat_'+stat
            agg_promo.append(name)
        for m in config['HAWC2Outputs']['m']:
            name = 'fatigue_m%i' % m
            agg_promo.append(name)

        if 'ch_envelope' in config['HAWC2Outputs'].keys():
            for isec in range(config['structural_sections']):
                name = 'blade_loads_envelope_sec%03d' % isec
                agg_promo.append(name)

        self.add('aggregate', OutputsAggregator(config, len(dlcs)),
                 promotes=agg_promo)

        pg = self.add('pg', ParallelGroup(), promotes=promote)

        for icase, case in enumerate(dlcs):
            case_id = case['[case_id]'].replace('-', '_')
            pg.add(case_id, HAWC2Workflow(config, case),
                   promotes=promote)

            self.connect('pg.%s.outputs_statistics' % case_id,
                         'aggregate.outputs_statistics_%d' % icase)
            self.connect('pg.%s.outputs_fatigue' % case_id,
                         'aggregate.outputs_fatigue_%d' % icase)
            if 'ch_envelope' in config['HAWC2Outputs'].keys():
                self.connect('pg.%s.outputs_envelope' % case_id,
                             'aggregate.outputs_envelope_%d' % icase)
    def test_DLC(self):

        opt_tags = dlcdefs.excel_stabcon('./DLCs/', fext='xls', silent=True)

        reader = HAWC2InputReader()
        reader.htc_master_file = 'main_h2.htc'
        reader.execute()
        nan = np.nan
        std_ref = [
            [
                1.15468610453, 20.623820042, 0.0740770493071, 0.0,
                1.63883455995e-13, 0.0, 2.92527680742e-13, 0.0,
                1.05186187846e-13, 0.00448084986512, 0.0, 0.0, 0.0,
                0.0667195480442, 0.0399570220043, 0.0472457197536,
                8274.98592144, 2262.75202353, 1757.4399563, 1312.15413729,
                160.871998807, 1728.97639082, 2342.04778773, 2037.83218151,
                642.926932085, 528.301580539, 1863.59205836, 28.5365363394,
                623.07691339, 3799.86728189, 97.9153652396, 1184.56277166,
                4311.55945802, 91.3815558524, 337.08531561, 716.108650974,
                9.8802695592, 393.601651419, 2052.93701803, 35.1914829007,
                566.294446379, 2164.10365741, 31.2861603289, 0.00519990875458,
                0.0317126196777, 0.152721894284, 0.112067971908,
                0.158007178759, 0.181269098788, 0.010676652669, 0.433596301372,
                0.175455345668, 0.013016978806, 0.434643362013, 0.359175518897,
                0.0214229824982, 18.6265089573, 2.06803508288, 25.0941539507,
                0.212244149063, 1.31535369178, 1.02342877799, 2.57083866195,
                0.131488392814, 0.0976950118386, 0.233573131863,
                0.00221016870252, 0.00374349100002, 0.00730561627894, 0.0, 0.0,
                0.0, 0.0, 0.0, 0.0158365766493, 0.000246378358914,
                0.000246373116992, 0.0, 17355.3928633, 17298.5867446, 0.0, 0.0,
                0.0, 0.000246376550094, 1825.73496434, 0.00514181322312,
                0.00511408917708, 0.0, 2.38418579102e-07, 0.0, 0.0, 0.0,
                6.76987012183e-19, 0.0, 0.0, 0.00607777508278, 62.6460368858,
                19.4451050235, 0.0, 62.6460368858, 0.0206862416792,
                642931.690171, 1.78813934326e-07, 0.0, 0.0, 0.0, 0.0, 0.0,
                12.84568112
            ],
            [
                1.15468610453, 20.623820042, 0.0740770493071, 0.0,
                1.63883455995e-13, 0.0, 2.92527680742e-13, 0.0,
                1.05186187846e-13, 0.00448084986512, 0.0, 0.0, 0.0,
                0.0618272310876, 0.136897588111, 0.0416334075112,
                8274.98592144, 2262.75202353, 1757.4399563, 1312.15413729,
                160.871998807, 1728.97639082, 2342.04778773, 2037.83218151,
                642.926932085, 528.301580539, 1863.59205836, 28.5365363394,
                623.07691339, 3799.86728189, 97.9153652396, 1184.56277166,
                4311.55945802, 91.3815558524, 337.08531561, 716.108650974,
                9.8802695592, 393.601651419, 2052.93701803, 35.1914829007,
                566.294446379, 2164.10365741, 31.2861603289, 0.00519990875458,
                0.0317126196777, 0.152721894284, 0.112067971908,
                0.158007178759, 0.181269098788, 0.010676652669, 0.433596301372,
                0.175455345668, 0.013016978806, 0.434643362013, 0.359175518897,
                0.0214229824982, 18.6265089573, 2.06803508288, 25.0941539507,
                0.0772392568926, 0.922723143347, 1.26687366066, 2.22751007797,
                0.0900142147177, 0.12071187503, 0.202693610237,
                0.00358832154051, 0.00394294579261, 0.00862773061716, 0.0, 0.0,
                0.0, 0.0, 0.0, 0.0237388360613, 0.000246378358914,
                0.000246373116992, 0.0, 17355.3928633, 17298.5867446, 0.0, 0.0,
                0.0, 0.000246376550094, 1825.73496434, 0.00514181322312,
                0.00511408917708, 0.0, 2.38418579102e-07, 0.0, 0.0, 0.0,
                6.76987012183e-19, 0.0, 0.0, 0.00607777508278, 62.6460368858,
                19.4451050235, 0.0, 62.6460368858, 0.0206862416792,
                642931.690171, 1.78813934326e-07, 0.0, 0.0, 0.0, 0.0, 0.0,
                12.84568112
            ],
            [
                1.15468610453, 20.623820042, 0.0740770493071, 0.0,
                1.63883455995e-13, 0.0, 2.92527680742e-13, 0.0,
                1.05186187846e-13, 0.00448084986512, 0.0, 0.0, 0.0,
                0.0304850999051, 0.0493848314637, 0.018868019291,
                8274.98592144, 2262.75202353, 1757.4399563, 1312.15413729,
                160.871998807, 1728.97639082, 2342.04778773, 2037.83218151,
                642.926932085, 528.301580539, 1863.59205836, 28.5365363394,
                623.07691339, 3799.86728189, 97.9153652396, 1184.56277166,
                4311.55945802, 91.3815558524, 337.08531561, 716.108650974,
                9.8802695592, 393.601651419, 2052.93701803, 35.1914829007,
                566.294446379, 2164.10365741, 31.2861603289, 0.00519990875458,
                0.0317126196777, 0.152721894284, 0.112067971908,
                0.158007178759, 0.181269098788, 0.010676652669, 0.433596301372,
                0.175455345668, 0.013016978806, 0.434643362013, 0.359175518897,
                0.0214229824982, 18.6265089573, 2.06803508288, 25.0941539507,
                0.0290628277852, 0.995506567128, 1.02838432033, 2.19556951898,
                0.0950211339582, 0.093436891305, 0.203007308904,
                0.00434149608136, 0.00352270188921, 0.00959668564148, 0.0, 0.0,
                0.0, 0.0, 0.0, 0.0171455782373, 0.000246378358914,
                0.000246373116992, 0.0, 17355.3928633, 17298.5867446, 0.0, 0.0,
                0.0, 0.000246376550094, 1825.73496434, 0.00514181322312,
                0.00511408917708, 0.0, 2.38418579102e-07, 0.0, 0.0, 0.0,
                6.76987012183e-19, 0.0, 0.0, 0.00607777508278, 62.6460368858,
                19.4451050235, 0.0, 62.6460368858, 0.0206862416792,
                642931.690171, 1.78813934326e-07, 0.0, 0.0, 0.0, 0.0, 0.0,
                12.84568112
            ]
        ]

        min_ref = [
            [
                1.02, 18.2528, 2.71844, 0.0, -4.37326e-13, 0.0, -8.74653e-13,
                0.0, -3.57812e-13, 0.295914, 0.0, 0.0, 0.0, -0.163887, 0.10136,
                -0.0705254, -20387.8, -4770.09, -3219.08, -8557.29, -331.309,
                -3094.91, -8273.69, -10273.5, -1914.08, -1927.65, 1908.95,
                14.4236, -2336.55, -15279.6, -307.368, -3830.56, -7509.66,
                -154.559, -1508.59, 559.788, -7.70657, -505.606, -6453.2,
                -113.679, -1734.36, -3971.15, -52.0381, -0.0103338, -0.093089,
                -0.280412, -0.170996, 0.0414103, -3.35387, 86.3581, -1.38289,
                -3.61419, 86.3357, -0.771033, -3.6373, 86.3418, -88.9843,
                -13.8366, -203.745, -0.80437, -2.58734, -0.0269182, -4.64975,
                0.0696768, 0.342503, -0.0503314, 0.00624713, 0.00382888,
                -0.00087769, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00716154, 0.311282,
                -0.316718, 0.0, -2.24362e+07, 2.22475e+07, 0.0, 5.13464e+06,
                0.0, -0.693718, -1.00068e+07, -5.94435, 5.88228, 0.0, 1.43117,
                0.0, 0.0, 0.0, -1.96412e-18, 0.0, 0.0, 0.13194, -397.661,
                -179.295, 0.0, -397.661, -0.190739, -2.7327e+06, 0.94, 0.0,
                0.0, 0.0, 0.0, 0.0, 19.3039
            ],
            [
                1.02, 18.2528, 2.71844, 0.0, -4.37326e-13, 0.0, -8.74653e-13,
                0.0, -3.57812e-13, 0.295914, 0.0, 0.0, 0.0, -0.0786841,
                0.052737, -0.0416812, -20387.8, -4770.09, -3219.08, -8557.29,
                -331.309, -3094.91, -8273.69, -10273.5, -1914.08, -1927.65,
                1908.95, 14.4236, -2336.55, -15279.6, -307.368, -3830.56,
                -7509.66, -154.559, -1508.59, 559.788, -7.70657, -505.606,
                -6453.2, -113.679, -1734.36, -3971.15, -52.0381, -0.0103338,
                -0.093089, -0.280412, -0.170996, 0.0414103, -3.35387, 86.3581,
                -1.38289, -3.61419, 86.3357, -0.771033, -3.6373, 86.3418,
                -88.9843, -13.8366, -203.745, -0.0582635, 0.618724, -0.90401,
                -2.7911, 0.436152, 0.290172, 0.147358, 0.00412495, 0.00295085,
                -0.00239838, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00323438, 0.311282,
                -0.316718, 0.0, -2.24362e+07, 2.22475e+07, 0.0, 5.13464e+06,
                0.0, -0.693718, -1.00068e+07, -5.94435, 5.88228, 0.0, 1.43117,
                0.0, 0.0, 0.0, -1.96412e-18, 0.0, 0.0, 0.13194, -397.661,
                -179.295, 0.0, -397.661, -0.190739, -2.7327e+06, 0.94, 0.0,
                0.0, 0.0, 0.0, 0.0, 19.3039
            ],
            [
                1.02, 18.2528, 2.71844, 0.0, -4.37326e-13, 0.0, -8.74653e-13,
                0.0, -3.57812e-13, 0.295914, 0.0, 0.0, 0.0, -0.020951,
                0.0971278, -0.0560079, -20387.8, -4770.09, -3219.08, -8557.29,
                -331.309, -3094.91, -8273.69, -10273.5, -1914.08, -1927.65,
                1908.95, 14.4236, -2336.55, -15279.6, -307.368, -3830.56,
                -7509.66, -154.559, -1508.59, 559.788, -7.70657, -505.606,
                -6453.2, -113.679, -1734.36, -3971.15, -52.0381, -0.0103338,
                -0.093089, -0.280412, -0.170996, 0.0414103, -3.35387, 86.3581,
                -1.38289, -3.61419, 86.3357, -0.771033, -3.6373, 86.3418,
                -88.9843, -13.8366, -203.745, -0.0530781, 0.461831, -0.272344,
                -2.18937, 0.428871, 0.344658, 0.211512, 0.0052319, 0.0040271,
                -0.00574167, 0.0, 0.0, 0.0, 0.0, 0.0, 0.00633216, 0.311282,
                -0.316718, 0.0, -2.24362e+07, 2.22475e+07, 0.0, 5.13464e+06,
                0.0, -0.693718, -1.00068e+07, -5.94435, 5.88228, 0.0, 1.43117,
                0.0, 0.0, 0.0, -1.96412e-18, 0.0, 0.0, 0.13194, -397.661,
                -179.295, 0.0, -397.661, -0.190739, -2.7327e+06, 0.94, 0.0,
                0.0, 0.0, 0.0, 0.0, 19.3039
            ]
        ]

        m12_ref = [
            [
                3.34676773271, 59.7548542476, 0.468059943101, nan,
                7.76083600193e-13, nan, 1.49054185128e-12, nan,
                5.62240977778e-13, 0.0248237883755, nan, nan, nan,
                0.214395394717, 0.143972797391, 0.164388856447, 23175.7579878,
                8263.14369097, 5629.17003676, 4144.20611741, 598.314219059,
                5506.35573909, 7120.33780651, 7408.99315106, 3919.978416,
                2002.69311878, 6421.48847582, 116.400749013, 2322.37864321,
                12700.9957402, 283.781644151, 4139.58768945, 14634.4856958,
                287.905841024, 1263.10491073, 2599.44022781, 42.4278111763,
                1310.31010198, 5982.42125634, 118.97185467, 1783.03402345,
                7017.21799324, 108.920729664, 0.017825860875, 0.0764152462997,
                0.515002924131, 0.411861132403, 0.606506071365, 0.624728509324,
                0.0371483988949, 1.20104703452, 0.576028926024,
                0.0458456186893, 1.27743259762, 1.02915696571, 0.0638579250184,
                51.3860015957, 5.78773035326, 70.463754011, 0.772368825253,
                4.46989677658, 3.09977639807, 8.32214929559, 0.419068094375,
                0.296971698047, 0.722744001694, 0.00882688351975,
                0.0127246329558, 0.0263877197342, nan, nan, nan, nan, nan,
                0.0448986227494, 0.0010587898629, 0.00105881494617, nan,
                74317.6676684, 74065.1727613, nan, nan, nan, 0.00105881494617,
                9995.68097918, 0.0223128089364, 0.0222036427514, nan, nan, nan,
                nan, nan, 1.87259744285e-18, nan, nan, 0.0181154282518,
                810.407157775, 260.90408433, nan, 810.407157775,
                0.277556892867, 3920433.62154, nan, nan, nan, nan, nan, nan,
                38.0249079495
            ],
            [
                3.34676773271, 59.7548542476, 0.468059943101, nan,
                7.76083600193e-13, nan, 1.49054185128e-12, nan,
                5.62240977778e-13, 0.0248237883755, nan, nan, nan,
                0.206887549082, 0.386371713228, 0.13328230517, 23175.7579878,
                8263.14369097, 5629.17003676, 4144.20611741, 598.314219059,
                5506.35573909, 7120.33780651, 7408.99315106, 3919.978416,
                2002.69311878, 6421.48847582, 116.400749013, 2322.37864321,
                12700.9957402, 283.781644151, 4139.58768945, 14634.4856958,
                287.905841024, 1263.10491073, 2599.44022781, 42.4278111763,
                1310.31010198, 5982.42125634, 118.97185467, 1783.03402345,
                7017.21799324, 108.920729664, 0.017825860875, 0.0764152462997,
                0.515002924131, 0.411861132403, 0.606506071365, 0.624728509324,
                0.0371483988949, 1.20104703452, 0.576028926024,
                0.0458456186893, 1.27743259762, 1.02915696571, 0.0638579250184,
                51.3860015957, 5.78773035326, 70.463754011, 0.313304240049,
                3.29159645251, 3.98032516206, 7.2300707241, 0.317039631799,
                0.361070772872, 0.629128964369, 0.0134177222875,
                0.0141452199232, 0.0295225026225, nan, nan, nan, nan, nan,
                0.0659000592328, 0.0010587898629, 0.00105881494617, nan,
                74317.6676684, 74065.1727613, nan, nan, nan, 0.00105881494617,
                9995.68097918, 0.0223128089364, 0.0222036427514, nan, nan, nan,
                nan, nan, 1.87259744285e-18, nan, nan, 0.0181154282518,
                810.407157775, 260.90408433, nan, 810.407157775,
                0.277556892867, 3920433.62154, nan, nan, nan, nan, nan, nan,
                38.0249079495
            ],
            [
                3.34676773271, 59.7548542476, 0.468059943101, nan,
                7.76083600193e-13, nan, 1.49054185128e-12, nan,
                5.62240977778e-13, 0.0248237883755, nan, nan, nan,
                0.10360011273, 0.152019126971, 0.0618277615999, 23175.7579878,
                8263.14369097, 5629.17003676, 4144.20611741, 598.314219059,
                5506.35573909, 7120.33780651, 7408.99315106, 3919.978416,
                2002.69311878, 6421.48847582, 116.400749013, 2322.37864321,
                12700.9957402, 283.781644151, 4139.58768945, 14634.4856958,
                287.905841024, 1263.10491073, 2599.44022781, 42.4278111763,
                1310.31010198, 5982.42125634, 118.97185467, 1783.03402345,
                7017.21799324, 108.920729664, 0.017825860875, 0.0764152462997,
                0.515002924131, 0.411861132403, 0.606506071365, 0.624728509324,
                0.0371483988949, 1.20104703452, 0.576028926024,
                0.0458456186893, 1.27743259762, 1.02915696571, 0.0638579250184,
                51.3860015957, 5.78773035326, 70.463754011, 0.127498417605,
                3.86710462969, 3.42210684433, 7.35967487136, 0.362446030724,
                0.292646731593, 0.660302374728, 0.0162588393672,
                0.0133652432195, 0.0340428561448, nan, nan, nan, nan, nan,
                0.047025988233, 0.0010587898629, 0.00105881494617, nan,
                74317.6676684, 74065.1727613, nan, nan, nan, 0.00105881494617,
                9995.68097918, 0.0223128089364, 0.0222036427514, nan, nan, nan,
                nan, nan, 1.87259744285e-18, nan, nan, 0.0181154282518,
                810.407157775, 260.90408433, nan, 810.407157775,
                0.277556892867, 3920433.62154, nan, nan, nan, nan, nan, nan,
                38.0249079495
            ]
        ]

        for icase, case in enumerate(opt_tags):
            case['[run_dir]'] = ''
            writer = HAWC2InputWriter()
            writer.vartrees = reader.vartrees
            writer.vartrees.aero.ae_filename = 'data/' + case[
                '[Case id.]'] + '_ae.dat'
            writer.vartrees.aero.pc_filename = 'data/' + case[
                '[Case id.]'] + '_pc.dat'
            writer.case_id = case['[case_id]']
            writer.vartrees.tags2var(case)
            writer.execute()

            wrapper = HAWC2Wrapper()
            wrapper.copyback_results = False
            wrapper.hawc2bin = 'HAWC2mb.exe'
            wrapper.log_directory = case['[log_dir]']
            wrapper.case_id = writer.case_id
            wrapper.verbose = False
            wrapper.compute()

            config = {}
            config['neq'] = 4
            config['no_bins'] = 46
            config['m'] = [12]
            output = HAWC2OutputBase(config)
            output.execute(case)

            self.compare_lists(output.stats['min'], min_ref[icase])
            self.compare_lists(output.stats['std'], std_ref[icase])
            self.compare_lists([eq[:1] for eq in output.eq], m12_ref[icase])
Exemple #6
0
    def __init__(self,
                 config,
                 dlcs_folder,
                 dlcs_fext='xls',
                 cssize=None,
                 pfsize=None):
        super(HAWC2AeroElasticSolver, self).__init__()

        if cssize is not None:
            print 'Warning: cssize should be set in config["structural_sections"]'
            config['structural_sections'] = cssize

        if pfsize is not None:
            print 'Warning: pfsize should be set in config["aerodynamic_sections"]'
            config['aerodynamic_sections'] = pfsize

        # check that the config is ok
        self._check_config(config)

        # load cases and their tags
        dlcs = dlcdefs.excel_stabcon(dlcs_folder, fext=dlcs_fext, silent=True)
        self.ncases = len(dlcs)
        if self.ncases == 0:
            raise RuntimeError(
                'Something went wrong when reading the DLCs, ncases=0!')

        promote = []
        if config['with_tsr']:
            promote.append('tsr')

        if config['with_structure']:
            promote.append('blade_beam_structure')

        if config['with_geom']:
            var = [
                's', 'x', 'y', 'z', 'rot_x', 'rot_y', 'rot_z', 'chord',
                'rthick', 'p_le'
            ]
            for v in var:
                promote.append(v)
            promote.append('blade_length')

        if 'with_aero_coeffs' in config.keys():
            if config['with_aero_coeffs']:
                promote.append('airfoildata:blend_var')
                for i in range(config['naero_coeffs']):
                    promote.extend([
                        'airfoildata:aoa%02d' % i,
                        'airfoildata:cl%02d' % i,
                        'airfoildata:cd%02d' % i,
                        'airfoildata:cm%02d' % i
                    ])

        # Add outputs
        agg_promo = []
        for stat in config['HAWC2Outputs']['stat_list']:
            name = 'stat_' + stat
            agg_promo.append(name)
        for m in config['HAWC2Outputs']['m']:
            name = 'fatigue_m%i' % m
            agg_promo.append(name)

        if 'ch_envelope' in config['HAWC2Outputs'].keys():
            for isec in range(config['structural_sections']):
                name = 'blade_loads_envelope_sec%03d' % isec
                agg_promo.append(name)

        self.add('aggregate',
                 OutputsAggregator(config, len(dlcs)),
                 promotes=agg_promo)

        pg = self.add('pg', ParallelGroup(), promotes=promote)

        for icase, case in enumerate(dlcs):
            case_id = case['[case_id]'].replace('-', '_')
            pg.add(case_id, HAWC2Workflow(config, case), promotes=promote)

            self.connect('pg.%s.outputs_statistics' % case_id,
                         'aggregate.outputs_statistics_%d' % icase)
            self.connect('pg.%s.outputs_fatigue' % case_id,
                         'aggregate.outputs_fatigue_%d' % icase)
            if 'ch_envelope' in config['HAWC2Outputs'].keys():
                self.connect('pg.%s.outputs_envelope' % case_id,
                             'aggregate.outputs_envelope_%d' % icase)