Continue to Site

Eng-Tips is the largest engineering community on the Internet

Intelligent Work Forums for Engineering Professionals

  • Congratulations GregLocock on being selected by the Eng-Tips community for having the most helpful posts in the forums last week. Way to Go!

Solve Block for Systems (Another Solve Block Question) 1

Status
Not open for further replies.

YoungTurk

Mechanical
Jul 16, 2004
333
I can't seem to wrap my mind around the solve blocks in MathCAD. Trying the attached problem - simple enough to solve by hand, but I just can't get MathCAD to provide the solution to the system of equations via the solve block. Three equations, three unknowns. Units consistent (though the strains are unitless, which is correct, but may cause an issue). Tried the whole thing without units, didn't help.

Help file (and mathcad book) doesn't help. I feel like I'm fundamentally not getting how the solve block works...

 
Replies continue below

Recommended for you

Your first assignment statement E = erroneously uses the boolean equate instead of the assignment or definition operator := like you correctly used elsehwere.
 
Also Mathcad doesn't understand your units. I had removed the units and fixed the assignment and got it to work. Putting the units back in broke it again. I've never used units in a solve block but not saying it shouldn't work. I would say research the Mathcad utilization of your units
 
When you consider that the find() function returns a vector containing values measured in different units, it makes sense to disallow units in that vector and hence in the quantities of the solve block. I'm letting you research this and tell me if my reasoning is correct.
 
Thanks!

So there were three issues. First, the equate. Second, the units (though I'm not sure I understand the issue, since I tried using various other units I know MathCAD understands without success; it seems it can't handle mixing unitless variables with units in the solve block even if the equations are consistent.)

Third, the big gotcha, seems to have prevented me from identifying the other issues by trial and error. The solve block doesn't work if two of my known values are equal... I stumbled upon the issue while correcting my units issue. When I had (temporarily) different values and a solution occured. Upon correcting the known value the solution became an error.


Curious, since the equations remain algebraicly solvable in this case but MathCAD can't hack it.

In the attached file you can replicate the issue by removing the ".1" from sigma_y. Can you see what causes this final issue?
 
 http://files.engineering.com/getfile.aspx?folder=33c05ed9-f002-4561-870b-e760d9f24756&file=Triaxial_Stress.xmcd
Can you save it in Ver 11 or 13?

The unit problem is probably caused by have the results with different units. As noted by groovimus, the results are a vector and a vector has to have the same units for all elements.
 
I understand the units now - thanks! I got a solution with units when returning only a single value and using a unit I've known to work previously (psi). No problem with mixing in dimensionless values until trying to return the mixed vector. A little wacky, since you can only use a single find, but at least I get it.

Still stumped by the lack of a solution when sigma_y and sigma_x have the same value. I'm inclined to think it is an issue within the numerical solver, but its entirely possible I'm misssing something.

Here is the file in v11 format.
 
 http://files.engineering.com/getfile.aspx?folder=1293d2f8-dece-47e4-b980-8c5d707779d8&file=Triaxial_Stress.mcd
Yeah this is a kind of quirky situation that I haven't seen, but apparently it has to do with the first 2 constraints in your solve block. With the original assigned values, these two constraints are numerically identical. When the algorithm then begins to tweak sigma-z these two constraints behave identically and the LMA interprets this as incorrect conditions in the constraints and will not migrate down the gradient and the problem has become "ill-posed".

So far as units go the Levenberg-Marquardt algorithm is a numerical one obviously. To allow units in a solve block, Mathcad would be stripping out the units before passing parameters to the LMA and then re-scaling the parameters to account for unit prefixes etc. but the big bugaboo is like I said before, the units would have to be put back in, the scaling done, and then you would end up with a vector of values with arbitrarily mixed units which makes no sense from a correct usage standpoint. A vector should either be unitless or of uniform units.
 
When sigma-x and sigma-y are identical, two of the equations are identical and you are left with two equations and three unknowns and Find() doesn't work. Minerr() does give the solution.
 
Agreed, the two first equations become identical, but that also collapses the number of unknows to two (epsilon_x = epsilon_y), which is quite solvable, at least symbolically.

I can begin to understand the issue with the numeric solution, but I still find it troubling that the case isn't handled by the software. Wouldn't unknowns becoming equal under certain conditions be a common special case for systems of equations?

As far as the units, I do understand, but I find it odd that the software doesn't have a method to work around.

Obviously, I'm more used to working symbolically than numerically, so these challenges aren't the sort I'm used to dealing with.

Thanks again.
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor