upxo.pxtal.vortess3d module

3D Voronoi tessellation grain structure for UPXO.

class upxo.pxtal.vortess3d.gtess3d(pxtals=None, gen_method='from_seed_points', phid=None)[source]

Bases: object

3D Voronoi tessellation-based polycrystal grain structure.

Usage

from upxo.pxtal.vortess3d import gtess3d

pxtals
sp
info
bounds
ninst
gen_method
instn

Setup the base GS feature database

fdb_base
fdb_subgrains
fdb_paps

Morphological properties.

mprop

Topological properties.

tprop
plot_sp(inst)[source]

Visualise sp using Matplotlib or PyVista.

classmethod from_seed_point_random(xbound=[0, 20], ybound=[0, 20], zbound=[0, 20], npnt=100, delnpnt=5, niter=100, repr_prop={'vol': {'consider_boundary_grains': True, 'mean': {'dev': 5, 'val': 10}}}, divergence_control=True)[source]

Construct from randomly distributed seed points.

Examples

bounding_box = [[0, 12], [0, 12], [0, 12]]
points = generate_random_lattice_bounded(bounding_box, 100)
classmethod from_regular_lattice(bounding_box, xincr, yincr, zincr, lattice='sc', lc=None, start_offset=True)[source]

Construct this instance from regular lattice.

classmethod from_seed_point_extrusion(sp_input='gen', seed_coords=None, xbound=[0, 50], ybound=[0, 100], zbound=[0, 75], nsp=600, n_instances=1, nsp_dev_ninstances=10, sp_distr='random', gr_tech='pds', smp_tech='bridson1', randuni_calc='by_points', lean='veryhigh', char_length=[3, 2], niter=500, ntrials=10, k_char_length_inc=0.1, k_char_length_dec=0.1, repr_prop={'vol': {'consider_boundary_grains': True, 'distr': {'filename': None, 'remol': [True, 25, 75]}, 'mean': {'dev': 5, 'val': 10}, 'use': 'mean'}}, make_point_objects=True, make_ckdtree=True, char_length_mean=0.24598, char_length_min=0.1111, char_length_max=0.9999, nt=10, space='linear', nchecks=10, sdf=0.75, divergence_control=True, periodic=[False, False, False])[source]

Generate multi-instance multi-parameter repr 3dvtess base pxtal.

Uses seed point distribution derived from.
  • extrusion based pesudo-Bridson sampling algorithm.

  • extrusion based dart sampling algorithm.

Currently supported list of morphological parameters useful for representativeness assessment:

  • mean grain volume

Parameters:

sp_input='gen'

:param : :param seed_coords=None: :param : :param xbound=[0: :param 50]: :param : :param ybound=[0: :param 100]: :param : :param zbound=[0: :param 75]: :param : :param nsp=600: :param : :param n_instances=1: :param : :param nsp_dev_ninstances=10: :param : :param sp_distr=’random’: :param : :param gr_tech=’pds’: :param smp_tech=’bridson1’: :param : :param randuni_calc=’by_points’: :param lean=’veryhigh’: :param : :param char_length=[3: :param 2]: :param niter=500: :param ntrials=10: :param : :param k_char_length_inc=0.1: :param k_char_length_dec=0.1: :param : :param repr_prop={‘vol’:

‘mean’: {‘val’: 10,

‘dev’: 5, },

‘distr’: {‘filename’: None,

‘remol’: [True, 25, 75]},

‘consider_boundary_grains’: True}

}

distr: distribution data filepath: full path of file containing distribution data

Only .csv or .dat file allowed.

remol: List for remove outliers in distr.

remol[0]: Flag to remove or retain outliers in distribution. remol[1]: Lower percentile value. remol[2]: Upper percentile value.

Parameters:

make_point_objects=True

:param : :param make_ckdtree=True: :param : :param char_length_mean=0.24598: :param char_length_min=0.1111: :param : :param char_length_max=0.9999: :param : :param nt=10: :param : :param space=’linear’: :param nchecks=10: :param sdf=0.75: :param : :param divergence_control=True: :param : :param periodic=[False: :param False: :param False]:

Examples

from upxo.pxtal.vortess3d import gtess3d
gt3d = gtess3d.from_seed_point_extrusion(sp_input='gen', seed_coords=None,
    xbound=[0, 15], ybound=[0, 15], nsp=200,
    n_instances=2, nsp_dev_ninstances=10,
    sp_distr='random',
    gr_tech='pds', smp_tech='bridson1',
    randuni_calc='by_points', lean='veryhigh',
    char_length=[3, 0], niter=500, ntrials=10,
    k_char_length_inc=0.1, k_char_length_dec=0.2,
    repr_prop={'vol': {'use': 'mean',
                       'mean': {'val': 10, 'dev': 5},
                       'distr': {'filename': None, 'remol': True},
                       'consider_boundary_grains': True}},
    make_point_objects=True, make_ckdtree=True,
    char_length_mean=0.24598,
    char_length_min=0.1111, char_length_max=0.9999,
    nt=10, space='linear', nchecks=10, sdf=0.75,
    divergence_control=True,
    periodic=[False, False, False])
gt3d.visualize_multiple_voronoi_cells(1, cell_indices=None, colors=None,
    alpha=1, edge_color='black')
static create_2d_base_seedpoints(spinput='gen', xbound=[0, 100], ybound=[0, 100], nsp=600, sp_distr='random', gridding_technique='pds', sampling_technique='bridson1', randuni_calc='by_points', lean='veryhigh', char_length=[3, 2], niter=500, make_point_objects=True, make_ckdtree=True, char_length_mean=0.24598, char_length_min=0.1111, char_length_max=0.9999, nt=10, space='linear')[source]

Build and return 2D base seed points.

static find_bounds_2dpoints(points)[source]

Find bounds 2dpoints.

static find_bounds_3dpoints(points)[source]

Find bounds 3dpoints.

visualize_voronoi_cell(ax=None, color='cyan', alpha=0.5, edge_color='black')[source]

Visualize voronoi cell.

fid
floc
cids_base
idmap_c_supc
idmap_c_subc
fdb_pix
fdb_pert
fdb_supset
uinputs
neighs_cid
xomap
n
gbjp
grain_locs
gpos
visualize_multiple_voronoi_cells(inst, cell_indices=None, colors=None, alpha=0.5, edge_color='black')[source]

Visualize multiple voronoi cells.

construct_pyvista_surface()[source]

Construct pyvista surface.

generate_uniform_tet_mesh(resolution=5, maxvol=0.001)[source]

Generate uniform tet mesh.

interactive_slice_view(tet_mesh)[source]

Interactive slice view.

interactive_slice_view_with_quality(tet_mesh, metric='aspect_ratio', cmap='nipy_spectral', clim=[1, 5])[source]

Interactive slice view with quality.

compute_cell_quality(tet_mesh, metric='aspect_ratio')[source]

Return the computed cell quality.

plot_multiple_meshes(scalars=None, cmap='viridis', clim=[0, 1], opacity=0.5, show_edges=True)[source]

Visualise multiple meshes using Matplotlib or PyVista.

interactive_slice_view_with_quality_multiple_meshes(tet_meshes, metric='aspect_ratio', cmaps=['nipy_spectral', 'viridis'], clim=[1, 5])[source]

Interactive slice view with quality multiple meshes.

generate_background_mesh(resolution=20, eps=1e-06)[source]

Generate background mesh.

sizing_function(focus_point=numpy.array, max_size=1.0, min_size=0.1)[source]

Sizing function.