|
|
Flow Stress Modeling Program
Flow Stress ModelFlow stress is a kind of metal strength, especially against plastic
deformation. This program is designed to model flow stress into the
following formula:




 |
Constant for a given
metal grade |
 |
Temperature factor. A1
and m1 are constants, T in deg. C. |
 |
Strain factor. A2, m2
and m4 are constants. |
 |
Strain rate factor.
A3, m3, m5 are constants, U in 1/s |
This is one of dozens of process models
the author developed in past years. Several simplified forms of this
model is also wide used in the industry, such as the case without
temperature correction on the strain rate factor, or any form that
considers only one or two of the three influence factors. All those
forms can be determined with this program.
Program Features
The program is designed to determine
factors m1 to m5 and A1 to A3, and Kf0. The database and table
information can be saved into the system so that as the program runs
again, there is no need to type in such information again.
The m3 and m3 are determined in the
first step, and then m1, and at last, the m2 and m4. A1 to A3 and Kf0
are dependent on the m1 to m5. The m3_T
and m5_T
in the Figure 1 are corresponding to m3 and m5 in the
formulae mentioned above, and m3 in the Figure 1 equals m3_T
+ m5_T*T.
In calculating m3_T and m5_T, linear Least-Squares Regression is used.
If you want to go back to traditional model and ignore the m5, the
factor m3 in the group box "Calc m3" is what you need for strain rate.
Since this factor is strongly temperature dependent, I recommend you
to use m3_T and m5_T.

Figure 1: Form to calculate m3 and m5, through linear regression
Calculation for m2 and m4 has multiple options, and since it requires
nonlinear regression, more control factors are needed. As showed in
the Figure 2, the program determines m2 and m4 in two major steps:
initial estimation and regression. In either step the user has choice
as whether to use peak flow stress to improve result. This program
also allows user to determine many control factors, such as:
- Within which scope the data is used
for modeling. Three scopes are possible to determine m2 and m4: For
every grade; or for every temperature in every grade; or for every
strain rate in every temperature in every grade. Correspondingly,
the user may choose to select only the Grade box, or both Grade and
Temperature boxes, or all three boxes (Grade, Temperature and Strain
Rate), within the Source Control group box in the Figure 2.
- Either "Single Only" calculation, or
multiple records calculation. In the later case, user can determine
where the calculation starts.
- Option to assign source data
columns, such as columns for strain and stress, and for peak strain
and peak stress.
The program also provides improved
user-friendliness. If a box is checked to perform an action, all boxes
and buttons performing conflicting or useless actions will be
deactivated. For example, if the “Regression” box is checked under
“Consider Peak”, the “Initial Estim.” Box is automatically checked and
disabled; and only when the "Initial Estim." box is checked, are the
peak strain columns and the "Best peak strain" radio button are
activated.

Figure 2: Form to determine m2 and m4 by initial estimation and
non-linear regression.
Four options are used for the initial estimation of m2 and m4:
- Min, mid, max: The minimal, middle and maximum strains are used.
- Manual set strains: Allows user to manually select 3 points to determine m2 and m4
- Best peak strain: To ensure the strain with peak flow stress can be reflected accurately in the model
- Best R-sq: Through variation of multiple possibilities of initialization for m2 and m4, to select m2, m4 with the best R-square value. This is the default setting.
In each of the above mentioned options, the program allows user to select two possibilities: considering and not considering peak flow stress. If the peak flow stress is contained in the data, it can be used to improve the accuracy of the model.
| |
Not considering peak |
Considering peak |
|
Min, Mid, Max |
Min, Mid and Max strains |
Min, mid and max strains, and peak flow stress |
|
Manual |
Manually set three points |
Manually set three points, and peak point |
|
Best peak strain |
(Not applicable, and so the radio button is disabled) |
Every two points + peak strain, and one with the best R-square is selected |
|
Best R-sq |
Variation following the order, and pick the one with the best R-square:
- Min, Mid, Max
- Every three points
|
Variation following the order, and pick the one with the best R-square:
- Min, Mid, Max
- Min, Mid, Max + Peak
- Every three points
- Every three points + Peak
- Every two points + Peak
- Every two points + Peak strain
|
During the regression, if he peak
strain is considered, it is for best peak strain only. I this case the
variation of the m2 and m4 is tied. In most case, the peak point is
not considered, in order to change m2 and m4 freely. In the regression, variation of m2 and m4 is starting from the
initially determined value. The variation is with an increment that
equals the product of the interval factor and the initially determined
value, up to a maximal number of increments unless the R-Square drops
below a certain percentage of the initially determined R-Square.
The program gives the use full options to change all those regression
parameters (see the group box "Regression" in the Figure 2).
Programmatically, such parameters are the properties for the class clsReg.
It took about half an hour for the program to
determine all constants used to model all grades in the Suzuki Report
(70 grades, 8764 points in over 1250 curves). The data was measured
earlier through another
Coordinate Recording Tool to read Data from Curves.
Implementation
Modeling logics and parameters are handled in the classes,
such as clsFS, clsReg,
clsM2M4. In the form scope, as little as possible
handling is performed; this makes it very easy to move the program
into a web-based application.
The class clsFS performs general
calculation and for database update. It also handle database types
(either Excel, or Access or SQL Server), and tables, etc. All forms share the common object oFS of the
class clsFS, so that some parameters assigned through one form are
available in other forms. The object oReg from clsReg is for nonlinear
regression only and thus mainly for the form to determine m2 and m4.
The class clsM2M4 uses clsFS and clsReg, and serves frmM2M4. This
class mainly handles three scopes within which the data is used for
modeling:
- For every grade. This is the case to
generate a full-model, where stresses and strains are calculated
into the reference temperature and the reference strain rate.
- For every temperature in every grade
- For every strain rate in every
temperature in every grade
| Class |
Property |
Function (Sub) |
| clsFS |
DBType : String
DBName : String
Tablename : String
KeyName : String
DBConnOle : OleDbConnection
DBConnSql : SqlConnection
|
ConnDB()
UpdateWholeGrade() : Integer
UpdateRecord() : Integer
UpdateWholeParam() : Integer
UpdateWholeRaram() : Integer (overloaded)
UpdateWholeTemperature() : Integer
UpdateWholeTStrr() : Integer
MyUpdate() : Integer
WriteToFile()
CloseDB()
m3A3() : Decimal
fnM1() : Decimal
fnM1_U() : Decimal
m2m4A2() : Array
m2m4A2Phip() : Array
m2m4A2PhipKfp() : Array
m3_Avg_T_OneTemp() : Decimal
CalcKf() : Decimal
EqXYZ() : Array |
| clsReg |
LogName : String
IntervalM2 : Decimal
IntervalM4 : Decimal
LoopM2 : Integer
LoopM4 : Integer
R_sqRatio : Decimal
InitPeak : Boolean
RegPeak : Boolean
ColStnPeak : String
ColStePeak : String
NoReg : Boolean
ManualStn1 : Decimal
ManualStn2 : Decimal
ManualStn3 : Decimal
InitOption : Int16 |
RegKfStn() : Array
RegM2M4() : Array
R_sq_M2M4() : Decimal
Err_Pct_M2M4() : Decimal
CalcSt() : Decimal
CalculateKf0() : Decimal
InitM2M4() : Array
ManualInitM2M4() : Array
MinMidMaxInitM2M4() : Array
TwoPtsPkStnM2M4() : Array
ThreePtsPkM2M4() : Array
ThreePtsM2M4() : Array
PeakExists() : Boolean |
| clsM2M4 |
StartGIndex : Integer
StartTIndex : Integer
StartUIndex : Integer
TValue : Integer
TIndex : Integer
UValue : Decimal
UIndex : Integer |
RegOneGrd_G() : Integer
RegOneGrd_GT() : Integer
RegOneGrd_GU() : Integer
RegOneGrd_GTU() : Integer
RegOneTempLong() : Integer
RegOneTempShort() : Integer
RegOneStrrShort() : Integer |
|