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