Example #1
0
                       domain_volumes, domain_shells, plane_strain, plane_stress, axisymmetry, save_iteration_results,
                       i, reference_points, shells_as_composite, optimization_base, displacement_graph,
                       domain_FI_filled)
    # running CalculiX analysis
    subprocess.call([os.path.normpath(path_calculix), file_nameW], cwd=path)

    # reading results and computing failure indeces
    if (reference_points == "integration points") or (optimization_base == "stiffness") or \
            (optimization_base == "buckling") or (optimization_base == "heat"):  # from .dat file
        [FI_step, energy_density_step, disp_i, buckling_factors, energy_density_eigen, heat_flux] = \
            beso_lib.import_FI_int_pt(reference_value, file_nameW, domains, criteria, domain_FI, file_name, elm_states,
                                      domains_from_config, steps_superposition, displacement_graph)
    if reference_points == "nodes":  # from .frd file
        FI_step = beso_lib.import_FI_node(reference_value, file_nameW, domains, criteria, domain_FI, file_name,
                                          elm_states, steps_superposition)
        disp_i = beso_lib.import_displacement(file_nameW, displacement_graph, steps_superposition)
    disp_max.append(disp_i)
    if (not FI_step and domain_FI_filled) and (not energy_density_step) and (not buckling_factors):
        msg = "CalculiX results not found, check CalculiX for errors."
        beso_lib.write_to_log(file_name, "\nERROR: " + msg + "\n")
        assert False, msg

    if domain_FI_filled:
        FI_max.append({})
        for dn in domains_from_config:
            FI_max[i][dn] = 0
            for en in domains[dn]:
                for sn in range(len(FI_step)):
                    try:
                        FI_step_en = list(filter(lambda a: a is not None, FI_step[sn][en]))  # drop None FI
                        FI_max[i][dn] = max(FI_max[i][dn], max(FI_step_en))
Example #2
0
                       domain_optimized, domain_thickness, domain_offset, domain_orientation, domain_material,
                       domain_volumes, domain_shells, plane_strain, plane_stress, axisymmetry, save_iteration_results,
                       i, reference_points, shells_as_composite, optimization_base, displacement_graph)
    # running CalculiX analysis
    subprocess.call(os.path.normpath(path_calculix) + " " + file_nameW, shell=True, cwd=path)

    # reading results and computing failure indeces
    if reference_points == "integration points":  # from .dat file
        [FI_step, energy_density_step, disp_i] = beso_lib.import_FI_int_pt(reference_value, file_nameW, domains,
                                                                             criteria, domain_FI, file_name, elm_states,
                                                                             domains_from_config, steps_superposition,
                                                                             displacement_graph)
    elif reference_points == "nodes":  # from .frd file
        FI_step = beso_lib.import_FI_node(reference_value, file_nameW, domains, criteria, domain_FI, file_name,
                                          elm_states, steps_superposition)
        disp_i = beso_lib.import_displacement(file_nameW, displacement_graph, steps_superposition)
    disp_max.append(disp_i)
    if not FI_step:
        msg = "CalculiX results not found, check CalculiX for errors."
        beso_lib.write_to_log(file_name, "\nERROR: " + msg + "\n")
        assert False, msg

    FI_max.append({})
    for dn in domains_from_config:
        FI_max[i][dn] = 0
        for en in domains[dn]:
            for sn in range(len(FI_step)):
                try:
                    FI_step_en = list(filter(lambda a: a is not None, FI_step[sn][en]))  # drop None FI
                    FI_max[i][dn] = max(FI_max[i][dn], max(FI_step_en))
                except ValueError: