- Resolve numpy deprecation.
- Constrain LM fitting process
- Relabel attribute
true_stresstostressinLoadResponseclass
- Add
cyclic_uniaxialload case method to taskgenerate_load_case - Add
mixedload case method to taskgenerate_load_case
- Add option
include_yield_functionstoLoadResponseSet.show_yield_functions_2DandLoadResponseSet.show_yield_functions_3D, which is a list of fitted yield function indices to include in the visualisation. - Add
get_load_case_planar_2Dload case function. - Add option
strain_rate_modetoget_load_case_plane_strain, which determines if the load case is defined by deformation gradient (F_rate), velocity gradient (L) or an approximation excluding the stress condition (L_approx), which is useful when we want to avoid using mixed boundary conditions.
- Functions
get_load_case_uniaxial,get_load_case_biaxialandget_load_case_plane_strainhave been refactored, documented and generalised where applicable. The returneddictfrom these functions now includes passing throughdirectionandrotation. A new keyrotation_matrixis the matrix representation of the rotation specified, if specified.
- Add animation widget for yield func evolution:
animate_yield_function_evolution(load_response_sets, ...). - Ability to add sheet direction labels in yield function plots.
- 2D yield function plotting now use scikit-image to compute the zero-contour, which can then be plotted as scatter-plot data, instead of a Plotly contour plot. Partial fix (2D only) for #9. The old behaviour can be switched on with
use_plotly_contour=Truein methods:YieldFunction.compare_2D,YieldFunction.show_2DandLoadResponseSet.show_yield_functions_2D. - The
YieldFunction.yield_pointattribute is saved in the dict representation of a eachLoadResponseSet.fitted_yield_function, and loaded correctly when loading from a dict, via a change toYieldFunction.from_name. - Parameter fitting using the
LMFitterclass now scales the fitting parameters to one.
- Bug fix in
LoadResponseSet.to_dictif an associated yield function was not fitted.
- Add ability to specify fitting bounds and other optimisation parameters in
YieldFunction.from_fitandLoadResponseSet.fit_yield_function.
LoadResponseSet.yield_functionsattribute renamedLoadResponseSet.fitted_yield_functions.
- Do not modify input dict to
levenberg_marquardt.LMFitter.from_dict. - Fix bug in
TensileTest.show()stress scale.
- Add
to_dictandfrom_dictmethods toLoadResponseSet.
- Add
LMFitter.from_dict
- Add
single_crystal_parametersto returned dict ofLMFitter.to_dict.
- Set float values in
get_new_single_crystal_params.
- Add new module,
levenberg_marquardtfor fitting single crystal parameters.
- Add missing import to
formable.utils.
- Include
tensile_testmodule fromtensile_testpackage.
- Fix plot line colouring for many traces (more than Plotly default colour list)
- Add
dump_frequencyto load case generators.
- Default tolerance for
LoadResponse.is_uniaxialcheck loosened to 0.3.
- Print out the degree to which the stress state is uniaxial in
LoadResponse.is_uniaxial.
- Add a method to estimate the Lankford coefficient via the tangent of the yield surface at a uniaxial stress state:
YieldFunction.get_numerical_lankford - Add options to
YieldFunction.show_2D,YieldFunction.compare_2DandLoadResponseSet.show_yield_functions_2Dto visualise the tangent and normal to the yield function at a uniaxial stress state. - Add incremental data:
equivalent_plastic_strainandaccumulated_shear_strain, and associatedYieldPointCriteriamappings for getting the yield stress (using the same method as that used forequivalent_stress[total]). - Add
show_stress_statestoLoadResponseSet.show_yield_functions_3DandLoadResponseset.show_yield_functions_2Dto optionally hide stress states. - Add option to pass Plotly
layoutparameters to yield function visualisation methods. - Add property
num_incrementstoLoadResponse. - Add
reprtoLoadResponseandLoadResponseSet. - Add
YieldFunction.from_name()class method for generating a yield function from a string name and parameters. - Add
LoadResponse.incremental_dataproperty to return all incremental data as adict.
- Check each
incremental_dataarray passed toLoadResponsehas the same outer shape (i.e. same number of increments). AVAILABLE_YIELD_FUNCTIONSandYIELD_FUNCTION_MAPhave been replaced with functionsget_available_yield_functionsandget_yield_function_map, respectively.- Number of excluded load responses is printed when performing yield function fitting.
- Fixed an issue when visualising yield surfaces in 3D (via
YieldSurface.compare_3D()) (and also 2D) where, if the value of the yield function residual was already normalised (e.g. by the equivalent stress), then the isosurface drawn by Plotly was defective (showing spikes beyond the bounds of the contour grid), since the values that were being contoured were of the order 10^-8. This was because we normalised by the equivalent stress again when calculating the contour values. This was fixed by normalising by the absolute maximum value in the values that are returned by the residual function, rather than always normalising by the equivalent stress, so the contour values should be of the order 1 now, regardless of whether a given yield function residual value is normalised or not. - Fixed yield function residual for
Barlat_Yld91, where hydrostatic stresses would returnnp.nan. - Check for bad
kwargsinLoadResponseSet.fit_yield_function. - Added an
equivalent_stressparameter toHill1948to make it fit and visualise like the others. Not sure if this is the correct approach.
- Added an option to show the bounds of the 3D contour grid when visualising yield functions in 3D.
- Added an option to associate additional text in visualising yield functions (for the legend):
legend_text. - Added module
load_casesfor generating load cases for simulations. - Added hover text in
YieldFunction.compare_2Dthat shows the value(s) of the yield function at each grid point. - Added
lankfordproperty toHill1948that returns the Lankford coefficient, as determined by the values of the anisotropic parameters.
- The tolerance for checking if a
uniaxial_responsepassed toLoadResponseSet.fit_yield_functionis in fact uniaxial has been loosened, since this way failing when it shouldn't have. - Normalise all yield function residuals by their equivalent stress parameter.
Image URLs in README
Initial release.