1/*
2 * MBDyn (C) is a multibody analysis code.
3 * http://www.mbdyn.org
4 *
5 * Copyright (C) 1996-2017
6 *
7 * Pierangelo Masarati	<masarati@aero.polimi.it>
8 * Paolo Mantegazza	<mantegazza@aero.polimi.it>
9 *
10 * Dipartimento di Ingegneria Aerospaziale - Politecnico di Milano
11 * via La Masa, 34 - 20156 Milano, Italy
12 * http://www.aero.polimi.it
13 *
14 * Changing this copyright notice is forbidden.
15 *
16 * This program is free software; you can redistribute it and/or modify
17 * it under the terms of the GNU General Public License as published by
18 * the Free Software Foundation (version 2 of the License).
19 *
20 *
21 * This program is distributed in the hope that it will be useful,
22 * but WITHOUT ANY WARRANTY; without even the implied warranty of
23 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
24 * GNU General Public License for more details.
25 *
26 * You should have received a copy of the GNU General Public License
27 * along with this program; if not, write to the Free Software
28 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
29 */
30
31/*
32 AUTHOR: Reinhard Resch <r.resch@secop.com>
33        Copyright (C) 2011(-2017) all rights reserved.
34
35        The copyright of this code is transferred
36        to Pierangelo Masarati and Paolo Mantegazza
37        for use in the software MBDyn as described
38        in the GNU Public License version 2.1
39*/
40
41set: real X0 = 20e-3;
42set: real Y0 = 30e-3;
43set: real Z0 = -15e-3;
44set: real dX1 = 5e-2*0;
45set: real dY1 = 1e-2*0;
46set: real dZ1 = -1e-2*0;
47set: real dX2 = -5e-2*0;
48set: real dY2 = -3e-2*0;
49set: real dZ2 = -1e-2*0;
50set: real dXP = 1.5e6*0;
51set: real dYP = 0.8e4*0;
52set: real dZP = -0.7e0*0;
53set: real dWX = 7.2e2*0;
54set: real dWY = -13.5e2*0;
55set: real dWZ = -50.3e3;
56set: real dx = 50e-3;
57set: real dy = 10e-3*0;
58set: real dz = 5e-3;
59
60set: real m = 2;
61set: real J11 = 0.02;
62set: real J22 = 0.02;
63set: real J33 = 0.02;
64set: real g = 9.81;
65
66set: real theta_y = atan(0.9);
67set: real theta_z = 0*pi/180;
68
69set: integer node_id_slider = 1001;
70set: integer node_id_ground = 1002;
71
72set: integer prm_node_id_lambda1_1 = 1003;
73set: integer prm_node_id_lambda2_1 = 1004;
74set: integer prm_node_id_z_1 = 1005;
75set: integer prm_node_id_zP_1 = 1006;
76set: integer prm_node_id_tau_1 = 1007;
77set: integer prm_node_id_lambda1_2 = 1008;
78set: integer prm_node_id_lambda2_2 = 1009;
79set: integer prm_node_id_z_2 = 1010;
80set: integer prm_node_id_zP_2 = 1011;
81set: integer prm_node_id_tau_2 = 1012;
82
83set: integer body_id_slider = 2001;
84set: integer joint_id_ground = 3001;
85set: integer joint_id_slider1 = 3002;
86set: integer joint_id_slider2 = 3003;
87set: integer ref_id_slider = 4001;
88set: integer ref_id_slider1 = 4002;
89set: integer ref_id_slider2 = 4003;
90
91begin: data;
92	problem: initial value;	# the default
93end: data;
94
95begin: initial value;
96	initial time: 0.;
97	final time: 10;
98	time step: 1e-3;
99    min time step: 0.1;
100    max time step: 1e-2;
101	max iterations: 1000;
102#	strategy: factor, 0.8, 1, 1.25, 1, 3, 6;
103	tolerance: 1e-8;
104#    method: implicit euler;
105    method: ms, 0.6;
106    derivatives tolerance: 2e-5;
107    derivatives max iterations: 100;
108	derivatives coefficient: 2e-6;
109#    output: residual;
110    #output: jacobian;
111#    output: counter;
112#    linear solver: umfpack, colamd, pivot factor, 0.1, scale, /*lapack,*/ iterative, scale tolerance, 1e-8, always, print condition number, no, max iterations, 100;
113#    linear solver: naive, colamd, pivot factor, 0.1, scale, iterative, scale tolerance, 1e-8, always;
114    linear solver: naive, colamd, pivot factor, 0.1;
115#    nonlinear solver: line search, verbose, yes, print convergence info, no, abort at lambda min, no, scale newton step, no, divergence check, yes, factor, 10., lambda min, 1e-16;
116#    linear solver: naive, colamd, pivot factor, 0.1;
117    nonlinear solver: newton raphson;
118#    abort after: assembly;
119#    abort after: derivatives;
120	eigenanalysis: list, 11, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
121    output matrices,
122	parameter, 0.01,
123	output eigenvectors, output geometry,
124    use lapack, balance, permute;
125    #output: solver condition number, stat, yes;
126    #output: jacobian;
127    #output: iterations;
128    #abort after: assembly;
129end: initial value;
130
131include: "inline_joint_ad_2_parameters.set";
132
133begin: control data;
134	output meter: closest next, 0, forever, const, 0.1;
135    default output: all;
136	structural nodes: 2;
137    rigid bodies: 1;
138    loadable elements: 2-2*traditional;
139    joints: 1+2*traditional;
140	max iterations: 1000;
141	tolerance: 1e-11;
142	gravity;
143	#~ print: dof stats;
144	#~ print: equation description;
145	print: dof description;
146	#~ print: element connection;
147	#~ print: node connection;
148    use: loadable elements, in assembly;
149end: control data;
150
151reference: ref_id_slider,
152    position, reference, global, X0, Y0, Z0,
153    orientation, reference, global, matr, 	cos(theta_y) * cos(theta_z),	-sin(theta_z),	sin(theta_y) * cos(theta_z),
154								            cos(theta_y) * sin(theta_z),	 cos(theta_z),	sin(theta_y) * sin(theta_z),
155								            -sin(theta_y),		 	 			 	   0.,					cos(theta_y),
156    velocity,         reference, global, null,
157    angular velocity, reference, global, null;
158
159reference: ref_id_slider1,
160    position, reference, ref_id_slider, dx/2, dy, dz,
161    orientation, reference, ref_id_slider, eye,
162    velocity, reference, ref_id_slider, null,
163    angular velocity, reference, ref_id_slider, null;
164
165reference: ref_id_slider2,
166    position, reference, ref_id_slider, -dx/2, dy, dz,
167    orientation, reference, ref_id_slider, eye,
168    velocity, reference, ref_id_slider, null,
169    angular velocity, reference, ref_id_slider, null;
170
171begin: nodes;
172
173structural: node_id_slider, dynamic,
174    position, reference, ref_id_slider, null,
175	orientation, reference, global, eye,
176	velocity, reference, ref_id_slider, dXP, dYP, dZP,
177	angular velocity, reference, ref_id_slider, dWX, dWY, dWZ;
178
179structural: node_id_ground, static,
180    position, reference, global, 0., 0., 0.,
181	orientation, reference, global, eye,
182	velocity, reference, global, null,
183	angular velocity, reference, global, null;
184
185end: nodes;
186
187begin: elements;
188
189	body: body_id_slider,
190		# node
191		node_id_slider,
192		# mass
193		m,
194		# relative center of mass
195		reference, node, null,
196		# inertia matrix
197		diag, J11, J22, J33,
198		inertial, reference, node, eye;
199
200    joint: joint_id_ground, clamp, node_id_ground, node, node;
201
202    include: "inline_joint_ad_2_elements.elm";
203
204	gravity: 0., 0., -1.,
205	const, g;
206end: elements;
207
208