cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
Showing results for 
Search instead for 
Did you mean: 

Community Tip - Your Friends List is a way to easily have access to the community members that you interact with the most! X

Variable sized vectors and matricies where the components can be edited by the user

dhyde
1-Visitor

Variable sized vectors and matricies where the components can be edited by the user

I am trying to make a comprehensive UNIFAC model program (it is an activity coefficient model used in chemical engineering). Currently I have it running and it works correctly, except for the user to be able to use this program for any size mixture system, they must edit the component matrices manually. For instance, if there are two species in the mixture, the user must edit the first vector to have two components and input the corresponding values, and they must edit the second matrix to have two rows and then they must input the corresponding values. What I want my program to be able to do is have the user input the number of components and this variable will produce both the vector and the matrix of the correct corresponding sizes. After these are created, then the user needs to be able to edit the values of the matrix and input the data that they need to run. I know how to make both vectors and matrices of variable sizes but what I need help with is making these resultant vectors and matricies able to be edited by the user to where they can input the data they need to run in the system.

ACCEPTED SOLUTION

Accepted Solutions
RichardJ
19-Tanzanite
(To:dhyde)

Does this do what you want?

View solution in original post

9 REPLIES 9
RichardJ
19-Tanzanite
(To:dhyde)

Please don't cross post. It leads to confusion and wastes peoples time because you can the same answers in more then one place.

Which version of Mathcad are you using?

dhyde
1-Visitor
(To:RichardJ)

Sorry, this is my first time posting. And I am using Mathcad 15

RichardJ
19-Tanzanite
(To:dhyde)

Does this do what you want?

dhyde
1-Visitor
(To:RichardJ)

Yes, thank you this does exactly what I need. Thank you for your help!

mccoolj
4-Participant
(To:dhyde)

I know this is an old post now, but the zipped file shared previously sounds like what I need as well, but it won't open in Prime 6.0. Is it possible to get an updated copy of that "Empty matrix creation.xmcdz" worksheet shared here, or possibly a pdf so that I could at least see what was done in that previous version as far as syntax and so forth? Any help is much appreciated!

Jason

VladimirN
24-Ruby II
(To:mccoolj)

Here it is.

Werner_E
25-Diamond I
(To:mccoolj)

Vladimir sent you the converted file but you may notice that some regions are just converted to pictures, rendering the converted sheet useless. The reason is that the older Mathcad versions were much more powerful than the Prime versions which miss a lot of features. Some of the features not available in Prime like embedding symbolic calculations in a program or the used of scripted components were use by Richard in his sheet and thats the reason its not working in Prime.

In case you are interested here is what it looks like after pressing the "Define Matrix" button

Werner_E_0-1579348146368.png

 

and here is the scipt part of the component:

Option Explicit

Dim State

Text = "Define Matrix"

Sub PushBtnEvent_Start()
  Rem TODO: Add your code here
End Sub

Sub PushBtnEvent_Exec(Inputs,Outputs)

	Dim Regtag, Reg, XML, Val, n, m, i, VarName

	If State = 0 Then Exit Sub

	Regtag = Inputs(0).Value
	For Each Reg in Worksheet.Regions
		If Reg.tag = Regtag Then Exit For
	Next
	If Not IsObject(Reg) Then
		MsgBox "Region tag """ & Regtag & """ not found",_
						vbOKOnly + vbExclamation, "Error"
		Exit Sub
	End If

	If State = 2 Then
		XML = "<ml:define xmlns:ml=""http://schemas.mathsoft.com/math20"">" & vbCrLf & "<ml:id xml:space=""preserve"">MyMatrix</ml:id>" & vbCrLf & "<ml:str xml:space=""preserve"">Matrix not assigned yet</ml:str>" & vbCrLf & "</ml:define>"
   	Reg.MathInterface.XML = XML
		Exit Sub
	End If

	State = 0

	VarName = Inputs(1).Value
	n = Inputs(2).Value
	m = Inputs(3).Value

	XML = "<ml:define xmlns:ml=""http://schemas.mathsoft.com/math20"">"
	XML = XML & vbCrLf & "<ml:id xml:space=""preserve"">" & VarName & "</ml:id>"

	XML = XML & vbCrLf & "<ml:matrix rows=""" & n & """ cols=""" & m & """>"
	For i = 1 to n*m	
		XML = XML & vbCrLf & "<ml:placeholder/>"
	Next

	XML = XML & vbCrLf & "</ml:matrix>"
	XML = XML & vbCrLf & "</ml:define>"
	
	Reg.MathInterface.XML = XML

End Sub

Sub PushBtnEvent_Stop()
  Rem TODO: Add your code here
End Sub

Sub PushBtn_Click()
	State = 1
	PushBtn.Recalculate()
End Sub

Sub PushBtn_DblClick()
	State = 2
	PushBtn.Recalculate()

 

mccoolj
4-Participant
(To:Werner_E)

Yeah, I'd noticed it was nonfunctional, but didn't realize how much was missing! Thanks for posting the script. I have to say, that is disappointing to hear that Mathcad has reduced functionality; definitely not the typical program development. This is probably my first time back to Mathcad since I worked at a previous employer that used it. That was mostly back pre-PTC, and I think v11 was the last one I'd used before now. Maybe I hadn't missed much after all if that's the direction they're heading with the software...

Werner_E
25-Diamond I
(To:mccoolj)

The concept and "development" of Prime sure are disappointing,

v11 is by many considered the best version ever.  v12 was one of the worst versions, SUC was implemented and in v14 Maple was replaced by the much less capable muPad as symbolic engine. As Mathsoft and now PTC had to license muPad from Mathworks, PTC in Prime6 decided to replace muPad b the free FriCAS, which, as the examples which showed up here in the forum suggest, is again weaker than muPad. 😞

As of version which still can be licensed Mathcad 15 is the best choice but its not further developed by PTC- PTC adds it free (the same license file works for both) when you license Prime (buy the tail and get the dog).

Announcements

Top Tags