convert Module

defines:
  • convert(model, units_to, units=None)

pyNastran.bdf.mesh_utils.convert._convert_aero(model: BDF, xyz_scale: float, time_scale: float, force_scale: float) None[source]
Converts the aero cards
  • CAEROx, PAEROx, SPLINEx, AECOMP, AELIST, AEPARM, AESURF

Supports: AERO, AEROS, CAERO1, CAERO2, TRIM*, MONPNT1, FLUTTER FLFACT-rho/vel

GUST, AESURF, PAERO2

Skips: PAERO1, AESTAT, AESURFS, AECOMP, AELIST Doesn’t support:CAERO3-5, PAERO3-5, SPLINEx, AEPARM, AELINK, AEPRESS, AEFORCE, *probably not done

pyNastran.bdf.mesh_utils.convert._convert_constraints(model: BDF, xyz_scale: float) None[source]

Converts the spc/mpcs

Supports: SPC1, SPC, SPCAX Implicitly supports: MPC, MPCADD, SPCADD

pyNastran.bdf.mesh_utils.convert._convert_coordinates(model: BDF, xyz_scale: float) None[source]

Converts the coordinate systems

Supports: CORD1x, CORD2x

pyNastran.bdf.mesh_utils.convert._convert_dconstr(model: BDF, dconstr: DCONSTR, pressure_scale: float) None[source]

helper for _convert_optimization

pyNastran.bdf.mesh_utils.convert._convert_desvars(desvars, scale)[source]

scales the DVPREL/DVCREL/DVMREL DESVAR values

pyNastran.bdf.mesh_utils.convert._convert_dvcrel1(dvcrel: DVCREL1 | DVCREL2, xyz_scale: float, mass_scale: float) float[source]

helper for _convert_optimization

pyNastran.bdf.mesh_utils.convert._convert_dvmrel1(dvmrel, xyz_scale: float, mass_scale: float, force_scale: float, time_scale: float) float[source]

helper for _convert_optimization

pyNastran.bdf.mesh_utils.convert._convert_dvprel1(dvprel, xyz_scale: float, mass_scale: float, force_scale: float, time_scale: float) float[source]

helper for _convert_optimization

pyNastran.bdf.mesh_utils.convert._convert_elements(model: BDF, xyz_scale: float, time_scale: float, mass_scale: float, force_scale: float) None[source]

Converts the elements

Supports: CTRIA3, CTRIA6, CTRIAR, CQUAD4, CQUAD8, CQUADR,

CELAS2, CELAS4, CDAMP2, CDAMP4, CBUSH, CONROD, CBAR, CBEAM, GENEL, CONM2, CMASS4

SkipsCELAS1, CELAS3, CDAMP3, CDAMP5, CCONEAX,

CROD, CTUBE, CVISC, CBUSH1D, CQUAD, CSHEAR, CTRIAX, CTRIAX6, CTETRA, CPENTA, CHEXA, CPYRAM, CMASS1, CMASS3,

NX Skips: CTRAX3, CTRAX6, CPLSTN3, CPLSTN6, CPLSTN4’, CPLSTN8, CQUADX4, CQUADX8 *intentionally

pyNastran.bdf.mesh_utils.convert._convert_loads(model: BDF, xyz_scale: float, time_scale: float, force_scale: float, temperature_scale: float) None[source]

Converts the loads

Supports:
  • dloads: RLOAD1*, TLOAD1*

  • loads: FORCE, FORCE1, FORCE2, MOMENT, MOMENT1, MOMENT2

    GRAV, ACCEL1, PLOAD, PLOAD1, PLOAD2, PLOAD4, RANDPS

  • combinations: DLOAD, LOAD

  • probably not done

pyNastran.bdf.mesh_utils.convert._convert_materials(model: BDF, xyz_scale: float, mass_scale: float, force_scale: float, temperature_scale: float) None[source]

Converts the materials

Supports: MAT1, MAT2, MAT3, MAT8, MAT9, MAT10, MAT11

