changeset 11759:2f84019c5445 octave-forge

changes (not ready yet)
author johanb88
date Fri, 07 Jun 2013 17:40:32 +0000
parents d79300686065
children fe32df8ef6ec
files main/mechanics/inst/ocframe/private/beamEB.m
diffstat 1 files changed, 31 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/main/mechanics/inst/ocframe/private/beamEB.m	Fri Jun 07 15:38:09 2013 +0000
+++ b/main/mechanics/inst/ocframe/private/beamEB.m	Fri Jun 07 17:40:32 2013 +0000
@@ -80,15 +80,31 @@
 			if (x1 - small < x && x < x2 + small )
 				#point load between node i and i+1
 				#load divide proportional over the nodes
-				q(i) = pointloads(index,2) * (x2-x)/delta;
-				q(i+1) = pointloads(index,2) * (x-x1)/delta;
+				q(i) += pointloads(index,2) * (x2-x)/delta;
+				q(i+1) += pointloads(index,2) * (x-x1)/delta;
 			endif
 		endfor
 		#dist loads
 		for index=1:rows(distributedloads)
-			if (distributedloads(index,1) > x - delta - small && distributedloads(index,3) < x + small )
-				# point lays in the distributed load
-				# TODO: complete
+			a = distributedloads(index,1);
+			q1 = distributedloads(index,2);
+			b = distributedloads(index,3);
+			q2 = distributedloads(index,4);
+			if (a-small < x1 && b+small > x2)
+				# interval covered by load
+				#load q(x) = rico*x+offset
+				rico=(q1-q2)/(a-b);
+				offset=-(b*q1-a*q2)/(a-b);
+				F1 = rico*x1+offset;
+				F2 = rico*x2+offset;
+				if (F1 < F2)
+					q(i) += F1*delta/2+(F2-F1)*delta/6;
+					q(i+1) += F1*delta/2+(F2-F1)*delta/3;
+				else
+					q(i) += F2*delta/2+(F1-F2)*delta/3;
+					q(i+1) += F2*delta/2+(F1-F2)*delta/6;
+				endif
+				
 			endif
 		endfor
 		x1+=delta;
@@ -106,7 +122,7 @@
 			A(node-1,node)   =-2;
 			A(node-1,node+1) = 1;
 			# V = 0 = v'''  
-			# (using −1/2 1 0 −1 1/2: http://en.wikipedia.org/wiki/Finite_difference_coefficient)
+			# (using -1/2 1 0 -1 1/2: http://en.wikipedia.org/wiki/Finite_difference_coefficient)
 			A(node-2,node-2) = -1/2;
 			A(node-2,node-1) = 1;
 			A(node-2,node) = 0;
@@ -119,7 +135,7 @@
 			A(node+1,node)   =-2;
 			A(node+1,node+1) = 1;
 			# V = 0 = v''' constraint on row "node"  
-			# (using −1/2 1 0 −1 1/2: http://en.wikipedia.org/wiki/Finite_difference_coefficient)
+			# (using -1/2 1 0 -1 1/2: http://en.wikipedia.org/wiki/Finite_difference_coefficient)
 			A(node+2,node-2) = -1/2;
 			A(node+2,node-1) = 1;
 			A(node+2,node) = 0;
@@ -129,13 +145,14 @@
 		# normal node:  EI v'''' + b k v = q
 		# pattern for v'''' around node: 1 -4 6 -4 1
 		# source: Abramowitz and Stegun
-		A(node, node-2) = 1/delta^4*delta;
-		A(node, node-1) = -4/delta^4*delta;
+		# both sides of equation x delta
+		A(node, node-2) = 1/delta^3;
+		A(node, node-1) = -4/delta^3;
 		A(node, node) = (6/delta^4 + b*k/(E*I))*delta;
-		A(node, node+1) = -4/delta^4*delta;
-		A(node, node+2) = 1/delta^4*delta;
+		A(node, node+1) = -4/delta^3;
+		A(node, node+2) = 1/delta^3;
 		
-		B(node,1) = q(node-2)/(E*I);
+		B(node,1) = q(node)/(E*I);
 	endfor
 
 	#solve with LU decomposition
@@ -157,7 +174,8 @@
 	M = M(3:NN-2);
 	V = V(3:NN-2);
 	xcoord = xcoord(3:NN-2);
+
 endfunction
 
 #[x,v,M,V]=beamEB(15,1,500,[3,500;6.50,800],[],30.0e6, 1*1.077^3/12, 20.0e-3/0.01^3); # from berekeningvanconstructies.be
-
+#[x,v,M,V]=beamEB(15,1,500,[],[0,10,15,20],30.0e6, 1*1.077^3/12, 20.0e-3/0.01^3);