**************************************************************** ** EduMech: a program to learn and teach continuum mechanics ** **************************************************************** *********** Background *********** "EduMech" is a program written in Python 3 language that will be used for the instruction of CEE 6513: "Computational Methods in Mechanics", a master's level course offered in Fall 2020 in the School of Civil and Environmental Engineering at Georgia Tech. EduMech will help students perform rapid numerical calculations in class to solve complex problems, and will help students develop an intuition of abstract mechanics concepts through graphical outputs. Learning Objectives: 1. Calculate the state of stress in a solid, the principal stresses and the stress invariants 2. Predict the occurrence of plasticity 3. Calculate plastic strains in an elastic-perfectly plastic medium 3. Use experimental material data to calibrate material models 4. Recommend constitutive models for civil engineering materials ***************************** Description of the program ***************************** EduMech provides a friendly interface to: - calculate specific properties of stress tensors, - visualize a state of stress on a Mohr's circle plane, - transform a state of stress from a coordinate system to another, - plot a yield surface, - conduct virtual laboratory tests, by simulating the response of an elastic material under uniaxial, triaxial and oedometric boundary conditions, - conduct virtual laboratory tests, by simulating the response of an elasto-plastic material under uniaxial, triaxial and oedometric boundary conditions. The user is prompted for input via a GUI created with Tkinter. First, the user chooses a topic of study. After selection of a topic, the user clicks a button that calls a function that displays the next series of input prompts. Plots are generated with the Plotly library: the user can rotate 3D plots, zoom in and out, and save the figure in png format on their hard drive. The structure of the program is as follows: 1. Stress transformation 1.1. Invariants 1.2. Mohr's circles 1.3. Rotation 2. Yield surfaces 2.1. Tresca 2.2. von Mises 2.3. Mohr-Coulomb 2.4. Drucker-Prager 3. Virtual tests 3.1. Hyperbolic elastic model 3.2. Drucker-Prager elastic perfectly plastic model 3.3. Drucker-Prager elasto-plastic model with hardening *********************************************** Description of the functions available *********************************************** To start, type python 3 interface.py in your Terminal Window. 1.1. Invariants Takes six stress components as input. Returns the following stress properties in the terminal window: mean stress; deviatoric stress; principal stresses; principal directions; 1st, 2nd and 3rd stress invariants; 1st, 2nd and 3rd deviatoric stress invariants 1.2. Mohr's circles Takes six stress components as input. Returns a plot that shows the 3D Mohr's circles in a browser window. The plot also shows three points that correspond to the state of stress entered by the user. 1.3. Rotation Takes six stress components and three angles as input. Returns a stress tensor (i.e., matrix, i.e., list of three arrays of three elements) in the terminal window. The program calculates the state of stress after a rotation by an angle theta_1 about the first axis, an angle theta_2 about the second axis and an angle theta_3 about the third axis. The user can choose to express the angles in degrees or radians. The program then makes the necessary conversion to operate rotations on the stress matrix. 2.1. Tresca Takes Tresca's model parameter as input (shear strength Su). Returns a 3D plot that shows the Tresca yield surface in a browser window, along with the hydrostatic axis. The program automatically calculates the axis scales that are relevant to see clearly the yield surface. 2.2. von Mises Takes von Mises's model parameter as input (shear strength k). Returns a 3D plot that shows the von Mises yield surface in a browser window, along with the hydrostatic axis. The program automatically calculates the axis scales that are relevant to see clearly the yield surface. 2.3. Mohr-Coulomb Takes Mohr-Coulomb's model parameters as input (cohesion and friction angle phi). Returns a 3D plot that shows the Mohr-Coulomb yield surface in a browser window, along with the hydrostatic axis. The program automatically calculates the axis scales that are relevant to see clearly the yield surface. 2.4. Drucker-Prager Takes Drucker-Prager's model parameters as input (k and alpha). Returns a 3D plot that shows the Drucker-Prager yield surface in a browser window, along with the hydrostatic axis. The program automatically calculates the axis scales that are relevant to see clearly the yield surface. 3.1 Virtual tests with the hyperbolic elastic model (Duncan-Chang model) - Prompts the user for the constitutive parameters of the model: loading modulus Ke (kPa), unloading modulus Ku (Pka), exponent n (non-dimensional),strength ratio Rf (non-dimensional), cohesion c (kPa), friction angle phi (degrees), Poisson's ratio nu (non-dimensional). - After clicking the "Go" button, the user is prompted to choose a loading path: uniaxial, triaxial or oedometric. - After clicking the "Go" button, the user is prompted to enter the loading conditions: --- Vertical stress sigma_11 (kPa) for the uniaxial compression test (zero lateral stress assumed) and for the oedometric test (zero lateral displacement assumed) --- Vertical stress sigma_11 (kPa) and confining stress sigma_33 (kPa) for the triaxial compression test - After clicking the "Go" button, a subroutine simulates the lab test and returns a stress-strain curve in a browser window. 3.2 Virtual tests with the Drucker-Prager elastic perfectly plastic model - Prompts the user for the constitutive parameters of the model: Young's modulus E (kPa), Poisson's ratio (non-dimensional), coefficient k (kPa), coefficient alpha (non-dimensional). - After clicking the "Go" button, the user is prompted to choose a loading path: uniaxial, triaxial or oedometric. - After clicking the "Go" button, the user is prompted to enter the loading conditions: --- Vertical strain epsilon_11 (non-dimensional) and number of increments for the uniaxial compression test (zero lateral stress assumed) and for the oedometric test (zero lateral displacement assumed) --- Vertical strain epsilon_11 (non-dimensional), confining stress sigma_33 (kPa) and number of increments for the triaxial compression test - After clicking the "Go" button, a subroutine simulates the lab test and returns a stress-strain curve in a browser window. 3.3 Virtual tests with the Drucker-Prager elasto-plastic model with hardening - Prompts the user for the constitutive parameters of the model: Young's modulus E (kPa), Poisson's ratio (non-dimensional), coefficient k (kPa), coefficient alpha (non-dimensional), hardening parameter beta_h, hardening parameter beta_p - After clicking the "Go" button, the user is prompted to choose a loading path: uniaxial, triaxial or oedometric. - After clicking the "Go" button, the user is prompted to enter the loading conditions: --- Vertical stress sigma_11 (kPa) and number of increments for the uniaxial compression test (zero lateral stress assumed) and for the oedometric test (zero lateral displacement assumed) --- Vertical stress sigma_11 (kPa), confining stress sigma_33 (kPa) and number of increments for the triaxial compression test - After clicking the "Go" button, a subroutine simulates the lab test and returns a stress-strain curve in a browser window.