pyNastran.bdf.mesh_utils.convert._convert_nodes(model: BDF, xyz_scale: bool) None[source]

Converts the nodes

Supports: GRID

pyNastran.bdf.mesh_utils.convert._convert_optimization(model: BDF, xyz_scale: float, mass_scale: float, force_scale: float, time_scale: float) None[source]

Converts the optimization objects

Limited Support: DESVAR, DCONSTR, DVCREL1, DVPREL1

pyNastran.bdf.mesh_utils.convert._convert_pbar(scales: set[str], prop: PBAR, xyz_scale: float, area_scale: float, area_moi_scale: float, nsm_bar_scale: float) None[source]

converts a PBAR

pyNastran.bdf.mesh_utils.convert._convert_pbeam(scales: set[str], prop: PBEAM, xyz_scale: float, area_scale: float, area_moi_scale: float, nsm_bar_scale: float) None[source]

converts a PBEAM

pyNastran.bdf.mesh_utils.convert._convert_pbeam3(scales: set[str], prop: PBEAM3, xyz_scale: float, area_scale: float, area_moi_scale: float, nsm_bar_scale: float) None[source]

converts a PBEAM3

pyNastran.bdf.mesh_utils.convert._convert_pbush(scales: set[str], prop: PBUSH, velocity_scale: float, mass_scale: float, stiffness_scale: float, log: SimpleLogger) None[source]
pyNastran.bdf.mesh_utils.convert._convert_pbush1d(model: BDF, scales: set[str], prop: PBUSH1D, xyz_scale: float, area_scale: float, mass_scale: float, damping_scale: float, stiffness_scale: float, spring_tables: set[int], damper_tables: set[int]) None[source]

converts the PBUSH1D

pyNastran.bdf.mesh_utils.convert._convert_properties(model: BDF, xyz_scale: float, time_scale: float, mass_scale: float, force_scale: float, temperature_scale: float) None[source]

Converts the properties

Supports: PELAS, PDAMP, PDAMP5, PVISC, PROD, PBAR, PBARL, PBEAM, PBEAML,

PSHELL, PSHEAR, PCOMP, PCOMPG, PELAS, PTUBE, PBUSH, PCONEAX, PGAP, PBUSH1D

Skips : PSOLID, PLSOLID, PLPLANE, PIHEX

Skips are unscaled (intentionally)

Warning

PBUSH1D tables should only be used by PBUSH1D

pyNastran.bdf.mesh_utils.convert._get_dload_scale(dload, scales: set[str], xyz_scale: float, velocity_scale: float, accel_scale: float, force_scale: float) None[source]

LOAD assumes force

pyNastran.bdf.mesh_utils.convert._get_pbush1d_tables(prop: PBUSH1D, table_names: tuple[str], tables_set: set[int])[source]
pyNastran.bdf.mesh_utils.convert._scale_caero(caero, xyz_scale: float, xyz_aefacts: set[int]) None[source]
pyNastran.bdf.mesh_utils.convert._scale_term(name: str, coeffs: list[float], terms: list[float], scales: list[float]) tuple[float, str][source]
pyNastran.bdf.mesh_utils.convert._set_pbush1d_tables(model: BDF, scales: set[str], spring_tables: set[int], damper_tables: set[int], xyz_scale: float, velocity_scale: float, force_scale: float) None[source]

Sets all the TABLEDx required by the PBUSH1D.

Note

Assumes TABLEs are not reused for other cards.

pyNastran.bdf.mesh_utils.convert._set_wtmass(model: BDF, gravity_scale: float) None[source]

set the PARAM,WTMASS

ft-lbm-s-lbf-psf : 1. / 32.2 in-lbm-s-lbf-psi : 1. / (32.2*12) m-kg-s-N-Pa : 1. mm-Mg-s-N-Mpa : 1. in-slinch-s-lbf-psi : 1. ft-slug-s-lbf-psf : 1. in-slug-s-lbf-psi : 1 / 12.

1 slug * 1 ft/s^2 = 1 lbf 1 slinch * 1 in/s^2 = 1 lbf 1 slinch = 12 slug

F = m*a 386 lbf = 1 slinch * 386 * in/s^2 32 lbf = 1 slug * 32 * ft/s^2 1 N = 1 kg * 9.8 m/s^2

1 lbf = g_scale * 1 slinch * 1 in/s^2 1 lbf = g_scale * 12 slug * 1 in/s^2 –> g_scale = 1/12.

pyNastran.bdf.mesh_utils.convert._setup_scale_by_terms(scales: list[float], terms: list[str], quiet: bool = False) tuple[float, float, float][source]

determines the mass, length, time scaling factors

pyNastran.bdf.mesh_utils.convert._write_scales(log: SimpleLogger, scale_map: dict[str, str], scales: set[str], keys_to_skip={})[source]
pyNastran.bdf.mesh_utils.convert.convert(model: BDF, units_to: list[str], units: list[str] | None = None) None[source]

Converts a model from a set of defined units

Parameters:
modelBDF

cross references the model (default=True)

units_tolist[str]

[length, mass, time] length = {in, ft, m, cm, mm} mass = {g, kg, Mg, lbm, slug, slinch} time = {s}

unitslist[str]

overwrites model.units

pyNastran.bdf.mesh_utils.convert.convert_length(length_from, length_to)[source]

Determines the length scale factor

We create a gravity_scale_length for any non-standard unit (ft, m)

pyNastran.bdf.mesh_utils.convert.convert_mass(mass_from: str, mass_to: str, log: SimpleLogger) tuple[float, float, float][source]

determines the mass, weight, gravity scale factor

We apply a gravity_scale_mass for any unit not {kg, slug}. Then we convert to N.

So for SI, if we have kg, we have a base unit, and the length is assumed to be m, so we have a consistent system and gravity_scale_mass is 1.0.

For lbm:

F = m*a 1 lbf = 1 lbm * 1 ft/s^2 32 lbf = 1 slug * 32 ft/s^2 gscale = 1/g F = gscale * m * a 1 lbf = gscale * 1 lbm * 32 ft/s^2 –> gscale = 1/32

For slug:

F = gscale * m * a 32 lbf = gscale * 1 slug * 32 ft/s^2 –> gscale = 1

For slinch:

F = gscale * m * a 386 lbf = gscale * 1 slinch * 12*32 in/s^2 1 slinch = 12 slug 12 in = 1 ft 386 lbf = gscale * 12 slug * 32 ft/s^2 –> gscale = 1

TODO: slinch/slug not validated

pyNastran.bdf.mesh_utils.convert.get_scale_factors(units_from, units_to, log)[source]

[length, mass, time] [in, lb, s]

pyNastran.bdf.mesh_utils.convert.scale_by_terms(bdf_filename: BDF | str, terms: list[float], scales: list[float], bdf_filename_out: str | None = None, encoding: str | None = None, log=None, debug: bool = True) BDF[source]

Scales a BDF based on factors for 3 of the 6 independent terms

Parameters:
bdf_filenamestr / BDF()

a BDF filename

termslist[str]; length=3

the names {M, L, T, F, P, V, A, rho} mass, length, time, force, pressure, velocity, area, mass_density

scaleslist[float]; length=3

the scaling factors

bdf_filename_outstr; default=None

a BDF filename to write

Returns:
modelBDF()

the scaled BDF

pyNastran.bdf.mesh_utils.convert.scale_model(model: BDF, xyz_scale: float, mass_scale: float, time_scale: float, force_scale: float, gravity_scale: float, convert_nodes: bool = True, convert_elements: bool = True, convert_properties: bool = True, convert_materials: bool = True, convert_aero: bool = True, convert_constraints: bool = True, convert_loads: bool = True, convert_optimization: bool = True)[source]

Performs the model scaling