http://carat.st.bv.tum.de/caratuserswiki/index.php?title=Special:Contributions/Bauer&feed=atom&deletedOnly=&limit=50&target=Bauer&topOnly=&year=&month=Carat++ Public Wiki - User contributions [en]2024-03-28T18:47:33ZFrom Carat++ Public WikiMediaWiki 1.17.0http://carat.st.bv.tum.de/caratuserswiki/index.php/Users:General_FEM_Analysis/Analyses_Reference/Cutting_PatternUsers:General FEM Analysis/Analyses Reference/Cutting Pattern2020-04-27T08:16:25Z<p>Bauer: /* Parameter Description */</p>
<hr />
<div>[[Category: Users:General FEM Analysis]]<br />
<br />
== General Description ==<br />
<br />
Cutting pattern generation determines a plane and (optimally) stress-free geometry which can be reassembled to build a membrane with a certain prestress and shape (as it was determined in Formfinding).<ref name="Dieringer"> Dieringer, F.: Numerical Methods for the Design and Analysis of Tensile Structures, Dissertation Lehrstuhl für Statik, 2014 </ref><br />
<br />
Prerequisites: [[Users:Form_Finding|Formfinding]] and [[Users:General_FEM_Analysis/Analyses_Reference/Geodesic_Lines|Geodesic Line Search]]<br />
<br />
'''Note''' that an instruction is included in the "Membran-Workshop" documents.<br />
<br />
=== Structure of Equation System ===<br />
<br />
A nonlinear problem is formulated by the equation '''r''' = '''f'''_int('''u''') where '''r''' specifies the residual vector and '''f'''_int defines the internal forces respectively. In general, the internal forces depend on the actual displacement field '''u'''. Thus, the equation is nonlinear with respect to the a priori unknown equilibrium displacements. <br />
<br />
At the equilibrium point the residual vector is equal to zero. The above specified nonlinear problem is linearized for the actual displacement state and solved e.g. by a Newton-Raphson scheme where the residual vector is used to compute incremental displacements by '''K'''_t '''u'''_inc = '''r'''.<br />
<br />
== Input Parameters ==<br />
<br />
=== Parameter Description ===<br />
<br />
{| border="1" cellpadding="3" cellspacing="0"<br />
|colspan="3" style="background:#efefef;"| Compulsory Parameters<br />
|-<br />
!Parameter<br />
!Values, Default(*)<br />
!Description<br />
|-<br />
!PC-ANALYSIS<br />
|''int'' : CUTTING_PATTERN<br />
|Keyword of analysis with analysis ID<br />
|-<br />
!SOLVER<br />
|PC-SOLVER ''int''<br />
|Linking to a linear solver (direct or iterative)<br />
|-<br />
!OUTPUT<br />
|PC-OUT ''int''<br />
|Linking to [[Users:General FEM Analysis/Data Output|output objects]] (specifies the type of output format, e.g. GiD)<br />
|-<br />
!COMPCASE<br />
|LD-COM ''int''<br />
|Linking to computation case object which specify the boundary conditions (loading and supports). Only a single computation case is allowed.<br />
|-<br />
!DOMAIN<br />
|EL-DOMAIN ''int''<br />
|Linking to the domain the analysis should work on<br />
|-<br />
!MAX_ITER_EQUILIBRIUM<br />
|''int''<br />
|Maximum number of equilibrium iterations that are allowed. <br />
|-<br />
!EQUILIBRIUM_ACCURACY<br />
|''float''<br />
|Equilibrium accuracy that has to be reached for convergence. The convergence is checked with the L2 norm of the incremental displacements.<br />
|-<br />
!PATTERN<br />
|PART ''int''<br />
|The parts which should be included in the analysis, separation with comma.<br />
|-<br />
!BC_CONFIGURATION<br />
|TYPE ''int''<br />
|The type of boundary condition configuration, for each part one type must be given. 1... first and last node, 2... last two nodes in the list, 3... first two nodes in the list, 4... largest distance between nodes.<br />
|-<br />
!RELAXATION_METHOD<br />
|STATIC or NONE or GALERKIN or COMBINED<br />
|Definition of relaxation method.<br />
|-<br />
!FLATTENING_AREA<br />
|0 or 1 or 2<br />
|0... prestress area. 1... mean surface normal. 2... cylinder with RADIUS and RO_X,RO_Y,RO_Z.<br />
|-<br />
!PATTERNING_METHOD<br />
|GALERKIN or LS_NR or LS_CG or NONE<br />
|Definition of the patterning method. GALERKIN... principle of virtual work. LS_NR and LS_CG... optimization problem solved with Newton-Raphson or Conjugate Gradient approach.<br />
|-<br />
|colspan="3" style="background:#efefef;"| Optional parameters for the consideration of seam lines<br />
|-<br />
!EQUAL_SEAM_LINES<br />
|TRUE or FALSE<br />
|Includes the seam lengths into the cutting pattern analysis and minimizes the length difference of common edges.<br />
|-<br />
!PENALTY_FAC<br />
|''int''<br />
|Definition of a penalty factor for the seam line length optimization.<br />
|-<br />
!SEAM_LINES<br />
|TRUE or FALSE<br />
|Includes the increased stiffness along the seam lines into the analysis.<br />
|-<br />
!SEAM_AREA<br />
|''float''<br />
|Definition of the seam area for an analysis which includes the seam lines.<br />
|-<br />
!SEAM_MATERIAL<br />
|''int''<br />
|Definition of the seam line material for an analysis which includes the seam lines.<br />
|-<br />
|-<br />
|colspan="3" style="background:#efefef;"| Optional parameters for a cylinder projection before flattening the stripes<br />
|-<br />
!RADIUS<br />
|''float''<br />
|If a cylinder is defined for the projection area (FLATTENING_AREA=2) Definition of the cylinder radius.<br />
|-<br />
!RO_X; RO_Y; RO_Z<br />
|''float''<br />
|Definition of the root point for the cylinder as a projection area.<br />
|-<br />
|-<br />
|colspan="3" style="background:#efefef;"| Optional parameters for a possible restart analysis after the cutting-pattern generation<br />
|-<br />
!MOUNTING_ANALYSIS<br />
|''int''<br />
|Starts the mounting analysis after the cutting pattern generation.<br />
|-<br />
!MOUNTING_ANALYSIS_TYPE<br />
|FULL or RESTART or INCREMENTAL<br />
|Definition of the mounting analysis type.<br />
|}<br />
<br />
=== Example of a Complete Input Block ===<br />
<br />
<pre><br />
PC-ANALYSIS 1: CUTTING_PATTERN<br />
DOMAIN = EL-DOMAIN 1<br />
MAX_ITER_EQUILIBRIUM = 20<br />
EQUILIBRIUM_ACCURACY = 1e-06<br />
COMPCASE = LD-COM 1<br />
OUTPUT = PC-OUT 1<br />
PATTERN = PART 1,3<br />
BC_CONFIGURATION = TYPE 4,4<br />
SOLVER = PC-SOLVER 1<br />
RELAXATION_METHOD=STATIC !NONE, STATIC, GALERKIN, COMBINED<br />
FLATTENING_AREA=1 !0 ...Prestress area, 1 ...Mean surface normal <br />
PATTERNING_METHOD=GALERKIN !LS_NR, GALERKIN, LS_CG, NONE<br />
</pre><br />
<br />
== Example ==<br />
<br />
The following simple example shows the cutting pattern analysis of two parts from a four-point sail. It uses a static relaxation method, the flattening area is the mean surface normal and a Galerkin approach is used for the patterning method.<br />
{|<br />
|[[File:Benchmark_cutpat_4point.png]]<br />
|}<br />
The cutting pattern of the two stripes is shown in the picture below.<br />
{|<br />
|[[File:Benchmark_cutpat_4point_relaxed.png]] <br />
|}<br />
<br />
=== Benchmark examples ===<br />
* four point sail with coarse discretization: ..\examples\benchmark_examples\analyses\cutPat_Membrane1\cbm_CutPat.dat<br />
* four point sail with coarse discretization and automatic mounting analysis after restart: ..\examples\benchmark_examples\analyses\cutPatWithMounting_Membrane1\cbm_CutPatWithMounting.dat<br />
* four point sail with linear elastic material and membrane 1 elements (not included in regular benchmarks due to amount of time for running, but working!) ..\examples\benchmark_examples\analyses\cutting_patterning_membrane1_I\x_cbm_4_point_patterning.txt<br />
<br />
== References ==<br />
<br />
<references/></div>Bauerhttp://carat.st.bv.tum.de/caratuserswiki/index.php/Users:Geometry_Generation/Design_SupportsUsers:Geometry Generation/Design Supports2019-12-06T09:07:32Z<p>Bauer: /* Example of a Complete Input Block */</p>
<hr />
<div>Dirichlet boundary conditions can be applied to design elements with respect to their parametric coordinates.<br />
<br />
=== Parameter Description ===<br />
<br />
{| border="1" cellpadding="3" cellspacing="0"<br />
|colspan="3" style="background:#efefef;"| Parameters LOC_COORD<br />
|-<br />
!Parameter <br />
!Description<br />
!Defined for<br />
|-<br />
!u,v,w = ''int''{0;1}<br />
|only valid for = 0 or = 1. 0 denotes the beginning of the knot vector and 1 the end. If nothing is defined, the boundary conditions are applied to the whole patch.<br />
|Designelements with respective dimensions.<br />
|-<br />
!DE-BREP ''int''<br />
|applies the boundary conditions to the BRepElement.<br />
|DesignBRepelement.<br />
|-<br />
|colspan="3" style="background:#efefef;"| Parameters BC<br />
|-<br />
!Parameter <br />
!Description<br />
!Defined for<br />
|-<br />
!DISP_X <br /> DISP_Y <br /> DISP_Z <br /> DISP_ALL<br />
|blocks the displacement of the corresponding nodes in the respective directions <br />
|every element with respective degrees of freedom at the nodes<br />
|-<br />
!DISP_X_NONZERO <br /> DISP_Y_NONZERO <br /> DISP_Z_NONZERO <br />
|sets the displacement of the corresponding nodes in the respective directions to a value defined by a value (syntax: DISP_X_NONZERO = 0.25, ...) or a NURBS_REF in the Designelement definition. Direct initialization by a value overwrites the other.<br />
|every element with respective degrees of freedom at the nodes<br />
|-<br />
!DISP_T1 <br /> DISP_T2 <br /> DISP_T3<br />
|blocks the displacement in the respective directions. Is applied as weak boundary condition and summoned over all gauss points. Directions correspond to the base vectors of the element formulation. <br />
|ElementNURBS_BRep_EdgeCoupling with ElementSurface_NURBS<br />
|-<br />
!DISP_X_COUPLING <br /> DISP_Y_COUPLING <br /> DISP_Z_COUPLING<br />
|coupling of the dofs of the corresponding nodes in respective direction. Usable for clamping without blocking the displacements.<br />
|every element with respective degrees of freedom at the nodes<br />
|-<br />
!CLAMPED<br />
|clampes by blocking the displacements of the first two control points. It is only applicable for open knot vectors.<br />
|every NURBS based element<br />
|-<br />
!CLAMPED_X <br /> CLAMPED_Y <br /> CLAMPED_Z<br />
|clampes by blocking the displacements in the defined directions of the first two control points. Note that, X, Y, Z does not denote the rotation axis.<br />
|every NURBS based element<br />
|-<br />
!CLAMPED_TOR<br />
|blocks the rotational dof rot_tan.<br />
|ElementBeam_3D_NURBS_KLRod,ElementNURBS_BRep_Beam<br />
|-<br />
!CLAMPED_TOR_NONZERO<br />
|sets the rotational dof rot_tan to defined value ( by value or NURBS_REF).<br />
|ElementBeam_3D_NURBS_KLRod<br />
|-<br />
!ROT_X <br /> ROT_Y <br /> ROT_Z <br /> ROT_ALL<br />
|blocks the rotation of the corresponding nodes around the respective axis.<br />
|every element with respective degrees of freedom at the nodes<br />
|-<br />
!ROT_T1 <br /> ROT_T2 <br /> ROT_T3<br />
|blocks the rotation around the respective base vectors of the element formulation. Is applied as weak boundary condition and summoned over all gauss points. <br />
|ElementNURBS_BRep_EdgeCoupling with ElementSurface_NURBS<br />
|-<br />
!DIR_DIFF_SHELL8_X <br /> DIR_DIFF_SHELL8_Y <br /> DIR_DIFF_SHELL8_Z<br />
|<br />
|<br />
|-<br />
|colspan="3" style="background:#efefef;"| Parameters DIRECTION<br />
|-<br />
!Parameter <br />
!Description<br />
!Defined for<br />
|-<br />
!DIRECTION_1 ''= float, float, float'' <br /> DIRECTION_2 ''= float, float, float''<br />
|This condition allows to limit translatoric movements of a point within a plane or a line. To this purpose a plane is defined by the parameter DIRECTION_1 naming the plane normal. If a second plane is defined by specifying DIRECTION_2 the point is only allowed to move an the intersection line of the two planes. <br />
|DISP_X, DISP_Y, DISP_Z<br />
|-<br />
|colspan="3" style="background:#efefef;"| Parameters CURVE<br />
|-<br />
!Parameter <br />
!Description<br />
!Defined for<br />
|-<br />
!LD-CURVE ''int''<br />
|initial displacements are scaled by the global load factor * local load factor of the defined load curve.<br />
|DISP_X_NONZERO, DISP_Y_NONZERO, DISP_Z_NONZERO, DISP_X_NONZERO <br /> CLAMPED_TOR_NONZERO <br /> CLAMPED_X_NONZERO, CLAMPED_Y_NONZERO, CLAMPED_Z_NONZERO<br />
|-<br />
|}<br />
<br />
=== Example of a Complete Input Block ===<br />
<br />
<pre><br />
!===================================================================<br />
! ID DE-EL LOC COORD BC<br />
DE-SUP 1 1 u=0 DISP_X, DISP_Y, DISP_Z<br />
DE-SUP 2 1 u=0 v=1 w=1 DISP_X, DISP_Y, DISP_Z<br />
DE-SUP 3 1 DISP_X, DISP_Y, DISP_Z <br />
DE-SUP 4 1 DE-BREP 1 DISP_T1, DISP_T2, DISP_T3<br />
DE-SUP 5 1 u=0 DISP_X_NONZERO = 0.25 LD-CURVE 2 <br />
DE-SUP 6 1 u=0 DISP_Y_NONZERO, DISP_Z_NONZERO !works only if DE-EL has a Reference-Patch (NURBS_REF) <br />
DE-SUP 7 1 u=0 DISP_X, DISP_Y, DISP_Z DIRECTION_1 = -1,0,1 DIRECTION_2 = 0,1,-1 !nodes can only move in direction of the vector [1,1,1] <br />
DE-SUP 8 1 DE-BREP 1 DISP_Y_NONZERO = 0.33 LD-CURVE 2 <br />
DE-SUP 9 1 DE-BREP 1 DISP_X, DISP_Y, DISP_Z DIRECTION_1 = -1,0,1 DIRECTION_2 = 0,1,-1 !brep element can only move in direction of the vector [1,1,1]<br />
</pre><br />
<br />
<!--<br />
!Further boundary types. Not necessarily defined for element type<br />
!DISP_X_COUPLING, DISP_Y_COUPLING, DISP_Z_COUPLING<br />
!DISP_X_NONZERO, DISP_Y_NONZERO, DISP_Z_NONZERO<br />
!DISP_ALL<br />
!CLAMPED_TOR_NONZERO<br />
!CLAMPED_X, CLAMPED_Y, CLAMPED_Z ! blocks the displacement in x, y, resp. z-direction<br />
!CLAMPED_X_NONZERO, CLAMPED_Y_NONZERO, CLAMPED_Z_NONZERO ! applies a defined initial displacement in x, y, resp. z-direction<br />
!ROT_X, ROT_Y, ROT_Z<br />
!ROT_ALL<br />
!ROT_T1, ROT_T2, ROT_T3<br />
!DIR_DIFF_SHELL8_X, DIR_DIFF_SHELL8_Y, DIR_DIFF_SHELL8_Z<br />
--><br />
In order to activate boundary conditions which are not related to DesignBRepelements, they have to be added to the respective load combination.<br />
<pre><br />
LD-COM 1<br />
TYPE=BC-DIRICHLET 1<br />
TYPE=BC-DIRICHLET 2 <br />
TYPE=BC-DIRICHLET 3 <br />
TYPE=BC-DIRICHLET 5<br />
TYPE=BC-DIRICHLET 6<br />
TYPE=BC-DIRICHLET 7 <br />
</pre><br />
<br />
In order to use boundary conditions for a set of nodes beside a specific one, a functionality for deactivation is added to the load combination. This can be used to in the design context for e.g. blocking the displacements of a whole design element but unleash the first node (u=0) from this restrictions. Note that this only work for boundary conditions on nodes and not for BRep boundary conditions.<br />
<br />
<pre><br />
LD-COM 1<br />
TYPE=BC-DIRICHLET 3<br />
TYPE=DEACT-BC-DIRICHLET 1 <br />
</pre><br />
<br />
<br />
Automatic coupling of coincidenting control points of different design elements is received by<br />
<br />
<pre><br />
!===================================================================<br />
! ID EL1(Master) EL2 (Slave)<br />
DE-JOINT ALL_COOR<br />
!===================================================================<br />
</pre></div>Bauerhttp://carat.st.bv.tum.de/caratuserswiki/index.php/Users:General_FEM_Analysis/Analyses_Reference/Static_NonlinearUsers:General FEM Analysis/Analyses Reference/Static Nonlinear2019-11-19T14:05:05Z<p>Bauer: /* Parameter Description */</p>
<hr />
<div>[[Category: Users:General FEM Analysis]]<br />
<br />
== General Description ==<br />
<br />
The static nonlinear analysis is applied to analyze displacements, strains or stresses of nonlinear structures. There exists several sources of nonlinearities like nonlinear kinematics, nonlinear material behavior or contact scenarios.<br />
<br />
The static nonlinear analysis formulates structural equilibrium on the actual configuration under consideration of the actual system response. <br />
<br />
=== Structure of Equation System ===<br />
<br />
A nonlinear problem is formulated by the equation '''r''' = '''f'''_int('''u''') - λ * '''f'''_ext('''u''') where '''r''' specifies the residual vector and '''f'''_int and '''f'''_ext define the internal and external forces, respectively. In general, the internal forces as well as the external forces depend on the actual displacement field '''u'''. Thus, the equation is nonlinear with respect to the a priori unknown equilibrium displacements. The parameter λ specifies a scaling parameter for the external load. Usually this parameter is controlled by a load curve which specifies λ as a function of the pseudo time t. The slope of this load curve must be small enough such that convergence is possible in each step. Whenever a nonlinear analysis has convergence problems it is appropriate to reduce the slope of this load curve and calculate more time steps.<br />
<br />
At the equilibrium point the internal forces are equal to the external forces and the residual vector is equal to zero. The above specified nonlinear problem is linearized for the actual displacement state and solved by a Newton-Raphson scheme where the residual vector is used to compute incremental displacements by '''K'''_t '''u'''_inc = '''r'''. Here the tangential stiffness matrix is specified by '''K'''_t whereas '''u'''_inc denotes the incremental displacements.<br />
<br />
=== Path Following Methods ===<br />
The iterative solution of the nonlinear problem requires path following methods. The most simple path following method is a pure '''Load Control'''. Here the parameter λ (''lambda'') is increased according to the specified load curve. This allows nonlinear analysis for relatively robust nonlinear problems. But as soon as the structure shows instabilities the load control method usually does not not converge anymore. In this case the '''arc length''' method can be applied to compute the equilibrium path. This method controls the so called arc length which is defined as a combination of displacement increment and load increment. In general it is also possible to directly control a specified displacement.<br />
<br />
More information about path following methods can be found e.g. in the theses of Reiner Reitinger<ref name="Rei94">Reitinger, R.: Stabilität und Optimierung imperfektionsempfindlicher Tragwerke, Dissertation, Bericht Nr. 17, Institut für Baustatik, Universität Stuttgart, 1994</ref> and Amphon Jarusjarungkiat<ref name="Jar2009">Jarusjarungkiat, A.: Nonlinear Analysis of Pneumatic Membranes - "From Subgrid to Interface", Dissertation, Lehrstuhl für Statik, Technische Universität München, 2009</ref>.<br />
<br />
=== Step Length Control ===<br />
Actually there exist two methods for step length control in Carat++. The most simple method is the fixed step length which computes the whole load displacement path with a constant step length. This procedure is robust but inefficient because a large number of load steps has to be computed. Usually it is more efficient to apply adaptive step length methods. A very robust method was presented by Crisfield and Ramm, cf. <ref name="Rei94" />. This method specifies the actual step length for the time step ''i'' by the operation<br />
<br />
''StepLength_i'' = ''alpha'' * ''StepLength_i-1''.<br />
<br />
The parameter ''alpha'' is computed by ''(J_d / (J_i-1 * (Nmb_Restarts+1)))^p'' with: ''J_d'' = desired number of equilibrium iterations, ''J_i-1'' = equilibrium iterations of last time step and ''p'' equals the exponent.<br />
<br />
<pre><br />
Example: Actual iteration step: i<br />
Number of desired equilibrium iterations: J_d = 8.<br />
Number of equilibrium iterations in the last time step: J_i-1 = 12.<br />
Number of restarts: Nmb_Restarts = 0.<br />
Exponent: p=1.0.<br />
Step length of last step: StepLength_i-1 = 0.2.<br />
<br />
alpha = ( 8 / (12*(0+1)))^(1.0) = (8 / 12)^(1.0) = 2/3.<br />
StepLength_i = 2/3 * 0.2 = 0.1333. <br />
<br />
</pre><br />
<br />
Thus, if the number of equilibrium iterations is larger than a desired value the step length is decreased for the next time step. If the number of equilibrium iterations is smaller than a desired value the step length is increased for the next time step. The exponent ''p'' can be used to manipulate the update speed. It should be used with care.<br />
<br />
=== Simultaneous Eigenvalue Analysis ===<br />
Reaching critical points of the load displacement path (limit points, bifurcation points, ...) requires special investigations. A simultaneous eigenvalue analysis solving the problem<br />
<br />
('''K'''_t - ''eigenvalue'' * '''I''') '''phi''' = '''0'''<br />
<br />
allows for approximation of the load factor at the next critical point ''lambda''_k. Whenever a critical point is reached the above equations yields a zero eigenvalue. Extrapolating the current load factor according to the eigenvalue allows for good approximations of the critical load.<br />
<br />
=== Imperfect Designs ===<br />
Many structures subjected to large compression loading are sensitive to geometrical imperfections. Unfortunately the shape of the imperfection is a priori unknown but mostly some information about tolerances exist. In the nonlinear analysis the imperfection shapes can be computed as sum of several normalized eigenmodes. The final imperfection mode is then scaled by the specified tolerance. This operation can be expressed by<br />
<br />
d'''x'''_imp = tol * (sum_i '''phi'''_i).<br />
<br />
After computation of the imperfection mode, the geometry of the structure is modified and the nonlinear analysis starts with the imperfect geometry.<br />
<br />
== Input Parameters ==<br />
<br />
=== Parameter Description ===<br />
<br />
{| border="1" cellpadding="3" cellspacing="0"<br />
|colspan="3" style="background:#efefef;"| Compulsory Parameters<br />
|-<br />
!Parameter<br />
!Values, Default(*)<br />
!Description<br />
|-<br />
!PC-ANALYSIS<br />
|''int'' : STA_GEO_NONLIN<br />
|Keyword of nonlinear analysis with analysis ID<br />
|-<br />
!PATHCONTROL<br />
|FORCE or ARCLENGTH or DISPLACEMENT<br />
|Definition of path control method.<br />
|-<br />
!SOLVER<br />
|PC-SOLVER ''int''<br />
|Linking to a linear solver (direct or iterative)<br />
|-<br />
!OUTPUT<br />
|PC-OUT ''int''<br />
|Linking to [[Users:General FEM Analysis/Data Output|output objects]] (specifies the type of output format, e.g. GiD)<br />
|-<br />
!COMPCASE<br />
|LD-COM ''int''<br />
|Linking to computation case object which specifies the boundary conditions (loading and supports). Only a single computation case is allowed.<br />
|-<br />
!DOMAIN<br />
|EL-DOMAIN ''int''<br />
|Linking to the domain the analysis should work on.<br />
|-<br />
!NUM_STEP<br />
|''int''<br />
|Number of (pseudo) time steps that have to be calculated.<br />
|-<br />
!MAX_ITER_EQUILIBRIUM<br />
|''int''<br />
|Maximum number of equilibrium iterations that are allowed per (pseudo) time step. <br />
|-<br />
!EQUILIBRIUM_ACCURACY<br />
|''float''<br />
|Equilibrium accuracy that has to be reached for convergence. The convergence is checked with the L2 norm of the incremental displacements.<br />
|-<br />
!CURVE<br />
|LD-CURVE ''int''<br />
|Linking to the load curve.<br />
|-<br />
|colspan="3" style="background:#efefef;"| Optional Parameters<br />
|-<br />
!TRACED_NODE<br />
|''int''<br />
|Node ID of traced node. Used for screen and log file output.<br />
|-<br />
!TRACED_NODAL_DOF<br />
|''dof type''<br />
|DOF type of node TRACED_NODE that is traced (DISP_X, DISP_Y, DISP_Z, ...).<br />
|-<br />
!STEP_LENGTH_CONTROL<br />
|FIXED or<br> <br />
<br />
CRISFIELD_RAMM or<br> <br />
<br />
FORCE_BISECT<br />
|FIXED specifies a constant step size where the desired step size is defined by the parameter STEP_LENGTH_CONTROL_REALS (only for ARCLENGTH method). <br><br />
CRISFIELD_RAMM specifies an adaptive method according to Crisfield and Ramm, c.f. <ref name="Rei94" /> (only for ARCLENGTH method). In this case the parameter STEP_LENGTH_CONTROL_INTS = ''int'' specifies the number of restarts that are allowed. The other necessary parameters are specified by STEP_LENGTH_CONTROL_REALS. See the example below. <br><br />
FORCE_BISECT is defined for pathcontrol FORCE. If the full time step cannot be solved, the load increment is bisectioned. This is recursive. In this case the parameter STEP_LENGTH_CONTROL_INTS = ''int'' specifies the max. level of bisectioning of the time steps.<br />
|-<br />
!STEP_LENGTH_CONTROL_REALS<br />
|''float'', ''float'', ...<br />
|respective number of floats for step length control algorithm<br />
|-<br />
!STEP_LENGTH_CONTROL_INTS<br />
|''int'', ''int'', ...<br />
|respective number of integers for step length control algorithm<br />
|-<br />
!SIMULTANEOUS_EIGENVALUE_ANALYSIS<br />
|1 or 0<br />
|flag to specify if a simultaneous eigenvalue analysis should be performed:<br />
<br />
0 - no eigenvalue analysis<br />
<br />
1 - perform eigenvalue analysis. This flag requires definition of parameter EIGEN_SOLVER. <br />
|-<br />
!EIGEN_SOLVER<br />
|PC-SOLVER ''int''<br />
|Linking to an eigenvalue solver<br />
|-<br />
!IMPERFECTION_MODES<br />
|''int'', ''int'', ''int'', ...<br />
|specifies which eigen modes should be summarized to the imperfection mode. Computation of imperfect design requires definition of parameter EIGEN_SOLVER.<br />
|-<br />
!IMPERFECTION_SIZE<br />
|''float''<br />
|specifies the scaling of the imperfection mode.<br />
|-<br />
!BENCHMARK_OUTPUT_NAME<br />
|''string'',''string'',''string'',...<br />
|name of benchmark text files where to write the results. Do not use spaces in between.<br />
|-<br />
!BENCHMARK_ELEMENTS <br />
|''int'', ''int'', ''int'', ...<br />
|id of the design element, where the benchmark point is located.<br />
|-<br />
!BENCHMARK_ELEMENTS_U<br />
|''double'', ''double'', ''double'', ...<br />
|u-coordinate of the benchmark point in the parameter space of the design element.<br />
|-<br />
!BENCHMARK_ELEMENTS_V<br />
|''double'', ''double'', ''double'', ...<br />
|v-coordinate of the benchmark point in the parameter space of the design element.<br />
|-<br />
!BENCHMARK_ELEMENTS_W<br />
|''double'', ''double'', ''double'', ...<br />
|w-coordinate of the benchmark point in the parameter space of the design element.<br />
|-<br />
!BENCHMARK_DISP <br />
|''int'', ''int'', ''int'', ...<br />
|if print displacemnts at benchmark point (Default 0 or 1).<br />
|-<br />
!BENCHMARK_STRESS<br />
|''int'', ''int'', ''int'', ...<br />
|if print stresses at benchmark point (Default 0 or 1).<br />
|-<br />
!BENCHMARK_MINMAXDISP <br />
|''int'', ''int'', ''int'', ...<br />
|if print minimum and maximum displacements of all Gauss points (Default 0 or 1).<br />
|-<br />
!BENCHMARK_MINMAXSTRESS<br />
|''int'', ''int'', ''int'', ...<br />
|if print minimum and maximum stresses of all Gauss points (Default 0 or 1).<br />
|-<br />
!BENCHMARK_BASEVECS<br />
|''int'', ''int'', ''int'', ...<br />
|if print base vector at benchmark point (Default 0 or 1).<br />
|-<br />
!BENCHMARK_TIMESTEP<br />
|''int''<br />
|if benchmark files are written after every successful time step (1) or only after the last time step (0).<br />
|}<br />
<br />
=== Example of a Complete Input Block ===<br />
<br />
<pre><br />
PC-ANALYSIS 1: STA_GEO_NONLIN<br />
PATHCONTROL = ARCLENGTH ! or DISPLACEMENT or FORCE<br />
SOLVER = PC-SOLVER 1<br />
OUTPUT = PC-OUT 1<br />
COMPCASE = LD-COM 1<br />
DOMAIN = EL-DOMAIN 1<br />
NUM_STEP = 30<br />
MAX_ITER_EQUILIBRIUM = 100<br />
EQUILIBRIUM_ACCURACY = 1e-10<br />
CURVE=LD-CURVE 1<br />
TRACED_NODE=2<br />
TRACED_NODAL_DOF=DISP_Y <br />
! Example: fixed step length of 0.05<br />
STEP_LENGTH_CONTROL = FIXED<br />
STEP_LENGTH_CONTROL_REALS = 0.05 ! constant step length of 0.05<br />
! Example adaptive step length according to Crisfield and Ramm<br />
STEP_LENGTH_CONTROL = CRISFIELD_RAMM<br />
STEP_LENGTH_CONTROL_REALS = 0.1, 1.0 ! initial step length = 0.1, exponent p = 1.0<br />
STEP_LENGTH_CONTROL_INTS = 5 ! 5 equilibrium iterations per step are desired<br />
! Example: no simultaneous eigenvalue analysis<br />
SIMULTANEOUS_EIGENVALUE_ANALYSIS = 0 <br />
! Example: simultaneous eigenvalue analysis<br />
SIMULTANEOUS_EIGENVALUE_ANALYSIS = 1<br />
EIGEN_SOLVER = PC-SOLVER 2<br />
! Example: use imperfect design with modes 1, 2, 4, and 6<br />
IMPERFECTION_MODES = 1, 2, 4, 6<br />
IMPERFECTION_SIZE = 0.015 ! maximum size of imperfection mode equals 0.015<br />
EIGEN_SOLVER = PC-SOLVER 2<br />
</pre><br />
<br />
== Examples ==<br />
<br />
=== Snap-through of a two-bar truss ===<br />
<br />
The following simple example shows a geometrically nonlinear analysis of a 2bar truss system using the arclength method. It uses a fixed step size for computation.<br />
The respective input file can be found in the repository under<br />
<br />
* ..\examples\benchmark_examples\analyses\stanln_2bartruss_arclength_l\2bartruss_arclength_fixed.txt<br />
<br />
The problem computes a snap through problem. The [[Users:General FEM Analysis/BCs Reference|boundary conditions]] are visualized by the figure below.<br />
{|<br />
|[[File:2bar_truss_org.png|frame|up|Simple 2bar truss structure discretized with [[Users:General FEM Analysis/Elements Reference/Truss1|truss elements]]]] <br />
|}<br />
The load f is increased by the arclength method such that the displacements depicted in the figure below occur.<br />
{|<br />
|[[File:2bar_truss_defo.gif|frame|up|Truss snap through]] <br />
|}<br />
The figure below shows the load displacement path of the y-displacement of the center node. The well known snap through behavior is clearly visible. For a load factor of approx. 0.14 the structure shows instability. In the following the arclength control reduces the load factor until -0.14 to compute equilibrium states. Obviously these states can be only be computed by arclength or displacement control. After a complete snap through the load can be increased further. Now the complete structure works in tension which does not yield to further instability points.<br />
{|<br />
|[[File:2bar_truss_load_disp_curve.png|frame|up|Load displacement path of 2bar truss]] <br />
|}<br />
<br />
=== Benchmark examples ===<br />
* snap-through of a two-bar truss ([[Users:General_FEM_Analysis/Elements_Reference/Truss1|TRUSS1]]) with arc-length control: ..\examples\benchmark_examples\analyses\stanln_2bartruss_arclength_l\2bartruss_arclength_fixed.txt<br />
* bending of a cantilever discretized with solids ([[Users:General_FEM_Analysis/Elements_Reference/SolidTetra1|SOLIDTETRA1]]) with displacement control: ..\examples\benchmark_examples\analyses\stanln_disp_ctr\cbm_stanlin_disp.dat<br />
* 4-point sail ([[Users:General_FEM_Analysis/Elements_Reference/Membrane1|MEMBRANE1]]) under snow load with load-control: ..\examples\benchmark_examples\analyses\stanln_membrane1_I\cbm_4_point.txt<br />
* pathswitching for a shells ([[Users:General_FEM_Analysis/Elements_Reference/Shell9|SHELL9]]) under compression: ..\examples\benchmark_examples\analyses\stanln_path_switching\cbm_pathswitch.dat<br />
<br />
== References ==<br />
<br />
<references/></div>Bauerhttp://carat.st.bv.tum.de/caratuserswiki/index.php/Users:General_FEM_Analysis/Analyses_Reference/Static_NonlinearUsers:General FEM Analysis/Analyses Reference/Static Nonlinear2019-04-29T09:40:41Z<p>Bauer: /* Parameter Description */</p>
<hr />
<div>[[Category: Users:General FEM Analysis]]<br />
<br />
== General Description ==<br />
<br />
The static nonlinear analysis is applied to analyze displacements, strains or stresses of nonlinear structures. There exists several sources of nonlinearities like nonlinear kinematics, nonlinear material behavior or contact scenarios.<br />
<br />
The static nonlinear analysis formulates structural equilibrium on the actual configuration under consideration of the actual system response. <br />
<br />
=== Structure of Equation System ===<br />
<br />
A nonlinear problem is formulated by the equation '''r''' = '''f'''_int('''u''') - λ * '''f'''_ext('''u''') where '''r''' specifies the residual vector and '''f'''_int and '''f'''_ext define the internal and external forces, respectively. In general, the internal forces as well as the external forces depend on the actual displacement field '''u'''. Thus, the equation is nonlinear with respect to the a priori unknown equilibrium displacements. The parameter λ specifies a scaling parameter for the external load. Usually this parameter is controlled by a load curve which specifies λ as a function of the pseudo time t. The slope of this load curve must be small enough such that convergence is possible in each step. Whenever a nonlinear analysis has convergence problems it is appropriate to reduce the slope of this load curve and calculate more time steps.<br />
<br />
At the equilibrium point the internal forces are equal to the external forces and the residual vector is equal to zero. The above specified nonlinear problem is linearized for the actual displacement state and solved by a Newton-Raphson scheme where the residual vector is used to compute incremental displacements by '''K'''_t '''u'''_inc = '''r'''. Here the tangential stiffness matrix is specified by '''K'''_t whereas '''u'''_inc denotes the incremental displacements.<br />
<br />
=== Path Following Methods ===<br />
The iterative solution of the nonlinear problem requires path following methods. The most simple path following method is a pure '''Load Control'''. Here the parameter λ (''lambda'') is increased according to the specified load curve. This allows nonlinear analysis for relatively robust nonlinear problems. But as soon as the structure shows instabilities the load control method usually does not not converge anymore. In this case the '''arc length''' method can be applied to compute the equilibrium path. This method controls the so called arc length which is defined as a combination of displacement increment and load increment. In general it is also possible to directly control a specified displacement.<br />
<br />
More information about path following methods can be found e.g. in the theses of Reiner Reitinger<ref name="Rei94">Reitinger, R.: Stabilität und Optimierung imperfektionsempfindlicher Tragwerke, Dissertation, Bericht Nr. 17, Institut für Baustatik, Universität Stuttgart, 1994</ref> and Amphon Jarusjarungkiat<ref name="Jar2009">Jarusjarungkiat, A.: Nonlinear Analysis of Pneumatic Membranes - "From Subgrid to Interface", Dissertation, Lehrstuhl für Statik, Technische Universität München, 2009</ref>.<br />
<br />
=== Step Length Control ===<br />
Actually there exist two methods for step length control in Carat++. The most simple method is the fixed step length which computes the whole load displacement path with a constant step length. This procedure is robust but inefficient because a large number of load steps has to be computed. Usually it is more efficient to apply adaptive step length methods. A very robust method was presented by Crisfield and Ramm, cf. <ref name="Rei94" />. This method specifies the actual step length for the time step ''i'' by the operation<br />
<br />
''StepLength_i'' = ''alpha'' * ''StepLength_i-1''.<br />
<br />
The parameter ''alpha'' is computed by ''(J_d / (J_i-1 * (Nmb_Restarts+1)))^p'' with: ''J_d'' = desired number of equilibrium iterations, ''J_i-1'' = equilibrium iterations of last time step and ''p'' equals the exponent.<br />
<br />
<pre><br />
Example: Actual iteration step: i<br />
Number of desired equilibrium iterations: J_d = 8.<br />
Number of equilibrium iterations in the last time step: J_i-1 = 12.<br />
Number of restarts: Nmb_Restarts = 0.<br />
Exponent: p=1.0.<br />
Step length of last step: StepLength_i-1 = 0.2.<br />
<br />
alpha = ( 8 / (12*(0+1)))^(1.0) = (8 / 12)^(1.0) = 2/3.<br />
StepLength_i = 2/3 * 0.2 = 0.1333. <br />
<br />
</pre><br />
<br />
Thus, if the number of equilibrium iterations is larger than a desired value the step length is decreased for the next time step. If the number of equilibrium iterations is smaller than a desired value the step length is increased for the next time step. The exponent ''p'' can be used to manipulate the update speed. It should be used with care.<br />
<br />
=== Simultaneous Eigenvalue Analysis ===<br />
Reaching critical points of the load displacement path (limit points, bifurcation points, ...) requires special investigations. A simultaneous eigenvalue analysis solving the problem<br />
<br />
('''K'''_t - ''eigenvalue'' * '''I''') '''phi''' = '''0'''<br />
<br />
allows for approximation of the load factor at the next critical point ''lambda''_k. Whenever a critical point is reached the above equations yields a zero eigenvalue. Extrapolating the current load factor according to the eigenvalue allows for good approximations of the critical load.<br />
<br />
=== Imperfect Designs ===<br />
Many structures subjected to large compression loading are sensitive to geometrical imperfections. Unfortunately the shape of the imperfection is a priori unknown but mostly some information about tolerances exist. In the nonlinear analysis the imperfection shapes can be computed as sum of several normalized eigenmodes. The final imperfection mode is then scaled by the specified tolerance. This operation can be expressed by<br />
<br />
d'''x'''_imp = tol * (sum_i '''phi'''_i).<br />
<br />
After computation of the imperfection mode, the geometry of the structure is modified and the nonlinear analysis starts with the imperfect geometry.<br />
<br />
== Input Parameters ==<br />
<br />
=== Parameter Description ===<br />
<br />
{| border="1" cellpadding="3" cellspacing="0"<br />
|colspan="3" style="background:#efefef;"| Compulsory Parameters<br />
|-<br />
!Parameter<br />
!Values, Default(*)<br />
!Description<br />
|-<br />
!PC-ANALYSIS<br />
|''int'' : STA_GEO_NONLIN<br />
|Keyword of nonlinear analysis with analysis ID<br />
|-<br />
!PATHCONTROL<br />
|FORCE or ARCLENGTH or DISPLACEMENT<br />
|Definition of path control method.<br />
|-<br />
!SOLVER<br />
|PC-SOLVER ''int''<br />
|Linking to a linear solver (direct or iterative)<br />
|-<br />
!OUTPUT<br />
|PC-OUT ''int''<br />
|Linking to [[Users:General FEM Analysis/Data Output|output objects]] (specifies the type of output format, e.g. GiD)<br />
|-<br />
!COMPCASE<br />
|LD-COM ''int''<br />
|Linking to computation case object which specifies the boundary conditions (loading and supports). Only a single computation case is allowed.<br />
|-<br />
!DOMAIN<br />
|EL-DOMAIN ''int''<br />
|Linking to the domain the analysis should work on.<br />
|-<br />
!NUM_STEP<br />
|''int''<br />
|Number of (pseudo) time steps that have to be calculated.<br />
|-<br />
!MAX_ITER_EQUILIBRIUM<br />
|''int''<br />
|Maximum number of equilibrium iterations that are allowed per (pseudo) time step. <br />
|-<br />
!EQUILIBRIUM_ACCURACY<br />
|''float''<br />
|Equilibrium accuracy that has to be reached for convergence. The convergence is checked with the L2 norm of the incremental displacements.<br />
|-<br />
!CURVE<br />
|LD-CURVE ''int''<br />
|Linking to the load curve.<br />
|-<br />
|colspan="3" style="background:#efefef;"| Optional Parameters<br />
|-<br />
!TRACED_NODE<br />
|''int''<br />
|Node ID of traced node. Used for screen and log file output.<br />
|-<br />
!TRACED_NODAL_DOF<br />
|''dof type''<br />
|DOF type of node TRACED_NODE that is traced (DISP_X, DISP_Y, DISP_Z, ...).<br />
|-<br />
!STEP_LENGTH_CONTROL<br />
|FIXED or<br> <br />
<br />
CRISFIELD_RAMM or<br> <br />
<br />
FORCE_BISECT<br />
|FIXED specifies a constant step size where the desired step size is defined by the parameter STEP_LENGTH_CONTROL_REALS (only for ARCLENGTH method). <br><br />
CRISFIELD_RAMM specifies an adaptive method according to Crisfield and Ramm, c.f. <ref name="Rei94" /> (only for ARCLENGTH method). In this case the parameter STEP_LENGTH_CONTROL_INTS = ''int'' specifies the number of restarts that are allowed. The other necessary parameters are specified by STEP_LENGTH_CONTROL_REALS. See the example below. <br><br />
FORCE_BISECT is defined for pathcontrol FORCE. If the full time step cannot be solved, the load increment is bisectioned. This is recursive. In this case the parameter STEP_LENGTH_CONTROL_INTS = ''int'' specifies the max. level of bisectioning of the time steps.<br />
|-<br />
!STEP_LENGTH_CONTROL_REALS<br />
|''float'', ''float'', ...<br />
|respective number of floats for step length control algorithm<br />
|-<br />
!STEP_LENGTH_CONTROL_INTS<br />
|''int'', ''int'', ...<br />
|respective number of integers for step length control algorithm<br />
|-<br />
!SIMULTANEOUS_EIGENVALUE_ANALYSIS<br />
|1 or 0<br />
|flag to specify if a simultaneous eigenvalue analysis should be performed:<br />
<br />
0 - no eigenvalue analysis<br />
<br />
1 - perform eigenvalue analysis. This flag requires definition of parameter EIGEN_SOLVER. <br />
|-<br />
!EIGEN_SOLVER<br />
|PC-SOLVER ''int''<br />
|Linking to an eigenvalue solver<br />
|-<br />
!IMPERFECTION_MODES<br />
|''int'', ''int'', ''int'', ...<br />
|specifies which eigen modes should be summarized to the imperfection mode. Computation of imperfect design requires definition of parameter EIGEN_SOLVER.<br />
|-<br />
!IMPERFECTION_SIZE<br />
|''float''<br />
|specifies the scalingof the imperfection mode.<br />
|}<br />
<br />
=== Example of a Complete Input Block ===<br />
<br />
<pre><br />
PC-ANALYSIS 1: STA_GEO_NONLIN<br />
PATHCONTROL = ARCLENGTH ! or DISPLACEMENT or FORCE<br />
SOLVER = PC-SOLVER 1<br />
OUTPUT = PC-OUT 1<br />
COMPCASE = LD-COM 1<br />
DOMAIN = EL-DOMAIN 1<br />
NUM_STEP = 30<br />
MAX_ITER_EQUILIBRIUM = 100<br />
EQUILIBRIUM_ACCURACY = 1e-10<br />
CURVE=LD-CURVE 1<br />
TRACED_NODE=2<br />
TRACED_NODAL_DOF=DISP_Y <br />
! Example: fixed step length of 0.05<br />
STEP_LENGTH_CONTROL = FIXED<br />
STEP_LENGTH_CONTROL_REALS = 0.05 ! constant step length of 0.05<br />
! Example adaptive step length according to Crisfield and Ramm<br />
STEP_LENGTH_CONTROL = CRISFIELD_RAMM<br />
STEP_LENGTH_CONTROL_REALS = 0.1, 1.0 ! initial step length = 0.1, exponent p = 1.0<br />
STEP_LENGTH_CONTROL_INTS = 5 ! 5 equilibrium iterations per step are desired<br />
! Example: no simultaneous eigenvalue analysis<br />
SIMULTANEOUS_EIGENVALUE_ANALYSIS = 0 <br />
! Example: simultaneous eigenvalue analysis<br />
SIMULTANEOUS_EIGENVALUE_ANALYSIS = 1<br />
EIGEN_SOLVER = PC-SOLVER 2<br />
! Example: use imperfect design with modes 1, 2, 4, and 6<br />
IMPERFECTION_MODES = 1, 2, 4, 6<br />
IMPERFECTION_SIZE = 0.015 ! maximum size of imperfection mode equals 0.015<br />
EIGEN_SOLVER = PC-SOLVER 2<br />
</pre><br />
<br />
== Examples ==<br />
<br />
=== Snap-through of a two-bar truss ===<br />
<br />
The following simple example shows a geometrically nonlinear analysis of a 2bar truss system using the arclength method. It uses a fixed step size for computation.<br />
The respective input file can be found in the repository under<br />
<br />
* ..\examples\benchmark_examples\analyses\stanln_2bartruss_arclength_l\2bartruss_arclength_fixed.txt<br />
<br />
The problem computes a snap through problem. The [[Users:General FEM Analysis/BCs Reference|boundary conditions]] are visualized by the figure below.<br />
{|<br />
|[[File:2bar_truss_org.png|frame|up|Simple 2bar truss structure discretized with [[Users:General FEM Analysis/Elements Reference/Truss1|truss elements]]]] <br />
|}<br />
The load f is increased by the arclength method such that the displacements depicted in the figure below occur.<br />
{|<br />
|[[File:2bar_truss_defo.gif|frame|up|Truss snap through]] <br />
|}<br />
The figure below shows the load displacement path of the y-displacement of the center node. The well known snap through behavior is clearly visible. For a load factor of approx. 0.14 the structure shows instability. In the following the arclength control reduces the load factor until -0.14 to compute equilibrium states. Obviously these states can be only be computed by arclength or displacement control. After a complete snap through the load can be increased further. Now the complete structure works in tension which does not yield to further instability points.<br />
{|<br />
|[[File:2bar_truss_load_disp_curve.png|frame|up|Load displacement path of 2bar truss]] <br />
|}<br />
<br />
=== Benchmark examples ===<br />
* snap-through of a two-bar truss ([[Users:General_FEM_Analysis/Elements_Reference/Truss1|TRUSS1]]) with arc-length control: ..\examples\benchmark_examples\analyses\stanln_2bartruss_arclength_l\2bartruss_arclength_fixed.txt<br />
* bending of a cantilever discretized with solids ([[Users:General_FEM_Analysis/Elements_Reference/SolidTetra1|SOLIDTETRA1]]) with displacement control: ..\examples\benchmark_examples\analyses\stanln_disp_ctr\cbm_stanlin_disp.dat<br />
* 4-point sail ([[Users:General_FEM_Analysis/Elements_Reference/Membrane1|MEMBRANE1]]) under snow load with load-control: ..\examples\benchmark_examples\analyses\stanln_membrane1_I\cbm_4_point.txt<br />
* pathswitching for a shells ([[Users:General_FEM_Analysis/Elements_Reference/Shell9|SHELL9]]) under compression: ..\examples\benchmark_examples\analyses\stanln_path_switching\cbm_pathswitch.dat<br />
<br />
== References ==<br />
<br />
<references/></div>Bauerhttp://carat.st.bv.tum.de/caratuserswiki/index.php/Users:General_FEM_Analysis/Elements_Reference/Shell_NURBS_KLUsers:General FEM Analysis/Elements Reference/Shell NURBS KL2018-12-19T09:56:15Z<p>Bauer: /* Parameter Description */</p>
<hr />
<div>== General Description ==<br />
This element is based on Kiendl et al. 2009 <ref>J. Kiendl, K.-U. Bletzinger, J. Linhard, and R.Wüchner. “Isogeometric shell analysis with Kirchhoff–Love elements.” In: ComputerMethods in AppliedMechanics and Engineering 198.49-52 (2009), pp. 3902–3914. DOI: 10.1016/j.cma.2009.08.013 </ref> and [https://mediatum.ub.tum.de/node?id=1002634 Phd Thesis of J.Kiendl]. <br />
<br />
=== Example of a Complete Input Block ===<br />
<pre><br />
EL-PROP 1 : SHELL_NURBS_KL <br />
MAT= EL-MAT 1 !material property<br />
THICKNESS = 1.0<br />
COUPLING = EL-PROP 6 !BRep coupling element to handle C^0 continuity inside the patch<br />
! STABILIZATION = EL-PROP 7 !Stabilization element for improving condition number (requires some tests, no optimal solution)<br />
NEJA = NURBS !DIP or FULL !Method for handling the integration for trimmed elements(use NURBS)<br />
INT_TYPE_SHELL_NURBS_KL = USER !or FULL or OPTIMAL !FULL means p+1 and q+1;OPTIML uses in the interior of the patch less quadrature points (some tests required for higher polynomial degrees >3<br />
! GAUSS_U = 4 !# of quadratur points in u-dir in case of INT_TYPE = USER<br />
! GAUSS_V = 4 !# of quadratur points in u-dir in case of INT_TYPE = USER<br />
</pre><br />
<br />
<br />
=== Element Type ===<br />
<br />
* The element formulation is well tested for static and dynamic linear and nonlinear analysis. <br />
* Stresses for nonlinear case need to be corrected.<br />
* Can be used for thin shell structures<br />
<br />
=== Degrees of Freedom ===<br />
<br />
The element uses three translatoric degrees of freedom (''Disp_X'', ''Disp_Y'', ''Disp_Z'') at each control point. <br />
<br />
=== Parameter Description ===<br />
<br />
{| border="1" cellpadding="3" cellspacing="0"<br />
|colspan="3" style="background:#efefef;"| Compulsory Parameters<br />
|-<br />
!Parameter<br />
!Values, Default(*)<br />
!Description<br />
|-<br />
!MAT<br />
|EL-MAT ''int''<br />
|Linking to a material input block<br />
|-<br />
!INT_TYPE_SHELL_NURBS_KL<br />
|FULL, USER, OPTIMAL<br />
|Control of integration type. <br />
* FULL: p+1 and q+1 quadrature points are used (p and q are the polynomial degrees of the NURBS patch) <br />
* USER: the optional parameters GAUSS_U and GAUSS_V define the number of quadrature points<br />
* OPTIMAL: uses in the interior of the patch less quadrature points (some tests required for higher polynomial degrees >3<br />
|-<br />
!THICKNESS<br />
| ''float''<br />
| Thickness of the shell<br />
|-<br />
|-<br />
!NEJA<br />
| NURBS, DIP, FULL<br />
| Integration technique for trimmed elements<br />
*NURBS: trimmed elements are parametrized with untrimmed NURBS within the parameter space<br />
* DIP: ''Discrete Integration procedure'' does not work properly, requires improvement (quadrature points must fullfill the moment fitting equations)<br />
* FULL: Full integration of trimmed elements (not recommended)<br />
|-<br />
|colspan="3" style="background:#efefef;"| Optional Parameters<br />
|-<br />
!Parameter<br />
!Values, Default(*)<br />
!Description<br />
|-<br />
!GAUSS_U<br />
|GAUSS_U = ''int''<br />
|Number of quadrature points in u-direction. Requires INT_TYPE_SHELL_NURBS_KL= USER<br />
|-<br />
|-<br />
!GAUSS_V<br />
|GAUSS_V = ''int''<br />
||Number of quadrature points in v-direction. Requires INT_TYPE_SHELL_NURBS_KL= USER<br />
|-<br />
|-<br />
!COUPLING <br />
| EL-PROP= ''int''<br />
||BRep coupling element to handle C^0 continuity inside the patch<br />
|-<br />
|-<br />
!STABILIZATION <br />
| EL-PROP= ''int''<br />
||Stabilization element for improving condition number (requires some tests, no optimal solution)<br />
|-<br />
!PRESTRESS_CRV<br />
| PRESTRESS_CRV = AUTO<br />
||All curvature terms (b_ref) are set to zero in stiff_mat_el_nln(). This is equal to having a flat patch as reference patch<br />
|-<br />
!PRESTRESS_CL_A1<br />
| PRESTRESS_CL_A1 = AUTO<br />
||covariant metric for reference configuration (gab_ref[0] and gab_ref[2]) is set to the one of the center line (v_mid=const) in stiff_mat_el_nln(). This is only valid for special case of pre-bent lamellas. <br />
|-<br />
!PRESTRESS_CL_A2<br />
| PRESTRESS_CL_A2 = AUTO<br />
||covariant metric for reference configuration (gab_ref[1] and gab_ref[2]) is set to the one of the center line (u_mid=const) in stiff_mat_el_nln(). This is only valid for special case of pre-bent lamellas. <br />
|-<br />
|}<br />
<br />
== Element Loading ==<br />
<br />
The KL shell element is able to handle the following loads:<br />
* dead load<br />
* snow load<br />
* pressure load<br />
<br />
== Benchmarks ==<br />
<br />
The main benchmark file in the ''Carat++''-repository is <br />
* '../examples/benchmark_examples/isogeometric/KL_shell_trim_plate_hole/cbm_plate_with_hole.txt'.<br />
It is further used in: <br />
* '../examples/benchmark_examples/isogeometric/isogeometric_trim_non_linear/cbm_PlateHoleLineSupHighAcc.txt.txt'<br />
<br />
== References ==<br />
<br />
<references/></div>Bauerhttp://carat.st.bv.tum.de/caratuserswiki/index.php/Users:General_FEM_Analysis/Analyses_Reference/Static_LinearUsers:General FEM Analysis/Analyses Reference/Static Linear2018-11-07T15:23:31Z<p>Bauer: /* Parameter Description */</p>
<hr />
<div>[[Category: Users:General FEM]]<br />
<br />
<br />
== General Description ==<br />
<br />
The linear static analysis is applied to analyze displacements, strains or stresses of structures. This analysis is valid for linear static mechanical problems without any nonlinearity (geometrically nonlinear, contact, material nonlinear, ...). Static nonlinear problems can be solved by the [[Users:General FEM Analysis/Analyses Reference/Static Nonlinear|static nonlinear analysis]] whereas transient problems are solved by [[Users:General FEM Analysis/Analyses_Reference/Dynamic_Analysis|dynamic analysis methods]]. <br />
<br />
The static linear analysis formulates structural equilibrium on the initial configuration without consideration of deformations. Hence, it is only valid for problems showing small displacements.<br />
<br />
=== Structure of Equation System ===<br />
<br />
The linear static analysis solves the problem<br />
<br />
'''K'''*'''U'''='''F''',<br />
<br />
with the linear stiffness matrix '''K''', the unknown displacement fields '''U''' and the right hand side vectors '''F'''. This system of equations is solved for the unknown displacements by a linear solver. In general, linear solvers may be separated in iterative and direct solvers. Direct solvers transform the stiffness matrix '''K''' into an upper diagonal matrix. The displacement field follow by a back substitution with the respective right hand side vector. This back substitution requires only small numerical effort which makes direct solvers very attractive if a couple of displacement fields have to be computed.<br />
<br />
<br />
== Input Parameters ==<br />
<br />
=== Parameter Description ===<br />
<br />
{| border="1" cellpadding="3" cellspacing="0"<br />
|colspan="3" style="background:#efefef;"| Compulsory Parameters<br />
|-<br />
!Parameter<br />
!Values, Default(*)<br />
!Description<br />
|-<br />
!SOLVER<br />
|PC-SOLVER ''int''<br />
|Linking to a linear solver (direct or iterative)<br />
|-<br />
!OUTPUT<br />
|PC-OUT ''int''<br />
|Linking to [[Users:General FEM Analysis/Data Output|output objects]] (specifies the type of output format, e.g. GiD)<br />
|-<br />
!COMPCASE<br />
|LD-COM ''int''<br />
|Linking to computation case objects which specify the boundary conditions (loading and supports)<br />
|-<br />
!DOMAIN<br />
|EL-DOMAIN ''int''<br />
|Linking to the domain the analysis should work on<br />
|-<br />
|colspan="3" style="background:#efefef;"| Optional Parameters<br />
|-<br />
!ONLY_IBRA_PRE<br />
| ''int''<br />
|Get integration domain in JSON format for Isogeometric B-Rep Analysis (IBRA) (1 = true, 0 = false)<br />
|-<br />
!SIMULTANEOUS_EIGENVALUE_ANALYSIS<br />
|''int''<br />
|Simultaneous eigenvalue analysis (1 = true, 0 = false)<br />
|-<br />
!EIGEN_SOLVER<br />
|PC-SOLVER ''int''<br />
|Linking to a eigenvalue solver <br />
|-<br />
!NUM_EIGEN_MODES<br />
|''int''<br />
|Number of eigenmodes<br />
|-<br />
!BENCHMARK_ELEMENTS<br />
|''int''<br />
|Ids of Design elements <br />
|-<br />
!BENCHMARK_ELEMENTS_U<br />
|''float''<br />
|Position u of the benchmark points in the parameter space. If the number of members equals the number of the ids of the design element, only one point per element is printed. If not, all positions for every element is printed<br />
|-<br />
!BENCHMARK_ELEMENTS_V<br />
|''float''<br />
|Position v of the benchmark points in the parameter space<br />
|-<br />
!BENCHMARK_ELEMENTS_W<br />
|''float''<br />
|Position w of the benchmark points in the parameter space<br />
|-<br />
!BENCHMARK_DISP<br />
|''int''<br />
|if displacement at benchmark point should be printed (1 = true, 0 = false)<br />
|-<br />
!BENCHMARK_STRESS<br />
|''int''<br />
|if stresses at benchmark point should be printed (1 = true, 0 = false)<br />
|-<br />
!BENCHMARK_OUTPUT_NAME<br />
|''string''<br />
|names of files for each benchmark point (default = benchmark_point). If number of output names and design element ids matches, every element is only printed in the respective benchmark output file. For several names write name1,name2,... without spaces<br />
|}<br />
<br />
=== Example of a Complete Input Block ===<br />
<pre><br />
PC-ANALYSIS 1: STA_GEO_LIN<br />
SOLVER = PC-SOLVER 5<br />
OUTPUT = PC-OUT 1<br />
COMPCASE = LD-COM 1,2,3<br />
DOMAIN = EL-DOMAIN 1<br />
</pre><br />
<br />
<br />
== Examples ==<br />
<br />
=== A Full Example: Bending of a cantilever discretized with shell elements ===<br />
<br />
The following example describes a simple cantilever problem discretized by [[Users:General FEM Analysis/Elements Reference/Shell8|SHELL8]]-elements. The respective input file can be found at <br />
* ..\examples\benchmark_examples\elements\shell8_quad_lin_canti_I\shell8_canti_2x20_elem_load.dat<br />
<br />
The problem computes three computation cases (dead load, snow load and pressure load). The [[Users:General FEM Analysis/BCs Reference|boundary conditions]] are visualized by the figure below.<br />
{|<br />
|[[File:Shell8_canti_org_geom_01.png|frame|up|Simple cantilever problem using SHELL8 elements]] <br />
|}<br />
<br />
The basic goal of each linear static analysis is the computation of the displacement field. For load case 1 this result is depicted in the figure below, whereas the deformation in z-direction is additionally visualized by the color plot.<br />
{|<br />
|[[File:Shell8_canti_def_geo_disp.png|frame|up|Displacement of cantilever problem]] <br />
|}<br />
It can be seen that the support region does not show any deformation whereas the tip region deforms by a value of 8.76. <br />
<br />
Often the stress distribution is visualized by color plots. Shell structures require the specification of the layer on which the stresses are computed. The picture below shows the first principle stress on the top of the cantilever.<br />
{|<br />
|[[File:Shell8_canti_def_geo_stress1.png|frame|up|First principle stress of cantilever problem (top layer)]] <br />
|}<br />
It can be seen that the stresses show maximum values at the support region of the cantilever. At the tip they are nearly zero. In contrast to analytical results the stresses are not exactly zero in numerical models. The reason is the stress computation at the Gauss points. These points are situated inside the elements and not exactly at the tip of the cantilever.<br />
<br />
<br />
=== Benchmark examples ===<br />
* Cantilever under different surface loads, discretized [[Users:General FEM Analysis/Elements Reference/Shell8|SHELL8]]-elements ..\examples\benchmark_examples\elements\shell8_quad_lin_canti_I\shell8_canti_2x20_elem_load.dat<br />
* Truss under tension discretized by [[Users:General FEM Analysis/Elements Reference/SolidHexa1|SOLIDHEXA1]]-elements: ..\examples\benchmark_examples\analyses\stalin_cantilever_hexa_I\cbm_biegebalken.txt</div>Bauerhttp://carat.st.bv.tum.de/caratuserswiki/index.php/Users:Geometry_Generation/Design_Evaluation_PointsUsers:Geometry Generation/Design Evaluation Points2018-09-17T15:48:46Z<p>Bauer: /* Example of a Complete Input Block */</p>
<hr />
<div>[[Category: Users:Geometry Generation]]<br />
<br />
Design Evaluation Points can be used to input evaluation points from outside.<br />
<br />
== Input Parameters ==<br />
<br />
The block has to be initialized by DE-EVALPTS #id. Every design evaluation point in the list starts with DE-EVALPT. This is followed by the ID, the corresponding location and weight.<br />
<br />
=== Parameter Description ===<br />
<br />
{| border="1" cellpadding="3" cellspacing="0"<br />
|colspan="3" style="background:#efefef;"| Compulsory Parameters<br />
|-<br />
!Parameter<br />
!Values, Default(*)<br />
!Description<br />
|-<br />
!Element type<br />
|DE-EVALPT<br />
|Element type = design evaluation point<br />
|-<br />
!ID<br />
|''int''<br />
|ID of the design boundary element<br />
|-<br />
!x<br />
|''float''<br />
|Coordinate in x/u/theta1-direction<br />
|-<br />
!y<br />
|''float''<br />
|Coordinate in y/v/theta2-direction<br />
|-<br />
!z<br />
|''float''<br />
|Coordinate in z/w/theta3-direction<br />
|-<br />
!w<br />
|''float''<br />
|Integration weight<br />
|-<br />
|colspan="3" style="background:#efefef;"| Optional Parameters<br />
|-<br />
!Parameter<br />
!Values, Default(*)<br />
!Description<br />
|-<br />
!G1_PAR<br />
|''float'' ''float'' ''float''<br />
|base vector of the parameter curve / surface / volume<br />
|-<br />
!G2_PAR<br />
|''float'' ''float'' ''float''<br />
|base vector of the parameter surface / volume<br />
|-<br />
!G2_PAR<br />
|''float'' ''float'' ''float''<br />
|base vector of the parameter volume<br />
|-<br />
|}<br />
<br />
<br />
=== Example of a Complete Input Block ===<br />
<pre><br />
!===================================================================<br />
! ID PART PROP NURBS_TOP<br />
DE-ELTOP-NURBS<br />
DE-EL 1 1 2 1 NURBS_GP 2<br />
!===================================================================<br />
! ID PART PROP NURBS_TOP<br />
DE-BREP-NURBS<br />
DE-BREP-EL 1 1 4 PATCH_PAR 2005 OF DE-EL 2 NURBS_PAR_GP 2<br />
DE-BREP-EL 2 1 1 PATCH_PAR 1001 OF DE-EL 1 PATCH_PAR 2005 OF DE-EL 2 TOL=0.1 [0 2.39067671708506][2.39067671708506 0] NURBS_PAR_GP 3 NURBS_PAR_GP_SLAVE 4<br />
!===================================================================<br />
! ID x y z w g1_x g1_y g1_z g2_x g2_y g2_z g3_x g3_y g3_z <br />
DE-EVALPTS 1 <br />
DE-EVALPT 14 1.5773e+00 1.9659e+00 0.0000e+00 4.6515e+00<br />
DE-EVALPT 15 1.5773e+00 7.3370e+00 0.0000e+00 4.6515e+00<br />
DE-EVALPT 16 4.2264e-01 2.1257e+00 0.0000e+00 5.0295e+00<br />
DE-EVALPT 17 4.2264e-01 7.9334e+00 0.0000e+00 5.0295e+00<br />
DE-EVALPTS 2<br />
DE-EVALPT 18 1.5773e+00 9.303e+00 0.0000e+00 1.1953e+00 G1_PAR -8.3658e-01 5.4783e-01 0.0000e+00 G2_PAR 0.0000e+00 0.0000e+00 0.0000e+00 G3_PAR 0.0000e+00 0.0000e+00 0.0000e+00 <br />
DE-EVALPT 19 4.2264e-01 1.005e+01 0.0000e+00 1.1953e+00 G1_PAR -8.3658e-01 5.4783e-01 0.0000e+00 G2_PAR 0.0000e+00 0.0000e+00 0.0000e+00 G3_PAR 0.0000e+00 0.0000e+00 0.0000e+00 <br />
DE-EVALPTS 3<br />
DE-EVALPT 22 5.0520e-01 0.0000e+00 0.0000e+00 1.1953e+00 G1_PAR 1.0000e+00 0.0000e+00 0.0000e+00 G2_PAR 0.0000e+00 0.0000e+00 0.0000e+00 G3_PAR 0.0000e+00 0.0000e+00 0.0000e+00<br />
DE-EVALPT 23 1.8854e+00 0.0000e+00 0.0000e+00 1.1953e+00 G1_PAR 1.0000e+00 0.0000e+00 0.0000e+00 G2_PAR 0.0000e+00 0.0000e+00 0.0000e+00 G3_PAR 0.0000e+00 0.0000e+00 0.0000e+00<br />
DE-EVALPTS 4<br />
DE-EVALPT 24 4.2264e-01 1.0059e+01 0.0000e+00 1.1953e+00 G1_PAR -8.3658e-01 5.4783e-01 0.0000e+00 G2_PAR 0.0000e+00 0.0000e+00 0.0000e+00 G3_PAR 0.0000e+00 0.0000e+00 0.0000e+00<br />
DE-EVALPT 25 1.5773e+00 9.3030e+00 0.0000e+00 1.1953e+00 G1_PAR -8.3658e-01 5.4783e-01 0.0000e+00 G2_PAR 0.0000e+00 0.0000e+00 0.0000e+00 G3_PAR 0.0000e+00 0.0000e+00 0.0000e+00<br />
<br />
</pre></div>Bauerhttp://carat.st.bv.tum.de/caratuserswiki/index.php/Users:Geometry_Generation/Design_Evaluation_PointsUsers:Geometry Generation/Design Evaluation Points2018-09-17T15:43:57Z<p>Bauer: </p>
<hr />
<div>[[Category: Users:Geometry Generation]]<br />
<br />
Design Evaluation Points can be used to input evaluation points from outside.<br />
<br />
== Input Parameters ==<br />
<br />
The block has to be initialized by DE-EVALPTS #id. Every design evaluation point in the list starts with DE-EVALPT. This is followed by the ID, the corresponding location and weight.<br />
<br />
=== Parameter Description ===<br />
<br />
{| border="1" cellpadding="3" cellspacing="0"<br />
|colspan="3" style="background:#efefef;"| Compulsory Parameters<br />
|-<br />
!Parameter<br />
!Values, Default(*)<br />
!Description<br />
|-<br />
!Element type<br />
|DE-EVALPT<br />
|Element type = design evaluation point<br />
|-<br />
!ID<br />
|''int''<br />
|ID of the design boundary element<br />
|-<br />
!x<br />
|''float''<br />
|Coordinate in x/u/theta1-direction<br />
|-<br />
!y<br />
|''float''<br />
|Coordinate in y/v/theta2-direction<br />
|-<br />
!z<br />
|''float''<br />
|Coordinate in z/w/theta3-direction<br />
|-<br />
!w<br />
|''float''<br />
|Integration weight<br />
|-<br />
|colspan="3" style="background:#efefef;"| Optional Parameters<br />
|-<br />
!Parameter<br />
!Values, Default(*)<br />
!Description<br />
|-<br />
!G1_PAR<br />
|''float'' ''float'' ''float''<br />
|base vector of the parameter curve / surface / volume<br />
|-<br />
!G2_PAR<br />
|''float'' ''float'' ''float''<br />
|base vector of the parameter surface / volume<br />
|-<br />
!G2_PAR<br />
|''float'' ''float'' ''float''<br />
|base vector of the parameter volume<br />
|-<br />
|}<br />
<br />
<br />
=== Example of a Complete Input Block ===<br />
<pre><br />
!===================================================================<br />
! ID x y z w g1_x g1_y g1_z g2_x g2_y g2_z g3_x g3_y g3_z <br />
DE-EVALPTS 2 <br />
DE-EVALPT 14 1.5773e+00 1.9659e+00 0.0000e+00 4.6515e+00<br />
DE-EVALPT 15 1.5773e+00 7.3370e+00 0.0000e+00 4.6515e+00<br />
DE-EVALPT 16 4.2264e-01 2.1257e+00 0.0000e+00 5.0295e+00<br />
DE-EVALPT 17 4.2264e-01 7.9334e+00 0.0000e+00 5.0295e+00<br />
DE-EVALPTS 10000 <br />
DE-EVALPT 18 1.5773e+00 9.303e+00 0.0000e+00 1.1953e+00 G1_PAR -8.3658e-01 5.4783e-01 0.0000e+00 G2_PAR 0.0000e+00 0.0000e+00 0.0000e+00 G3_PAR 0.0000e+00 0.0000e+00 0.0000e+00 <br />
DE-EVALPT 19 4.2264e-01 1.005e+01 0.0000e+00 1.1953e+00 G1_PAR -8.3658e-01 5.4783e-01 0.0000e+00 G2_PAR 0.0000e+00 0.0000e+00 0.0000e+00 G3_PAR 0.0000e+00 0.0000e+00 0.0000e+00 <br />
</pre></div>Bauerhttp://carat.st.bv.tum.de/caratuserswiki/index.php/Users:Geometry_Generation/Design_Evaluation_PointsUsers:Geometry Generation/Design Evaluation Points2018-09-17T14:48:13Z<p>Bauer: Created page with "Category: Users:Geometry Generation Design Evaluation Points can be used to input evaluation points from outside. == Input Parameters == The block has to be initialized by..."</p>
<hr />
<div>[[Category: Users:Geometry Generation]]<br />
<br />
Design Evaluation Points can be used to input evaluation points from outside.<br />
<br />
== Input Parameters ==<br />
<br />
The block has to be initialized by DE-EVALPTS #id. Every design evaluation point in the list starts with DE-EVALPT. This is followed by the ID, the corresponding location and weight.<br />
<br />
=== Parameter Description ===<br />
<br />
{| border="1" cellpadding="3" cellspacing="0"<br />
|colspan="3" style="background:#efefef;"| Compulsory Parameters<br />
|-<br />
!Parameter<br />
!Values, Default(*)<br />
!Description<br />
|-<br />
!Element type<br />
|DE-EVALPT<br />
|Element type = design boundary<br />
|-<br />
!ID<br />
|''int''<br />
|ID of the design boundary element<br />
|-<br />
!x<br />
|''float''<br />
|Coordinate in x-direction<br />
|-<br />
!y<br />
|''float''<br />
|Coordinate in y-direction<br />
|-<br />
!z<br />
|''float''<br />
|Coordinate in z-direction<br />
|-<br />
|colspan="3" style="background:#efefef;"| Optional Parameters<br />
|-<br />
!Parameter<br />
!Values, Default(*)<br />
!Description<br />
|-<br />
!TOL<br />
|TOL = ''float''<br />
|allowed distance between master and slave point<br />
|-<br />
! rowspan="2"| LOC<br />
|[ ''float'' ] <br />
|position on a curve<br />
|-<br />
|[ ''float'' ''float'' ] <br />
| <br />
* position on a surface <br />
* interval on a curve<br />
|-<br />
|}<br />
<br />
<br />
=== Example of a Complete Input Block ===<br />
<pre><br />
!===================================================================<br />
! ID x y z w g1_x g1_y g1_z g2_x g2_y g2_z g3_x g3_y g3_z <br />
DE-EVALPTS 2 <br />
DE-EVALPT 14 1.5773e+00 1.9659e+00 0.0000e+00 4.6515e+00<br />
DE-EVALPT 15 1.5773e+00 7.3370e+00 0.0000e+00 4.6515e+00<br />
DE-EVALPT 16 4.2264e-01 2.1257e+00 0.0000e+00 5.0295e+00<br />
DE-EVALPT 17 4.2264e-01 7.9334e+00 0.0000e+00 5.0295e+00<br />
DE-EVALPTS 10000 <br />
DE-EVALPT 18 1.5773e+00 9.303e+00 0.0000e+00 1.1953e+00 G1_PAR -8.3658e-01 5.4783e-01 0.0000e+00 G2_PAR 0.0000e+00 0.0000e+00 0.0000e+00 G3_PAR 0.0000e+00 0.0000e+00 0.0000e+00 <br />
DE-EVALPT 19 4.2264e-01 1.005e+01 0.0000e+00 1.1953e+00 G1_PAR -8.3658e-01 5.4783e-01 0.0000e+00 G2_PAR 0.0000e+00 0.0000e+00 0.0000e+00 G3_PAR 0.0000e+00 0.0000e+00 0.0000e+00 <br />
</pre></div>Bauerhttp://carat.st.bv.tum.de/caratuserswiki/index.php/Users:Geometry_GenerationUsers:Geometry Generation2018-09-17T14:34:00Z<p>Bauer: </p>
<hr />
<div>[[Category: Users:Geometry Generation]]<br />
<br />
[[File:CAD_def.png|400px|border|up|Deformed NURBS-based B-Rep model]] <br />
<br />
The design modul in CARAT allows to read in NURBS-based B-Rep models. Isogeometric-elemens can than be created from these models. Classical FE-elements can be derived only from untrimmed NURBS geometries.<br />
<br />
* [[Users:Geometry Generation/NURBS|NURBS Patches]]<br />
* [[Users:Geometry Generation/Design_Elements|Design Elements ]]<br />
* [[Users:Geometry Generation/Design_BRep_Elements|Design BRep Elements]]<br />
* [[Users:Geometry Generation/Design_Evaluation_Points|Design Evaluation Points]]<br />
<br />
<br />
* [[Users:Geometry Generation/Refinement|Design Refinement ]]<br />
* [[Users:Geometry Generation/Design_Loads|Design Loads]]<br />
* [[Users:Geometry Generation/Design_Supports|Design Supports]]</div>Bauerhttp://carat.st.bv.tum.de/caratuserswiki/index.php/Users:General_FEM_Analysis/Analyses_Reference/Static_LinearUsers:General FEM Analysis/Analyses Reference/Static Linear2018-09-13T12:08:53Z<p>Bauer: /* Parameter Description */</p>
<hr />
<div>[[Category: Users:General FEM]]<br />
<br />
<br />
== General Description ==<br />
<br />
The linear static analysis is applied to analyze displacements, strains or stresses of structures. This analysis is valid for linear static mechanical problems without any nonlinearity (geometrically nonlinear, contact, material nonlinear, ...). Static nonlinear problems can be solved by the [[Users:General FEM Analysis/Analyses Reference/Static Nonlinear|static nonlinear analysis]] whereas transient problems are solved by [[Users:General FEM Analysis/Analyses_Reference/Dynamic_Analysis|dynamic analysis methods]]. <br />
<br />
The static linear analysis formulates structural equilibrium on the initial configuration without consideration of deformations. Hence, it is only valid for problems showing small displacements.<br />
<br />
=== Structure of Equation System ===<br />
<br />
The linear static analysis solves the problem<br />
<br />
'''K'''*'''U'''='''F''',<br />
<br />
with the linear stiffness matrix '''K''', the unknown displacement fields '''U''' and the right hand side vectors '''F'''. This system of equations is solved for the unknown displacements by a linear solver. In general, linear solvers may be separated in iterative and direct solvers. Direct solvers transform the stiffness matrix '''K''' into an upper diagonal matrix. The displacement field follow by a back substitution with the respective right hand side vector. This back substitution requires only small numerical effort which makes direct solvers very attractive if a couple of displacement fields have to be computed.<br />
<br />
<br />
== Input Parameters ==<br />
<br />
=== Parameter Description ===<br />
<br />
{| border="1" cellpadding="3" cellspacing="0"<br />
|colspan="3" style="background:#efefef;"| Compulsory Parameters<br />
|-<br />
!Parameter<br />
!Values, Default(*)<br />
!Description<br />
|-<br />
!SOLVER<br />
|PC-SOLVER ''int''<br />
|Linking to a linear solver (direct or iterative)<br />
|-<br />
!OUTPUT<br />
|PC-OUT ''int''<br />
|Linking to [[Users:General FEM Analysis/Data Output|output objects]] (specifies the type of output format, e.g. GiD)<br />
|-<br />
!COMPCASE<br />
|LD-COM ''int''<br />
|Linking to computation case objects which specify the boundary conditions (loading and supports)<br />
|-<br />
!DOMAIN<br />
|EL-DOMAIN ''int''<br />
|Linking to the domain the analysis should work on<br />
|-<br />
|colspan="3" style="background:#efefef;"| Optional Parameters<br />
|-<br />
!ONLY_IBRA_PRE<br />
| ''int''<br />
|Get integration domain in JSON format for Isogeometric B-Rep Analysis (IBRA) (1 = true, 0 = false)<br />
|-<br />
!SIMULTANEOUS_EIGENVALUE_ANALYSIS<br />
|''int''<br />
|Simultaneous eigenvalue analysis (1 = true, 0 = false)<br />
|-<br />
!EIGEN_SOLVER<br />
|PC-SOLVER ''int''<br />
|Linking to a eigenvalue solver <br />
|-<br />
!NUM_EIGEN_MODES<br />
|''int''<br />
|Number of eigenmodes<br />
|}<br />
<br />
=== Example of a Complete Input Block ===<br />
<pre><br />
PC-ANALYSIS 1: STA_GEO_LIN<br />
SOLVER = PC-SOLVER 5<br />
OUTPUT = PC-OUT 1<br />
COMPCASE = LD-COM 1,2,3<br />
DOMAIN = EL-DOMAIN 1<br />
</pre><br />
<br />
<br />
== Examples ==<br />
<br />
=== A Full Example: Bending of a cantilever discretized with shell elements ===<br />
<br />
The following example describes a simple cantilever problem discretized by [[Users:General FEM Analysis/Elements Reference/Shell8|SHELL8]]-elements. The respective input file can be found at <br />
* ..\examples\benchmark_examples\elements\shell8_quad_lin_canti_I\shell8_canti_2x20_elem_load.dat<br />
<br />
The problem computes three computation cases (dead load, snow load and pressure load). The [[Users:General FEM Analysis/BCs Reference|boundary conditions]] are visualized by the figure below.<br />
{|<br />
|[[File:Shell8_canti_org_geom_01.png|frame|up|Simple cantilever problem using SHELL8 elements]] <br />
|}<br />
<br />
The basic goal of each linear static analysis is the computation of the displacement field. For load case 1 this result is depicted in the figure below, whereas the deformation in z-direction is additionally visualized by the color plot.<br />
{|<br />
|[[File:Shell8_canti_def_geo_disp.png|frame|up|Displacement of cantilever problem]] <br />
|}<br />
It can be seen that the support region does not show any deformation whereas the tip region deforms by a value of 8.76. <br />
<br />
Often the stress distribution is visualized by color plots. Shell structures require the specification of the layer on which the stresses are computed. The picture below shows the first principle stress on the top of the cantilever.<br />
{|<br />
|[[File:Shell8_canti_def_geo_stress1.png|frame|up|First principle stress of cantilever problem (top layer)]] <br />
|}<br />
It can be seen that the stresses show maximum values at the support region of the cantilever. At the tip they are nearly zero. In contrast to analytical results the stresses are not exactly zero in numerical models. The reason is the stress computation at the Gauss points. These points are situated inside the elements and not exactly at the tip of the cantilever.<br />
<br />
<br />
=== Benchmark examples ===<br />
* Cantilever under different surface loads, discretized [[Users:General FEM Analysis/Elements Reference/Shell8|SHELL8]]-elements ..\examples\benchmark_examples\elements\shell8_quad_lin_canti_I\shell8_canti_2x20_elem_load.dat<br />
* Truss under tension discretized by [[Users:General FEM Analysis/Elements Reference/SolidHexa1|SOLIDHEXA1]]-elements: ..\examples\benchmark_examples\analyses\stalin_cantilever_hexa_I\cbm_biegebalken.txt</div>Bauerhttp://carat.st.bv.tum.de/caratuserswiki/index.php/Users:General_FEM_Analysis/Analyses_Reference/Static_LinearUsers:General FEM Analysis/Analyses Reference/Static Linear2018-09-13T12:08:15Z<p>Bauer: /* Parameter Description */</p>
<hr />
<div>[[Category: Users:General FEM]]<br />
<br />
<br />
== General Description ==<br />
<br />
The linear static analysis is applied to analyze displacements, strains or stresses of structures. This analysis is valid for linear static mechanical problems without any nonlinearity (geometrically nonlinear, contact, material nonlinear, ...). Static nonlinear problems can be solved by the [[Users:General FEM Analysis/Analyses Reference/Static Nonlinear|static nonlinear analysis]] whereas transient problems are solved by [[Users:General FEM Analysis/Analyses_Reference/Dynamic_Analysis|dynamic analysis methods]]. <br />
<br />
The static linear analysis formulates structural equilibrium on the initial configuration without consideration of deformations. Hence, it is only valid for problems showing small displacements.<br />
<br />
=== Structure of Equation System ===<br />
<br />
The linear static analysis solves the problem<br />
<br />
'''K'''*'''U'''='''F''',<br />
<br />
with the linear stiffness matrix '''K''', the unknown displacement fields '''U''' and the right hand side vectors '''F'''. This system of equations is solved for the unknown displacements by a linear solver. In general, linear solvers may be separated in iterative and direct solvers. Direct solvers transform the stiffness matrix '''K''' into an upper diagonal matrix. The displacement field follow by a back substitution with the respective right hand side vector. This back substitution requires only small numerical effort which makes direct solvers very attractive if a couple of displacement fields have to be computed.<br />
<br />
<br />
== Input Parameters ==<br />
<br />
=== Parameter Description ===<br />
<br />
{| border="1" cellpadding="3" cellspacing="0"<br />
|colspan="3" style="background:#efefef;"| Compulsory Parameters<br />
|-<br />
!Parameter<br />
!Values, Default(*)<br />
!Description<br />
|-<br />
!SOLVER<br />
|PC-SOLVER ''int''<br />
|Linking to a linear solver (direct or iterative)<br />
|-<br />
!OUTPUT<br />
|PC-OUT ''int''<br />
|Linking to [[Users:General FEM Analysis/Data Output|output objects]] (specifies the type of output format, e.g. GiD)<br />
|-<br />
!COMPCASE<br />
|LD-COM ''int''<br />
|Linking to computation case objects which specify the boundary conditions (loading and supports)<br />
|-<br />
!DOMAIN<br />
|EL-DOMAIN ''int''<br />
|Linking to the domain the analysis should work on<br />
|-<br />
|colspan="3" style="background:#efefef;"| Optional Parameters<br />
|-<br />
!ONLY_IBRA_PRE<br />
| ''int''<br />
|Get integration domain in JSON format for Isogeometric B-Rep Analysis (IBRA)<br />
|-<br />
!SIMULTANEOUS_EIGENVALUE_ANALYSIS<br />
|''int''<br />
|simultaneous eigenvalue analysis<br />
|-<br />
!EIGEN_SOLVER<br />
|PC-SOLVER ''int''<br />
|Linking to a eigenvalue solver <br />
|-<br />
!NUM_EIGEN_MODES<br />
|''int''<br />
|number of eigenmodes<br />
|}<br />
<br />
=== Example of a Complete Input Block ===<br />
<pre><br />
PC-ANALYSIS 1: STA_GEO_LIN<br />
SOLVER = PC-SOLVER 5<br />
OUTPUT = PC-OUT 1<br />
COMPCASE = LD-COM 1,2,3<br />
DOMAIN = EL-DOMAIN 1<br />
</pre><br />
<br />
<br />
== Examples ==<br />
<br />
=== A Full Example: Bending of a cantilever discretized with shell elements ===<br />
<br />
The following example describes a simple cantilever problem discretized by [[Users:General FEM Analysis/Elements Reference/Shell8|SHELL8]]-elements. The respective input file can be found at <br />
* ..\examples\benchmark_examples\elements\shell8_quad_lin_canti_I\shell8_canti_2x20_elem_load.dat<br />
<br />
The problem computes three computation cases (dead load, snow load and pressure load). The [[Users:General FEM Analysis/BCs Reference|boundary conditions]] are visualized by the figure below.<br />
{|<br />
|[[File:Shell8_canti_org_geom_01.png|frame|up|Simple cantilever problem using SHELL8 elements]] <br />
|}<br />
<br />
The basic goal of each linear static analysis is the computation of the displacement field. For load case 1 this result is depicted in the figure below, whereas the deformation in z-direction is additionally visualized by the color plot.<br />
{|<br />
|[[File:Shell8_canti_def_geo_disp.png|frame|up|Displacement of cantilever problem]] <br />
|}<br />
It can be seen that the support region does not show any deformation whereas the tip region deforms by a value of 8.76. <br />
<br />
Often the stress distribution is visualized by color plots. Shell structures require the specification of the layer on which the stresses are computed. The picture below shows the first principle stress on the top of the cantilever.<br />
{|<br />
|[[File:Shell8_canti_def_geo_stress1.png|frame|up|First principle stress of cantilever problem (top layer)]] <br />
|}<br />
It can be seen that the stresses show maximum values at the support region of the cantilever. At the tip they are nearly zero. In contrast to analytical results the stresses are not exactly zero in numerical models. The reason is the stress computation at the Gauss points. These points are situated inside the elements and not exactly at the tip of the cantilever.<br />
<br />
<br />
=== Benchmark examples ===<br />
* Cantilever under different surface loads, discretized [[Users:General FEM Analysis/Elements Reference/Shell8|SHELL8]]-elements ..\examples\benchmark_examples\elements\shell8_quad_lin_canti_I\shell8_canti_2x20_elem_load.dat<br />
* Truss under tension discretized by [[Users:General FEM Analysis/Elements Reference/SolidHexa1|SOLIDHEXA1]]-elements: ..\examples\benchmark_examples\analyses\stalin_cantilever_hexa_I\cbm_biegebalken.txt</div>Bauerhttp://carat.st.bv.tum.de/caratuserswiki/index.php/Users:PrePostProcessing/RhinoPost/Installation_DeveloperUsers:PrePostProcessing/RhinoPost/Installation Developer2018-08-21T15:52:03Z<p>Bauer: /* MS Visual Studio */</p>
<hr />
<div>In order to set up the developer's environment one need the following:<br />
* Rhino 5 <br />
** Rhino SDK5.0<br />
** Microsoft Visual Studio 2010<br />
** QT Creator 4<br />
** QT Library 4<br />
** boost library (boost_1_55 works, boost_1_63 doesn't work, in between unknown)<br />
<br />
* Rhino 6 <br />
** Rhino SDK6.0<br />
** Microsoft Visual Studio 2017<br />
** QT Creator 5, if you want to change the GUI<br />
** QT Library 5 for MSVC2017_64<br />
** boost library (boost_1_66 works)<br />
<br />
= Rhino 5 =<br />
<br />
== Rhino SDK 5.0 ==<br />
You need to download and install the actual [http://www.rhino3d.com/download/rhino-sdk/5.0/release Rhinoceros SDK ].<br />
Version 5.0 does only support MS Visual Studio 2010.<br />
<br />
== QT ==<br />
<br />
* The actual set-up works with QT 4 (Date 19.01.2017). The respective exe-file for MS Visual Studio 2010 (qt-win-opensource-4.8.4-vs2010.exe) can be download on [https://download.qt.io/archive/qt/4.8/4.8.4/].<br />
<br />
* Copy the library qt/vs2010 into your libraries folder.<br />
<br />
== CMake ==<br />
<br />
[[File:CMake_RhinoInterface.PNG|thumb|600px|CMake settings]]<br />
<br />
* The following paths have to be set in cmake_personal_input.dat: <br />
<br />
<pre><br />
set(CARAT_ROOT "C:/carat")<br />
set(LIB_BOOST_INCLUDE_DIR "C:/carat/libraries/boost/actual_boost")<br />
set(LIB_RHINO5 "C:/Program Files (x86)/Rhino 5.0 x64 SDK")<br />
set(QT4DIR64 "C:/carat/libraries/qt/vs2010/4.8.4-dyn-64bit")<br />
</pre><br />
<br />
* Choose the respective carat/src folder for the source code<br />
<br />
* Choose or create a respective build folder<br />
<br />
* Delete the cache, if you are not using Visual Studio 10 2010 Win64 as default native compilers and press "Configure".<br />
<br />
* Choose the packages by unchecking everything beside BUILD_RHINO_PLUG_IN_SDK5.<br />
<br />
* Press "Configure"<br />
<br />
* Press "Generate"<br />
<br />
== MS Visual Studio ==<br />
<br />
* Copy QtCore4.dll, QtCored4.dll, QtGui4.dll, QtGuid4.dll in the Debug and Release folder.<br />
<br />
* Open the project and choose interface_rhino as startproject.<br />
<br />
* Open the properties of the project --> configuration properties --> Debug<br />
** Debug configuration: Command: C:\Program Files (x86)\Rhino 5.0 x64 SDK\Bin\x64\Rhino5x64_d.exe<br />
** Release configuration: Command: C:\Program Files\Rhinoceros 5.0 (64-bit)\System\Rhino.exe<br />
<br />
= Rhino 6 =<br />
<br />
== Rhino SDK 6.0 ==<br />
You need to download and install the actual [http://www.rhino3d.com/download/rhino-sdk/6.0/release Rhinoceros SDK ].<br />
Version 6.0 does only support MS Visual Studio 2017.<br />
<br />
== QT ==<br />
<br />
* The actual set-up works with QT 5 (Date 08.03.2017). <br />
<br />
== CMake ==<br />
<br />
* The following paths have to be set in cmake_personal_input.dat: <br />
<br />
<pre><br />
set(CARAT_ROOT "C:/carat")<br />
set(LIB_BOOST_INCLUDE_DIR "C:/carat/libraries/boost/actual_boost")<br />
set(LIB_RHINO6 "C:/Program Files/Rhino 6.0 SDK")<br />
set(QT5DIR64 "C:/Qt") or respective path<br />
</pre><br />
<br />
* Choose the respective carat/src folder for the source code<br />
<br />
* Choose or create a respective build folder<br />
<br />
* Delete the cache, if you are not using Visual Studio 15 2017 Win64 as default native compilers and press "Configure".<br />
<br />
* Choose the packages by unchecking everything beside BUILD_RHINO_PLUG_IN_SDK6 and USE_WITH_JSON.<br />
<br />
* Press "Configure"<br />
<br />
* Press "Generate"<br />
<br />
== MS Visual Studio ==<br />
<br />
* Copy Qt5Core.dll, Qt5Cored.dll, Qt5Gui.dll, Qt5Guid.dll, Qt5Widgets.dll, Qt5Widgetsd.dll in the Debug and Release folder.<br />
<br />
* Go to ../boost/stage/lib and copy all boost_xxx-vc141-mt-gd-x64-1_66.lib and and rename them by libboost_xxx-vc141-mt-gd-x64-1_66.lib.<br />
<br />
* Create a folder "platforms" in the Debug and Release folder and copy qwindows.dll and qwindowsd.dll from ../QT/5.10.0/msvc2017_64/plugins/platforms. <br />
<br />
* Open the project and choose interface_rhino as startproject.<br />
<br />
* Open the properties of the project --> configuration properties --> Debug<br />
** Release configuration: Command: C:\Program Files\Rhino6\System\Rhino.exe (Note that there is no debug modus for Rhino 6. In order to debug you have to run a release with debug information)<br />
<br />
* Open the properties of the project --> configuration properties --> C/C++ --> Code generation <br />
** Debug configuration: Set Runtime Check to Standard for every project<br />
<br />
* Open the Property Manager and add Rhino.Cpp.PlugIn.props to Debug|x64 and Release|x64 of interface_rhino (cf. [http://developer.rhino3d.com/guides/cpp/migrate-your-plugin-manual-windows/ Add property sheets])<br />
<br />
<!--== References ==<br />
<br />
<references/> --></div>Bauerhttp://carat.st.bv.tum.de/caratuserswiki/index.php/Users:PrePostProcessing/RhinoPost/Installation_DeveloperUsers:PrePostProcessing/RhinoPost/Installation Developer2018-08-17T13:58:51Z<p>Bauer: /* MS Visual Studio */</p>
<hr />
<div>In order to set up the developer's environment one need the following:<br />
* Rhino 5 <br />
** Rhino SDK5.0<br />
** Microsoft Visual Studio 2010<br />
** QT Creator 4<br />
** QT Library 4<br />
** boost library (boost_1_55 works, boost_1_63 doesn't work, in between unknown)<br />
<br />
* Rhino 6 <br />
** Rhino SDK6.0<br />
** Microsoft Visual Studio 2017<br />
** QT Creator 5, if you want to change the GUI<br />
** QT Library 5 for MSVC2017_64<br />
** boost library (boost_1_66 works)<br />
<br />
= Rhino 5 =<br />
<br />
== Rhino SDK 5.0 ==<br />
You need to download and install the actual [http://www.rhino3d.com/download/rhino-sdk/5.0/release Rhinoceros SDK ].<br />
Version 5.0 does only support MS Visual Studio 2010.<br />
<br />
== QT ==<br />
<br />
* The actual set-up works with QT 4 (Date 19.01.2017). The respective exe-file for MS Visual Studio 2010 (qt-win-opensource-4.8.4-vs2010.exe) can be download on [https://download.qt.io/archive/qt/4.8/4.8.4/].<br />
<br />
* Copy the library qt/vs2010 into your libraries folder.<br />
<br />
== CMake ==<br />
<br />
[[File:CMake_RhinoInterface.PNG|thumb|600px|CMake settings]]<br />
<br />
* The following paths have to be set in cmake_personal_input.dat: <br />
<br />
<pre><br />
set(CARAT_ROOT "C:/carat")<br />
set(LIB_BOOST_INCLUDE_DIR "C:/carat/libraries/boost/actual_boost")<br />
set(LIB_RHINO5 "C:/Program Files (x86)/Rhino 5.0 x64 SDK")<br />
set(QT4DIR64 "C:/carat/libraries/qt/vs2010/4.8.4-dyn-64bit")<br />
</pre><br />
<br />
* Choose the respective carat/src folder for the source code<br />
<br />
* Choose or create a respective build folder<br />
<br />
* Delete the cache, if you are not using Visual Studio 10 2010 Win64 as default native compilers and press "Configure".<br />
<br />
* Choose the packages by unchecking everything beside BUILD_RHINO_PLUG_IN_SDK5.<br />
<br />
* Press "Configure"<br />
<br />
* Press "Generate"<br />
<br />
== MS Visual Studio ==<br />
<br />
* Copy QtCore4.dll, QtCored4.dll, QtGui4.dll, QtGuid4.dll in the Debug and Release folder.<br />
<br />
* Open the project and choose interface_rhino as startproject.<br />
<br />
* Open the properties of the project --> configuration properties --> Debug<br />
** Debug configuration: Command: C:\Program Files (x86)\Rhino 5.0 x64 SDK\Bin\x64\Rhino5x64_d.exe<br />
** Release configuration: Command: C:\Program Files\Rhinoceros 5.0 (64-bit)\System\Rhino.exe<br />
<br />
= Rhino 6 =<br />
<br />
== Rhino SDK 6.0 ==<br />
You need to download and install the actual [http://www.rhino3d.com/download/rhino-sdk/6.0/release Rhinoceros SDK ].<br />
Version 6.0 does only support MS Visual Studio 2017.<br />
<br />
== QT ==<br />
<br />
* The actual set-up works with QT 5 (Date 08.03.2017). <br />
<br />
== CMake ==<br />
<br />
* The following paths have to be set in cmake_personal_input.dat: <br />
<br />
<pre><br />
set(CARAT_ROOT "C:/carat")<br />
set(LIB_BOOST_INCLUDE_DIR "C:/carat/libraries/boost/actual_boost")<br />
set(LIB_RHINO6 "C:/Program Files/Rhino 6.0 SDK")<br />
set(QT5DIR64 "C:/Qt") or respective path<br />
</pre><br />
<br />
* Choose the respective carat/src folder for the source code<br />
<br />
* Choose or create a respective build folder<br />
<br />
* Delete the cache, if you are not using Visual Studio 15 2017 Win64 as default native compilers and press "Configure".<br />
<br />
* Choose the packages by unchecking everything beside BUILD_RHINO_PLUG_IN_SDK6 and USE_WITH_JSON.<br />
<br />
* Press "Configure"<br />
<br />
* Press "Generate"<br />
<br />
== MS Visual Studio ==<br />
<br />
* Copy Qt5Core.dll, Qt5Cored.dll, Qt5Gui.dll, Qt5Guid.dll, Qt5Widgets.dll, Qt5Widgetsd.dll in the Debug and Release folder.<br />
<br />
* Create a folder "platforms" in the Debug and Release folder and copy qwindows.dll and qwindowsd.dll from ../QT/5.10.0/msvc2017_64/plugins/platforms. <br />
<br />
* Open the project and choose interface_rhino as startproject.<br />
<br />
* Open the properties of the project --> configuration properties --> Debug<br />
** Release configuration: Command: C:\Program Files\Rhino6\System\Rhino.exe (Note that there is no debug modus for Rhino 6. In order to debug you have to run a release with debug information)<br />
<br />
* Open the properties of the project --> configuration properties --> C/C++ --> Code generation <br />
** Debug configuration: Set Runtime Check to Standard for every project<br />
<br />
* Open the Property Manager and add Rhino.Cpp.PlugIn.props to Debug|x64 and Release|x64 of interface_rhino (cf. [http://developer.rhino3d.com/guides/cpp/migrate-your-plugin-manual-windows/ Add property sheets])<br />
<br />
<!--== References ==<br />
<br />
<references/> --></div>Bauerhttp://carat.st.bv.tum.de/caratuserswiki/index.php/Users:PrePostProcessing/RhinoPost/Installation_DeveloperUsers:PrePostProcessing/RhinoPost/Installation Developer2018-08-17T13:53:38Z<p>Bauer: /* CMake */</p>
<hr />
<div>In order to set up the developer's environment one need the following:<br />
* Rhino 5 <br />
** Rhino SDK5.0<br />
** Microsoft Visual Studio 2010<br />
** QT Creator 4<br />
** QT Library 4<br />
** boost library (boost_1_55 works, boost_1_63 doesn't work, in between unknown)<br />
<br />
* Rhino 6 <br />
** Rhino SDK6.0<br />
** Microsoft Visual Studio 2017<br />
** QT Creator 5, if you want to change the GUI<br />
** QT Library 5 for MSVC2017_64<br />
** boost library (boost_1_66 works)<br />
<br />
= Rhino 5 =<br />
<br />
== Rhino SDK 5.0 ==<br />
You need to download and install the actual [http://www.rhino3d.com/download/rhino-sdk/5.0/release Rhinoceros SDK ].<br />
Version 5.0 does only support MS Visual Studio 2010.<br />
<br />
== QT ==<br />
<br />
* The actual set-up works with QT 4 (Date 19.01.2017). The respective exe-file for MS Visual Studio 2010 (qt-win-opensource-4.8.4-vs2010.exe) can be download on [https://download.qt.io/archive/qt/4.8/4.8.4/].<br />
<br />
* Copy the library qt/vs2010 into your libraries folder.<br />
<br />
== CMake ==<br />
<br />
[[File:CMake_RhinoInterface.PNG|thumb|600px|CMake settings]]<br />
<br />
* The following paths have to be set in cmake_personal_input.dat: <br />
<br />
<pre><br />
set(CARAT_ROOT "C:/carat")<br />
set(LIB_BOOST_INCLUDE_DIR "C:/carat/libraries/boost/actual_boost")<br />
set(LIB_RHINO5 "C:/Program Files (x86)/Rhino 5.0 x64 SDK")<br />
set(QT4DIR64 "C:/carat/libraries/qt/vs2010/4.8.4-dyn-64bit")<br />
</pre><br />
<br />
* Choose the respective carat/src folder for the source code<br />
<br />
* Choose or create a respective build folder<br />
<br />
* Delete the cache, if you are not using Visual Studio 10 2010 Win64 as default native compilers and press "Configure".<br />
<br />
* Choose the packages by unchecking everything beside BUILD_RHINO_PLUG_IN_SDK5.<br />
<br />
* Press "Configure"<br />
<br />
* Press "Generate"<br />
<br />
== MS Visual Studio ==<br />
<br />
* Copy QtCore4.dll, QtCored4.dll, QtGui4.dll, QtGuid4.dll in the Debug and Release folder.<br />
<br />
* Open the project and choose interface_rhino as startproject.<br />
<br />
* Open the properties of the project --> configuration properties --> Debug<br />
** Debug configuration: Command: C:\Program Files (x86)\Rhino 5.0 x64 SDK\Bin\x64\Rhino5x64_d.exe<br />
** Release configuration: Command: C:\Program Files\Rhinoceros 5.0 (64-bit)\System\Rhino.exe<br />
<br />
= Rhino 6 =<br />
<br />
== Rhino SDK 6.0 ==<br />
You need to download and install the actual [http://www.rhino3d.com/download/rhino-sdk/6.0/release Rhinoceros SDK ].<br />
Version 6.0 does only support MS Visual Studio 2017.<br />
<br />
== QT ==<br />
<br />
* The actual set-up works with QT 5 (Date 08.03.2017). <br />
<br />
== CMake ==<br />
<br />
* The following paths have to be set in cmake_personal_input.dat: <br />
<br />
<pre><br />
set(CARAT_ROOT "C:/carat")<br />
set(LIB_BOOST_INCLUDE_DIR "C:/carat/libraries/boost/actual_boost")<br />
set(LIB_RHINO6 "C:/Program Files/Rhino 6.0 SDK")<br />
set(QT5DIR64 "C:/Qt") or respective path<br />
</pre><br />
<br />
* Choose the respective carat/src folder for the source code<br />
<br />
* Choose or create a respective build folder<br />
<br />
* Delete the cache, if you are not using Visual Studio 15 2017 Win64 as default native compilers and press "Configure".<br />
<br />
* Choose the packages by unchecking everything beside BUILD_RHINO_PLUG_IN_SDK6 and USE_WITH_JSON.<br />
<br />
* Press "Configure"<br />
<br />
* Press "Generate"<br />
<br />
== MS Visual Studio ==<br />
<br />
* Copy Qt5Core.dll, Qt5Cored.dll, Qt5Gui.dll, Qt5Guid.dll, Qt5Widgets.dll, Qt5Widgetsd.dll in the Debug and Release folder.<br />
<br />
* Create a folder "platforms" in the Debug and Release folder and copy qwindows.dll and qwindowsd.dll from ../QT/5.10.0/msvc2017_64/plugins/platforms. <br />
<br />
* Open the project and choose interface_rhino as startproject.<br />
<br />
* Open the properties of the project --> configuration properties --> Debug<br />
** Debug configuration: Command: C:\Program Files (x86)\Rhino 5.0 x64 SDK\Bin\x64\Rhino5x64_d.exe<br />
** Release configuration: Command: C:\Program Files\Rhinoceros 5.0 (64-bit)\System\Rhino.exe<br />
<br />
* Open the properties of the project --> configuration properties --> C/C++ --> Code generation <br />
** Debug configuration: Set Runtime Check to Standard for every project<br />
<br />
* Open the Property Manager and add Rhino.Cpp.PlugIn.props to Debug|x64 and Release|x64 of interface_rhino (cf. [http://developer.rhino3d.com/guides/cpp/migrate-your-plugin-manual-windows/ Add property sheets])<br />
<br />
<!--== References ==<br />
<br />
<references/> --></div>Bauerhttp://carat.st.bv.tum.de/caratuserswiki/index.php/Users:PrePostProcessing/RhinoPost/Installation_DeveloperUsers:PrePostProcessing/RhinoPost/Installation Developer2018-08-17T13:53:25Z<p>Bauer: /* CMake */</p>
<hr />
<div>In order to set up the developer's environment one need the following:<br />
* Rhino 5 <br />
** Rhino SDK5.0<br />
** Microsoft Visual Studio 2010<br />
** QT Creator 4<br />
** QT Library 4<br />
** boost library (boost_1_55 works, boost_1_63 doesn't work, in between unknown)<br />
<br />
* Rhino 6 <br />
** Rhino SDK6.0<br />
** Microsoft Visual Studio 2017<br />
** QT Creator 5, if you want to change the GUI<br />
** QT Library 5 for MSVC2017_64<br />
** boost library (boost_1_66 works)<br />
<br />
= Rhino 5 =<br />
<br />
== Rhino SDK 5.0 ==<br />
You need to download and install the actual [http://www.rhino3d.com/download/rhino-sdk/5.0/release Rhinoceros SDK ].<br />
Version 5.0 does only support MS Visual Studio 2010.<br />
<br />
== QT ==<br />
<br />
* The actual set-up works with QT 4 (Date 19.01.2017). The respective exe-file for MS Visual Studio 2010 (qt-win-opensource-4.8.4-vs2010.exe) can be download on [https://download.qt.io/archive/qt/4.8/4.8.4/].<br />
<br />
* Copy the library qt/vs2010 into your libraries folder.<br />
<br />
== CMake ==<br />
<br />
[[File:CMake_RhinoInterface.PNG|thumb|600px|CMake settings]]<br />
<br />
* The following paths have to be set in cmake_personal_input.dat: <br />
<br />
<pre><br />
set(CARAT_ROOT "C:/carat")<br />
set(LIB_BOOST_INCLUDE_DIR "C:/carat/libraries/boost/actual_boost")<br />
set(LIB_RHINO5 "C:/Program Files (x86)/Rhino 5.0 x64 SDK")<br />
set(QTDIR64 "C:/carat/libraries/qt/vs2010/4.8.4-dyn-64bit")<br />
</pre><br />
<br />
* Choose the respective carat/src folder for the source code<br />
<br />
* Choose or create a respective build folder<br />
<br />
* Delete the cache, if you are not using Visual Studio 10 2010 Win64 as default native compilers and press "Configure".<br />
<br />
* Choose the packages by unchecking everything beside BUILD_RHINO_PLUG_IN_SDK5.<br />
<br />
* Press "Configure"<br />
<br />
* Press "Generate"<br />
<br />
== MS Visual Studio ==<br />
<br />
* Copy QtCore4.dll, QtCored4.dll, QtGui4.dll, QtGuid4.dll in the Debug and Release folder.<br />
<br />
* Open the project and choose interface_rhino as startproject.<br />
<br />
* Open the properties of the project --> configuration properties --> Debug<br />
** Debug configuration: Command: C:\Program Files (x86)\Rhino 5.0 x64 SDK\Bin\x64\Rhino5x64_d.exe<br />
** Release configuration: Command: C:\Program Files\Rhinoceros 5.0 (64-bit)\System\Rhino.exe<br />
<br />
= Rhino 6 =<br />
<br />
== Rhino SDK 6.0 ==<br />
You need to download and install the actual [http://www.rhino3d.com/download/rhino-sdk/6.0/release Rhinoceros SDK ].<br />
Version 6.0 does only support MS Visual Studio 2017.<br />
<br />
== QT ==<br />
<br />
* The actual set-up works with QT 5 (Date 08.03.2017). <br />
<br />
== CMake ==<br />
<br />
* The following paths have to be set in cmake_personal_input.dat: <br />
<br />
<pre><br />
set(CARAT_ROOT "C:/carat")<br />
set(LIB_BOOST_INCLUDE_DIR "C:/carat/libraries/boost/actual_boost")<br />
set(LIB_RHINO6 "C:/Program Files/Rhino 6.0 SDK")<br />
set(QT5DIR64 "C:/Qt") or respective path<br />
</pre><br />
<br />
* Choose the respective carat/src folder for the source code<br />
<br />
* Choose or create a respective build folder<br />
<br />
* Delete the cache, if you are not using Visual Studio 15 2017 Win64 as default native compilers and press "Configure".<br />
<br />
* Choose the packages by unchecking everything beside BUILD_RHINO_PLUG_IN_SDK6 and USE_WITH_JSON.<br />
<br />
* Press "Configure"<br />
<br />
* Press "Generate"<br />
<br />
== MS Visual Studio ==<br />
<br />
* Copy Qt5Core.dll, Qt5Cored.dll, Qt5Gui.dll, Qt5Guid.dll, Qt5Widgets.dll, Qt5Widgetsd.dll in the Debug and Release folder.<br />
<br />
* Create a folder "platforms" in the Debug and Release folder and copy qwindows.dll and qwindowsd.dll from ../QT/5.10.0/msvc2017_64/plugins/platforms. <br />
<br />
* Open the project and choose interface_rhino as startproject.<br />
<br />
* Open the properties of the project --> configuration properties --> Debug<br />
** Debug configuration: Command: C:\Program Files (x86)\Rhino 5.0 x64 SDK\Bin\x64\Rhino5x64_d.exe<br />
** Release configuration: Command: C:\Program Files\Rhinoceros 5.0 (64-bit)\System\Rhino.exe<br />
<br />
* Open the properties of the project --> configuration properties --> C/C++ --> Code generation <br />
** Debug configuration: Set Runtime Check to Standard for every project<br />
<br />
* Open the Property Manager and add Rhino.Cpp.PlugIn.props to Debug|x64 and Release|x64 of interface_rhino (cf. [http://developer.rhino3d.com/guides/cpp/migrate-your-plugin-manual-windows/ Add property sheets])<br />
<br />
<!--== References ==<br />
<br />
<references/> --></div>Bauerhttp://carat.st.bv.tum.de/caratuserswiki/index.php/Users:HowToUseCarat/InstallationWindowsUsers:HowToUseCarat/InstallationWindows2018-07-31T10:03:18Z<p>Bauer: /* Get the source code */</p>
<hr />
<div>This page shows how Carat++ can be compiled under a Windows environment.<br />
* Windows 10 64bit<br />
* Microsoft Visual Studio 2015<br />
* TODO git/svn<br />
* CMake 3.8.0<br />
* Boost 1.63.0<br />
* MKL (Intel MKL 2017)<br />
<br />
== Windows Version ==<br />
<br />
In this installation guide Windows 10 64bit is used. <br />
<br />
Carat++ installation was tested also under the following Windows versions:<br />
* Windows 7 64bit<br />
* TODO please add more if you tested it there<br />
<br />
== IDE == <br />
<br />
The IDE of choice is Microsoft Visual Studio 2015 Community. Furthermore, the setup with Microsoft Visual Studio 2017 Community is similar.<br />
<br />
* Download it from https://www.microsoft.com/de-DE/download/details.aspx?id=48146<br />
<br />
* In Visual Studio 2015, Visual C++ is not installed by default. When installing, be sure to choose Custom installation and then choose the C++ components you require.<br />
<br />
* If Visual Studio 2015 is already installed, choose File | New | Project | C++ and you will be prompted to install the necessary components.<br />
<br />
//TODO Screenshots<br />
<br />
Settings for Visual Studio:<br />
* Text-editor -> C/C++ -> Tabstopps:<br />
** Indent: Intelligent<br />
** Tabstopp size: 2<br />
** Indent size: 2<br />
** Insert spaces<br />
<br />
== Git ==<br />
<br />
Git is used as version control system. It is needed to download the Carat++ source code.<br />
<br />
TODO<br />
<br />
== Get the source code ==<br />
<br />
* Navigate to the folder where you want to have the source code.<br />
* Right click -> Git Clone...<br />
* Enter the URL: https://gitlab.lrz.de/chair_of_structural_analysis/carat.git (if you are not yet a member of the Chair of Structural Analysis group on GitLab, ask someone to add you to the group (if applicable) or project) <br />
* Click OK. <br />
* Enter your trac-username and -password.<br />
<br />
Note that the original carat version with documentation is available under 129.187.141.105:/repos/carat.git as read_only.<br />
<br />
<gallery><br />
File:git_clone.png|Git Clone<br />
File:git_clone_url.png|URL <br />
</gallery><br />
<br />
== Create directory for build and libraries ==<br />
<br />
In "C:\carat\" create the empty directories "libs" and "build".<br />
<br />
== CMake == <br />
Install the latest CMake version<br />
<br />
== Boost ==<br />
<br />
Get the boost library version 1.63.0 from https://boost.org.<br />
Download and unpack it. <br />
Copy the unpacked folder with the version number into the "carat/libs" directory.<br />
<br />
In order to use the Boost logging, it needs to be compiled:<br />
<br />
* Open the Windwos command prompt.<br />
* Navigate to the "carat/libs/boost_1_63_0 directory.<br />
* Compile boost with the following lines in the command prompt.<br />
<br />
<pre><br />
bootstrap<br />
<br />
b2 link=shared address-model=64 runtime-link=shared --with-atomic --with-chrono --with-date_time --with-filesystem --with-log --with-system --with-thread<br />
<br />
b2 link=static address-model=64 runtime-link=static --with-atomic --with-chrono --with-date_time --with-filesystem --with-log --with-system --with-thread<br />
</pre><br />
If there is an error ''command "cl" missing'', refer to the IDE section above.<br />
<br />
* Now add the following path to the compiled boost libraries to your environmental variable "Path":<br />
<br />
<pre><br />
C:\carat\libs\boost_1_63_0\stage\lib\<br />
</pre><br />
<br />
== MKL ==<br />
<br />
Intel MKL is a equation solving library, that is strongly recommended to use. <br />
<br />
* Install the Intel mkl package located at "\\DC01\F_Users\TEMP\software\intel_suite\MKL_2017_standalone\windows" with default settings.<br />
* Now add the following path to the compiled boost libraries to your environmental variable "Path":<br />
<br />
<pre><br />
C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2017\windows\redist\intel64\mkl\<br />
</pre><br />
<br />
== RapidJSON ==<br />
<br />
RapidJSON is a JSON parser and generator for C++. It is used to read a Carat Inputfile in JSON-format. This library is optional.<br />
<br />
* Copy the library "rapidjson-master" from "\\DC01\F_Users\TEMP\software\Carat_libs" to your carat libraries. <br />
<!-- * Set the respective path in "CARAT_ROOT\src\cmake_personal_input.dat". --><br />
<!-- * Check USE_WITH_JSON in the CMAKE file in order to include it in your project. By default it is not part of the project. --><br />
<br />
<br />
== Compile Carat ==<br />
<br />
=== User Settings === <br />
<br />
First of all it is necessary to set some paths depending on where you stored the carat source and libs.<br />
<br />
Navigate to the Carat++ source directory and make a copy of the "cmake_personal_input.template" to "cmake_personal_input.dat".<br />
<br />
Do not modify the "cmake_personal_input.template"!<br />
<br />
In the "cmake_personal_input.dat" file you find the following part with commented lines where you have to set your user defined paths:<br />
<pre><br />
#==============================<br />
# set directory paths<br />
#==============================<br />
<br />
# BASIC INSTALLATION<br />
<br />
#set(CARAT_ROOT "C:/carat")<br />
#set(LIB_BOOST_INCLUDE_DIR "C:/carat/libs/boost_1_55_0")<br />
#set(LIB_BOOST_DIR "C:/carat/libs/boost_1_55_0/boost")<br />
#set(LIB_MKL_DIR "C:/Program Files (x86)/Intel/Composer XE 2011 SP1/mkl")<br />
</pre><br />
<br />
With the paths used in this installation guide the block should look like (don't forget to remove the #):<br />
<pre><br />
#==============================<br />
# set directories paths<br />
#==============================<br />
<br />
# BASIC INSTALLATION<br />
<br />
set(CARAT_ROOT "~/software/carat")<br />
set(LIB_BOOST_INCLUDE_DIR "C:/carat/libs/boost_1_63_0")<br />
set(LIB_BOOST_DIR "C:/carat/libs/boost_1_63_0/stage/lib")<br />
set(LIB_MKL_DIR "C:/Program Files (x86)/IntelSWTools/compilers_and_libraries_2017/windows/mkl")<br />
</pre><br />
<br />
Make sure to use a "/" as a separator in the paths.<br />
<br />
=== Create the project with CMake===<br />
<br />
TODO add pictures (already created)<br />
<br />
* Open CMake<br />
* Set the carat source path: "C:/carat/src"<br />
* Set the carat build directory: "C:/carat/build" (create this folder if it does not exist)<br />
* Click "Configure"<br />
* Select Visual Studio 2015<br />
* Check the desired Flags (for the basic setup you can use the default values as you see in the sreenshot below)<br />
* Click "Generate<br />
<br />
=== Open the Carat++ project with Visual Studio 2015 ===<br />
<br />
Now you can open the Carat++ Project with Visual Studio 2015 and edit/compile it.<br />
<br />
* Open Visual Studio 2015<br />
* Click "Open Project..." and select the "C:/Carat/build/Carat++.sln" project file.<br />
* Right-click the "carat" module in the project explorer on the right and "Set StartUp Projects".<br />
<br />
Now you are ready to compile Carat++!<br />
<br />
=== Compile ===<br />
<br />
<br />
<br />
== Benchmarks == <br />
<br />
After each build or at least before a git commit the benchmarks have to be tested.<br />
<br />
* Compile "carat_benchmark"<br />
* RUN_TEST<br />
<br />
You should add a benchmark for every development. Therefore you can add two types of benchmarks in the folder example/benchmark_examples/:<br />
<br />
* cbm_myfile1.dat: This benchmark is executed in every RUN_TESTS. The runtime should be short ( < 1s)<br />
* xcbm_myfile1.dat: This benchmark is only executed in RUN_TESTS, if the flag EXTENSIVE_BENCHMARKS.<br />
<br />
In addition, you have to provide a reference file with the correct solution in a file called ref_myfile1.dat. <br />
<br />
<pre><br />
Result "Displacement" "Load Case" 0 Vector OnNodes<br />
Values<br />
79 -1.1022632867e+000 -9.8466095193e-001 -1.3132351571e-001<br />
83 -1.1400399584e+000 -1.1658915870e+000 -9.1812530586e-002<br />
</pre></div>Bauerhttp://carat.st.bv.tum.de/caratuserswiki/index.php/Users:Geometry_Generation/RefinementUsers:Geometry Generation/Refinement2018-07-31T09:21:01Z<p>Bauer: /* Example of a Complete Input Block */</p>
<hr />
<div>[[Category: Users:Geometry Generation]]<br />
<br />
Solution space is determined by the refinement. If a NURBS patch is the underlying geometry of the respective Design / Design BRep element, the polynomial degree (p,q,r) and the knot vector can be manipulated for every direction in the parameter space (u,v,w).<br />
<br />
=== Parameter Description ===<br />
<br />
{| border="1" cellpadding="3" cellspacing="0"<br />
|colspan="3" style="background:#efefef;"| Parameters<br />
|-<br />
!Parameter<br />
!Values, Default(*)<br />
!Description<br />
|-<br />
!dp, dq, dr<br />
|''int'' <br /> auto<br />
|degree elevation by ''int'' <br /> automatic degree elevation accordingly to underlying NURBS patch (only for DE-BREP-EL)<br />
|-<br />
!ep, eq, er<br />
|''int''<br />
|final polynomial degree<br />
|-<br />
!ru, rv, rw<br /><br /><br />gu,gv,gw<br />
|''int'' <br /> <''float'', ''float'', ... > <br /> auto<br /> float<br />
|number of knots to be inserted per element <br /> knots to be inserted <br /> automatic knot insertion accordingly to underlying NURBS patch (only for DE-BREP-EL)<br /> approximated element size in geometry space<br />
|-<br />
|}<br />
<br />
=== Example of a Complete Input Block ===<br />
<pre><br />
!===================================================================<br />
! DE-EL-ID dp= dq= ru=<> rv=<><br />
DE-REFINEMENT<br />
DE-EL 1 ep=2 ru=1 <br />
DE-EL 2 dp=1 dq=1 ru=3 rv=3<br />
DE-EL 3 dp=3 dq=3 dr=3 ru=2 rv=<0.5, 0.9> rw=1 <br />
DE-EL 4 ep=3 eq=3 ru=0.25 rv=0.25<br />
DE-BREP-EL 1 dp=auto ru=auto<br />
DE-BREP-EL 1 dp=2 ru=10<br />
!===================================================================<br />
</pre></div>Bauerhttp://carat.st.bv.tum.de/caratuserswiki/index.php/Users:Geometry_Generation/RefinementUsers:Geometry Generation/Refinement2018-07-31T09:19:41Z<p>Bauer: /* Parameter Description */</p>
<hr />
<div>[[Category: Users:Geometry Generation]]<br />
<br />
Solution space is determined by the refinement. If a NURBS patch is the underlying geometry of the respective Design / Design BRep element, the polynomial degree (p,q,r) and the knot vector can be manipulated for every direction in the parameter space (u,v,w).<br />
<br />
=== Parameter Description ===<br />
<br />
{| border="1" cellpadding="3" cellspacing="0"<br />
|colspan="3" style="background:#efefef;"| Parameters<br />
|-<br />
!Parameter<br />
!Values, Default(*)<br />
!Description<br />
|-<br />
!dp, dq, dr<br />
|''int'' <br /> auto<br />
|degree elevation by ''int'' <br /> automatic degree elevation accordingly to underlying NURBS patch (only for DE-BREP-EL)<br />
|-<br />
!ep, eq, er<br />
|''int''<br />
|final polynomial degree<br />
|-<br />
!ru, rv, rw<br /><br /><br />gu,gv,gw<br />
|''int'' <br /> <''float'', ''float'', ... > <br /> auto<br /> float<br />
|number of knots to be inserted per element <br /> knots to be inserted <br /> automatic knot insertion accordingly to underlying NURBS patch (only for DE-BREP-EL)<br /> approximated element size in geometry space<br />
|-<br />
|}<br />
<br />
=== Example of a Complete Input Block ===<br />
<pre><br />
!===================================================================<br />
! DE-EL-ID dp= dq= ru=<> rv=<><br />
DE-REFINEMENT<br />
DE-EL 1 ep=1 ru=1 <br />
DE-EL 2 dp=1 dq=1 ru=3 rv=3<br />
DE-EL 3 dp=3 dq=3 dr=3 ru=2 rv=<0.5, 0.9> rw=1 <br />
DE-BREP-EL 1 dp=auto ru=auto<br />
DE-BREP-EL 1 dp=2 ru=10<br />
!===================================================================<br />
</pre></div>Bauerhttp://carat.st.bv.tum.de/caratuserswiki/index.php/Users:General_FEM_Analysis/Elements_Reference/NURBS_BRep_PointUsers:General FEM Analysis/Elements Reference/NURBS BRep Point2018-07-11T12:14:30Z<p>Bauer: /* Parameter Description */</p>
<hr />
<div>== General Description ==<br />
<br />
=== Element Type ===<br />
<br />
* This element provides the geometric description of a point on a NURBS patch <br />
* used for coupling, supports and loads<br />
<br />
=== Degrees of Freedom ===<br />
<br />
The element uses the degrees of freedom of the corresponding NURBS patch(es). <br />
<br />
=== Parameter Description ===<br />
<br />
{| border="1" cellpadding="3" cellspacing="0"<br />
|colspan="3" style="background:#efefef;"| Compulsory Parameters<br />
|-<br />
!Parameter<br />
!Values, Default(*)<br />
!Description<br />
|-<br />
!BREP_TYPE<br />
|COUPLING_DISP <br> COUPLING_ROT <br> COUPLING_DISP_ROT <br> NO_COUPLING <br> SUPPORT <br> SUPPORT_ROT <br> CLAMPED_SUPPORT <br> CONNECT_DISP<br />
|coupling of displacements <br> coupling of rotations <br> coupling of displacements and rotations <br> no coupling <br> blocking of the respective displacements <br> blocking of the rotational degree of freedom, if existing (mainly for BEAM_3D_NURBS_KLRod) <br> clamped, movable support <br> pulling two points together<br />
|-<br />
!BL_FACTOR_DISP<br />
|''float''<br />
|penalty factor for displacements. Young's modulus x 100 recommended<br />
|-<br />
!BL_FACTOR_ROT<br />
|''float''<br />
|penalty factor for rotations. Young's modulus x 100 recommended<br />
|-<br />
|colspan="3" style="background:#efefef;"| Optional Parameters<br />
|-<br />
!Parameter<br />
!Values, Default(*)<br />
!Description<br />
|-<br />
!NITSCHE<br />
|USER, AUTO, NONE<br />
|not yet implemented<br />
|-<br />
|}<br />
<br />
=== Example of a Complete Input Block ===<br />
<pre><br />
EL-PROP 1 : NURBS_BREP_POINT<br />
BL_FACTOR_DISP = 1e5<br />
BL_FACTOR_ROT = 1e5<br />
BREP_TYPE = COUPLING_DISP_ROT<br />
</pre><br />
<br />
== Element Loading ==<br />
<br />
<br />
== Benchmarks ==<br />
<br />
No benchmark file in the ''Carat++''-repository is yet defined.<br />
<br />
== References ==<br />
<br />
<references/></div>Bauerhttp://carat.st.bv.tum.de/caratuserswiki/index.php/Main_PageMain Page2018-07-11T12:11:51Z<p>Bauer: /* Standard FE Analyses */</p>
<hr />
<div>== WHAT IS Carat++? ==<br />
<br />
Carat++ is a finite element program for simulation, structural optimization and form finding.<br />
<br />
The software is the result of a complete redesign of CARAT, the research code at the [http://www.st.bv.tum.de Chair of Structural Analysis, Prof. Dr. K.-U. Bletzinger, TU Muenchen].<br />
<br />
== Standard FE Analyses ==<br />
<br />
The kernel of Carat++ is a general finite element solver. Details can be found [[Users:General FEM Analysis|here]]. It offers the following analyses:<br />
<br />
* Static (linear/nonlinear)<br />
* Dynamic (linear/nonlinear)<br />
** Explicit: central difference<br />
** Implicit: Newmark-β, Generalized-α<br />
* Eigenfrequency<br />
* Linear Buckling<br />
* Contact (Work in Progress)<br />
* Interface for coupled analyses like [[Users:FSI|fluid-structure interaction (FSI)]]<br />
<br />
== Isogeometric Analyses ==<br />
<br />
The kernel of Carat++ is also a general finite element solver for isogeometric analysis (IGA). Details can be found [[Users:General FEM Analysis|here]]. It offers the following analyses:<br />
<br />
* Static (linear/nonlinear)<br />
* Form Finding<br />
* Eigenfrequency<br />
<br />
== Structural Optimization ==<br />
<br />
Carat++ comprises a general-purpose optimization toolbox. The main application field is FEM-based shape optimization. <br />
Detailed information about the optimization toolbox and its features can be found [[Users:Structural_Optimization|here]].<br />
<br />
{| <br />
| [[File:Opt_bulkhead_des_upd.png|frame|shape optimization of a pressure bulkhead]]<br />
| [[File:Opt_hutablage_opt_res.png|frame|Eigenfrequency optimization of a car rear shelf]]<br />
|}<br />
<br />
<br />
== Form Finding and Cutting Pattern Generation ==<br />
<br />
Carat++ can perform numerical form finding as well as cutting pattern generation. Detailed information can be found in separate chapters [[Users:Form Finding|here]].<br />
<br />
{| <br />
|[[File:Fofi_example_eyecable.png|frame|left|Formfinding of a prestressed membrane with an eye cable.]]<br />
|}<br />
<br />
<br />
== TODO ==<br />
Three main features are:<br />
<br />
{| <br />
| <br />
* Carat++ is '''platform independent'''<br />
| [[File:Platform_independence.png|200px|center|Carat++ is platform independent]]<br />
|-<br />
| <br />
* Carat++ is '''suitable for large problems'''<br />
: (due to massively parallel programming)<br />
| [[File:Parallel_programming.png|200px|center|Suitable for large problems]]<br />
|-<br />
|<br />
* Carat++ is '''modular and thus easily extensible'''<br />
: (due to object-oriented programming)<br />
| [[File:Modularity_lego.png|100px|center|Modular and thus easy extensible]]<br />
|}<br />
<br />
[[File:Domain_decomp.png|200px|frame|left|Domain decomposition for parallel computing]]</div>Bauerhttp://carat.st.bv.tum.de/caratuserswiki/index.php/Main_PageMain Page2018-07-11T12:11:01Z<p>Bauer: /* Isogeometric Analyses */</p>
<hr />
<div>== WHAT IS Carat++? ==<br />
<br />
Carat++ is a finite element program for simulation, structural optimization and form finding.<br />
<br />
The software is the result of a complete redesign of CARAT, the research code at the [http://www.st.bv.tum.de Chair of Structural Analysis, Prof. Dr. K.-U. Bletzinger, TU Muenchen].<br />
<br />
== Standard FE Analyses ==<br />
<br />
The kernel of Carat++ is a general finite element solver. Details can be found [[Users:General FEM Analysis|here]]. It offers the following analyses:<br />
<br />
* Static (linear/nonlinear)<br />
* Dynamic (linear/nonlinear)<br />
** Explicit: central difference<br />
** Implicit: Newmark-β, Generalized-α<br />
* Eigenfrequency<br />
* Linear Buckling<br />
* Contact (Work in Progress)<br />
* Interface for coupled analyses like [[Users:FSI|fluid-structure interaction (FSI)]]<br />
<br />
<br />
== Isogeometric Analyses ==<br />
<br />
The kernel of Carat++ is also a general finite element solver for isogeometric analysis (IGA). Details can be found [[Users:General FEM Analysis|here]]. It offers the following analyses:<br />
<br />
* Static (linear/nonlinear)<br />
* Form Finding<br />
* Eigenfrequency<br />
<br />
== Structural Optimization ==<br />
<br />
Carat++ comprises a general-purpose optimization toolbox. The main application field is FEM-based shape optimization. <br />
Detailed information about the optimization toolbox and its features can be found [[Users:Structural_Optimization|here]].<br />
<br />
{| <br />
| [[File:Opt_bulkhead_des_upd.png|frame|shape optimization of a pressure bulkhead]]<br />
| [[File:Opt_hutablage_opt_res.png|frame|Eigenfrequency optimization of a car rear shelf]]<br />
|}<br />
<br />
<br />
== Form Finding and Cutting Pattern Generation ==<br />
<br />
Carat++ can perform numerical form finding as well as cutting pattern generation. Detailed information can be found in separate chapters [[Users:Form Finding|here]].<br />
<br />
{| <br />
|[[File:Fofi_example_eyecable.png|frame|left|Formfinding of a prestressed membrane with an eye cable.]]<br />
|}<br />
<br />
<br />
== TODO ==<br />
Three main features are:<br />
<br />
{| <br />
| <br />
* Carat++ is '''platform independent'''<br />
| [[File:Platform_independence.png|200px|center|Carat++ is platform independent]]<br />
|-<br />
| <br />
* Carat++ is '''suitable for large problems'''<br />
: (due to massively parallel programming)<br />
| [[File:Parallel_programming.png|200px|center|Suitable for large problems]]<br />
|-<br />
|<br />
* Carat++ is '''modular and thus easily extensible'''<br />
: (due to object-oriented programming)<br />
| [[File:Modularity_lego.png|100px|center|Modular and thus easy extensible]]<br />
|}<br />
<br />
[[File:Domain_decomp.png|200px|frame|left|Domain decomposition for parallel computing]]</div>Bauerhttp://carat.st.bv.tum.de/caratuserswiki/index.php/Users:HowToUseCarat/InstallationWindowsUsers:HowToUseCarat/InstallationWindows2018-05-30T14:19:59Z<p>Bauer: /* Get the source code */</p>
<hr />
<div>This page shows how Carat++ can be compiled under a Windows environment.<br />
* Windows 10 64bit<br />
* Microsoft Visual Studio 2015<br />
* TODO git/svn<br />
* CMake 3.8.0<br />
* Boost 1.63.0<br />
* MKL (Intel MKL 2017)<br />
<br />
== Windows Version ==<br />
<br />
In this installation guide Windows 10 64bit is used. <br />
<br />
Carat++ installation was tested also under the following Windows versions:<br />
* Windows 7 64bit<br />
* TODO please add more if you tested it there<br />
<br />
== IDE == <br />
<br />
The IDE of choice is Microsoft Visual Studio 2015 Community. Furthermore, the setup with Microsoft Visual Studio 2017 Community is similar.<br />
<br />
* Download it from https://www.microsoft.com/de-DE/download/details.aspx?id=48146<br />
<br />
* In Visual Studio 2015, Visual C++ is not installed by default. When installing, be sure to choose Custom installation and then choose the C++ components you require.<br />
<br />
* If Visual Studio 2015 is already installed, choose File | New | Project | C++ and you will be prompted to install the necessary components.<br />
<br />
//TODO Screenshots<br />
<br />
Settings for Visual Studio:<br />
* Text-editor -> C/C++ -> Tabstopps:<br />
** Indent: Intelligent<br />
** Tabstopp size: 2<br />
** Indent size: 2<br />
** Insert spaces<br />
<br />
== Git ==<br />
<br />
Git is used as version control system. It is needed to download the Carat++ source code.<br />
<br />
TODO<br />
<br />
== Get the source code ==<br />
<br />
* Navigate to the folder where you want to have the source code.<br />
* Right click -> Git Clone...<br />
* Enter the URL: https://gitlab.lrz.de/chair_of_structural_analysis/carat.git <br />
* Click OK. <br />
* Enter your trac-username and -password.<br />
<br />
Note that the original carat version with documentation is available under 129.187.141.105:/repos/carat.git as read_only.<br />
<br />
<gallery><br />
File:git_clone.png|Git Clone<br />
File:git_clone_url.png|URL <br />
</gallery><br />
<br />
== Create directory for build and libraries ==<br />
<br />
In "C:\carat\" create the empty directories "libs" and "build".<br />
<br />
== CMake == <br />
Install the latest CMake version<br />
<br />
== Boost ==<br />
<br />
Get the boost library version 1.63.0 from https://boost.org.<br />
Download and unpack it. <br />
Copy the unpacked folder with the version number into the "carat/libs" directory.<br />
<br />
In order to use the Boost logging, it needs to be compiled:<br />
<br />
* Open the Windwos command prompt.<br />
* Navigate to the "carat/libs/boost_1_63_0 directory.<br />
* Compile boost with the following lines in the command prompt.<br />
<br />
<pre><br />
bootstrap<br />
<br />
b2 link=shared address-model=64 runtime-link=shared --with-atomic --with-chrono --with-date_time --with-filesystem --with-log --with-system --with-thread<br />
<br />
b2 link=static address-model=64 runtime-link=static --with-atomic --with-chrono --with-date_time --with-filesystem --with-log --with-system --with-thread<br />
</pre><br />
If there is an error ''command "cl" missing'', refer to the IDE section above.<br />
<br />
* Now add the following path to the compiled boost libraries to your environmental variable "Path":<br />
<br />
<pre><br />
C:\carat\libs\boost_1_63_0\stage\lib\<br />
</pre><br />
<br />
== MKL ==<br />
<br />
Intel MKL is a equation solving library, that is strongly recommended to use. <br />
<br />
* Install the Intel mkl package located at "\\DC01\F_Users\TEMP\software\intel_suite\MKL_2017_standalone\windows" with default settings.<br />
* Now add the following path to the compiled boost libraries to your environmental variable "Path":<br />
<br />
<pre><br />
C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2017\windows\redist\intel64\mkl\<br />
</pre><br />
<br />
== RapidJSON ==<br />
<br />
RapidJSON is a JSON parser and generator for C++. It is used to read a Carat Inputfile in JSON-format. This library is optional.<br />
<br />
* Copy the library "rapidjson-master" from "\\DC01\F_Users\TEMP\software\Carat_libs" to your carat libraries. <br />
<!-- * Set the respective path in "CARAT_ROOT\src\cmake_personal_input.dat". --><br />
<!-- * Check USE_WITH_JSON in the CMAKE file in order to include it in your project. By default it is not part of the project. --><br />
<br />
<br />
== Compile Carat ==<br />
<br />
=== User Settings === <br />
<br />
First of all it is necessary to set some paths depending on where you stored the carat source and libs.<br />
<br />
Navigate to the Carat++ source directory and make a copy of the "cmake_personal_input.template" to "cmake_personal_input.dat".<br />
<br />
Do not modify the "cmake_personal_input.template"!<br />
<br />
In the "cmake_personal_input.dat" file you find the following part with commented lines where you have to set your user defined paths:<br />
<pre><br />
#==============================<br />
# set directory paths<br />
#==============================<br />
<br />
# BASIC INSTALLATION<br />
<br />
#set(CARAT_ROOT "C:/carat")<br />
#set(LIB_BOOST_INCLUDE_DIR "C:/carat/libs/boost_1_55_0")<br />
#set(LIB_BOOST_DIR "C:/carat/libs/boost_1_55_0/boost")<br />
#set(LIB_MKL_DIR "C:/Program Files (x86)/Intel/Composer XE 2011 SP1/mkl")<br />
</pre><br />
<br />
With the paths used in this installation guide the block should look like (don't forget to remove the #):<br />
<pre><br />
#==============================<br />
# set directories paths<br />
#==============================<br />
<br />
# BASIC INSTALLATION<br />
<br />
set(CARAT_ROOT "~/software/carat")<br />
set(LIB_BOOST_INCLUDE_DIR "C:/carat/libs/boost_1_63_0")<br />
set(LIB_BOOST_DIR "C:/carat/libs/boost_1_63_0/stage/lib")<br />
set(LIB_MKL_DIR "C:/Program Files (x86)/IntelSWTools/compilers_and_libraries_2017/windows/mkl")<br />
</pre><br />
<br />
Make sure to use a "/" as a separator in the paths.<br />
<br />
=== Create the project with CMake===<br />
<br />
TODO add pictures (already created)<br />
<br />
* Open CMake<br />
* Set the carat source path: "C:/carat/src"<br />
* Set the carat build directory: "C:/carat/build" (create this folder if it does not exist)<br />
* Click "Configure"<br />
* Select Visual Studio 2015<br />
* Check the desired Flags (for the basic setup you can use the default values as you see in the sreenshot below)<br />
* Click "Generate<br />
<br />
=== Open the Carat++ project with Visual Studio 2015 ===<br />
<br />
Now you can open the Carat++ Project with Visual Studio 2015 and edit/compile it.<br />
<br />
* Open Visual Studio 2015<br />
* Click "Open Project..." and select the "C:/Carat/build/Carat++.sln" project file.<br />
* Right-click the "carat" module in the project explorer on the right and "Set StartUp Projects".<br />
<br />
Now you are ready to compile Carat++!<br />
<br />
=== Compile ===<br />
<br />
<br />
<br />
== Benchmarks == <br />
<br />
After each build or at least before a git commit the benchmarks have to be tested.<br />
<br />
* Compile "carat_benchmark"<br />
* RUN_TEST<br />
<br />
You should add a benchmark for every development. Therefore you can add two types of benchmarks in the folder example/benchmark_examples/:<br />
<br />
* cbm_myfile1.dat: This benchmark is executed in every RUN_TESTS. The runtime should be short ( < 1s)<br />
* xcbm_myfile1.dat: This benchmark is only executed in RUN_TESTS, if the flag EXTENSIVE_BENCHMARKS.<br />
<br />
In addition, you have to provide a reference file with the correct solution in a file called ref_myfile1.dat. <br />
<br />
<pre><br />
Result "Displacement" "Load Case" 0 Vector OnNodes<br />
Values<br />
79 -1.1022632867e+000 -9.8466095193e-001 -1.3132351571e-001<br />
83 -1.1400399584e+000 -1.1658915870e+000 -9.1812530586e-002<br />
</pre></div>Bauerhttp://carat.st.bv.tum.de/caratuserswiki/index.php/Users:PrePostProcessing/RhinoPost/Installation_DeveloperUsers:PrePostProcessing/RhinoPost/Installation Developer2018-03-08T13:26:51Z<p>Bauer: </p>
<hr />
<div>In order to set up the developer's environment one need the following:<br />
* Rhino 5 <br />
** Rhino SDK5.0<br />
** Microsoft Visual Studio 2010<br />
** QT Creator 4<br />
** QT Library 4<br />
** boost library (boost_1_55 works, boost_1_63 doesn't work, in between unknown)<br />
<br />
* Rhino 6 <br />
** Rhino SDK6.0<br />
** Microsoft Visual Studio 2017<br />
** QT Creator 5, if you want to change the GUI<br />
** QT Library 5 for MSVC2017_64<br />
** boost library (boost_1_66 works)<br />
<br />
= Rhino 5 =<br />
<br />
== Rhino SDK 5.0 ==<br />
You need to download and install the actual [http://www.rhino3d.com/download/rhino-sdk/5.0/release Rhinoceros SDK ].<br />
Version 5.0 does only support MS Visual Studio 2010.<br />
<br />
== QT ==<br />
<br />
* The actual set-up works with QT 4 (Date 19.01.2017). The respective exe-file for MS Visual Studio 2010 (qt-win-opensource-4.8.4-vs2010.exe) can be download on [https://download.qt.io/archive/qt/4.8/4.8.4/].<br />
<br />
* Copy the library qt/vs2010 into your libraries folder.<br />
<br />
== CMake ==<br />
<br />
[[File:CMake_RhinoInterface.PNG|thumb|600px|CMake settings]]<br />
<br />
* The following paths have to be set in cmake_personal_input.dat: <br />
<br />
<pre><br />
set(CARAT_ROOT "C:/carat")<br />
set(LIB_BOOST_INCLUDE_DIR "C:/carat/libraries/boost/actual_boost")<br />
set(LIB_RHINO5 "C:/Program Files (x86)/Rhino 5.0 x64 SDK")<br />
set(QTDIR64 "C:/carat/libraries/qt/vs2010/4.8.4-dyn-64bit")<br />
</pre><br />
<br />
* Choose the respective carat/src folder for the source code<br />
<br />
* Choose or create a respective build folder<br />
<br />
* Delete the cache, if you are not using Visual Studio 10 2010 Win64 as default native compilers and press "Configure".<br />
<br />
* Choose the packages by unchecking everything beside BUILD_RHINO_PLUG_IN_SDK5.<br />
<br />
* Press "Configure"<br />
<br />
* Press "Generate"<br />
<br />
== MS Visual Studio ==<br />
<br />
* Copy QtCore4.dll, QtCored4.dll, QtGui4.dll, QtGuid4.dll in the Debug and Release folder.<br />
<br />
* Open the project and choose interface_rhino as startproject.<br />
<br />
* Open the properties of the project --> configuration properties --> Debug<br />
** Debug configuration: Command: C:\Program Files (x86)\Rhino 5.0 x64 SDK\Bin\x64\Rhino5x64_d.exe<br />
** Release configuration: Command: C:\Program Files\Rhinoceros 5.0 (64-bit)\System\Rhino.exe<br />
<br />
= Rhino 6 =<br />
<br />
== Rhino SDK 6.0 ==<br />
You need to download and install the actual [http://www.rhino3d.com/download/rhino-sdk/6.0/release Rhinoceros SDK ].<br />
Version 6.0 does only support MS Visual Studio 2017.<br />
<br />
== QT ==<br />
<br />
* The actual set-up works with QT 5 (Date 08.03.2017). <br />
<br />
== CMake ==<br />
<br />
* The following paths have to be set in cmake_personal_input.dat: <br />
<br />
<pre><br />
set(CARAT_ROOT "C:/carat")<br />
set(LIB_BOOST_INCLUDE_DIR "C:/carat/libraries/boost/actual_boost")<br />
set(LIB_RHINO6 "C:/Program Files/Rhino 6.0 SDK")<br />
set(QTDIR64 "C:/Qt") or respective path<br />
</pre><br />
<br />
* Choose the respective carat/src folder for the source code<br />
<br />
* Choose or create a respective build folder<br />
<br />
* Delete the cache, if you are not using Visual Studio 15 2017 Win64 as default native compilers and press "Configure".<br />
<br />
* Choose the packages by unchecking everything beside BUILD_RHINO_PLUG_IN_SDK6 and USE_WITH_JSON.<br />
<br />
* Press "Configure"<br />
<br />
* Press "Generate"<br />
<br />
== MS Visual Studio ==<br />
<br />
* Copy Qt5Core.dll, Qt5Cored.dll, Qt5Gui.dll, Qt5Guid.dll, Qt5Widgets.dll, Qt5Widgetsd.dll in the Debug and Release folder.<br />
<br />
* Create a folder "platforms" in the Debug and Release folder and copy qwindows.dll and qwindowsd.dll from ../QT/5.10.0/msvc2017_64/plugins/platforms. <br />
<br />
* Open the project and choose interface_rhino as startproject.<br />
<br />
* Open the properties of the project --> configuration properties --> Debug<br />
** Debug configuration: Command: C:\Program Files (x86)\Rhino 5.0 x64 SDK\Bin\x64\Rhino5x64_d.exe<br />
** Release configuration: Command: C:\Program Files\Rhinoceros 5.0 (64-bit)\System\Rhino.exe<br />
<br />
* Open the properties of the project --> configuration properties --> C/C++ --> Code generation <br />
** Debug configuration: Set Runtime Check to Standard for every project<br />
<br />
* Open the Property Manager and add Rhino.Cpp.PlugIn.props to Debug|x64 and Release|x64 of interface_rhino (cf. [http://developer.rhino3d.com/guides/cpp/migrate-your-plugin-manual-windows/ Add property sheets])<br />
<br />
<!--== References ==<br />
<br />
<references/> --></div>Bauerhttp://carat.st.bv.tum.de/caratuserswiki/index.php/Users:PrePostProcessing/RhinoPost/Installation_DeveloperUsers:PrePostProcessing/RhinoPost/Installation Developer2018-03-08T13:25:13Z<p>Bauer: </p>
<hr />
<div>In order to set up the developer's environment one need the following:<br />
* Rhino 5 <br />
** Rhino SDK5.0<br />
** Microsoft Visual Studio 2010<br />
** QT Creator 4<br />
** QT Library 4<br />
** boost library (boost_1_55 works, boost_1_63 doesn't work, in between unknown)<br />
<br />
* Rhino 6 <br />
** Rhino SDK6.0<br />
** Microsoft Visual Studio 2017<br />
** QT Creator 5, if you want to change the GUI<br />
** QT Library 5<br />
** boost library (boost_1_66 works)<br />
<br />
= Rhino 5 =<br />
<br />
== Rhino SDK 5.0 ==<br />
You need to download and install the actual [http://www.rhino3d.com/download/rhino-sdk/5.0/release Rhinoceros SDK ].<br />
Version 5.0 does only support MS Visual Studio 2010.<br />
<br />
== QT ==<br />
<br />
* The actual set-up works with QT 4 (Date 19.01.2017). The respective exe-file for MS Visual Studio 2010 (qt-win-opensource-4.8.4-vs2010.exe) can be download on [https://download.qt.io/archive/qt/4.8/4.8.4/].<br />
<br />
* Copy the library qt/vs2010 into your libraries folder.<br />
<br />
== CMake ==<br />
<br />
[[File:CMake_RhinoInterface.PNG|thumb|600px|CMake settings]]<br />
<br />
* The following paths have to be set in cmake_personal_input.dat: <br />
<br />
<pre><br />
set(CARAT_ROOT "C:/carat")<br />
set(LIB_BOOST_INCLUDE_DIR "C:/carat/libraries/boost/actual_boost")<br />
set(LIB_RHINO5 "C:/Program Files (x86)/Rhino 5.0 x64 SDK")<br />
set(QTDIR64 "C:/carat/libraries/qt/vs2010/4.8.4-dyn-64bit")<br />
</pre><br />
<br />
* Choose the respective carat/src folder for the source code<br />
<br />
* Choose or create a respective build folder<br />
<br />
* Delete the cache, if you are not using Visual Studio 10 2010 Win64 as default native compilers and press "Configure".<br />
<br />
* Choose the packages by unchecking everything beside BUILD_RHINO_PLUG_IN_SDK5.<br />
<br />
* Press "Configure"<br />
<br />
* Press "Generate"<br />
<br />
== MS Visual Studio ==<br />
<br />
* Copy QtCore4.dll, QtCored4.dll, QtGui4.dll, QtGuid4.dll in the Debug and Release folder.<br />
<br />
* Open the project and choose interface_rhino as startproject.<br />
<br />
* Open the properties of the project --> configuration properties --> Debug<br />
** Debug configuration: Command: C:\Program Files (x86)\Rhino 5.0 x64 SDK\Bin\x64\Rhino5x64_d.exe<br />
** Release configuration: Command: C:\Program Files\Rhinoceros 5.0 (64-bit)\System\Rhino.exe<br />
<br />
= Rhino 6 =<br />
<br />
== Rhino SDK 6.0 ==<br />
You need to download and install the actual [http://www.rhino3d.com/download/rhino-sdk/6.0/release Rhinoceros SDK ].<br />
Version 6.0 does only support MS Visual Studio 2017.<br />
<br />
== QT ==<br />
<br />
* The actual set-up works with QT 5 (Date 08.03.2017). <br />
<br />
== CMake ==<br />
<br />
* The following paths have to be set in cmake_personal_input.dat: <br />
<br />
<pre><br />
set(CARAT_ROOT "C:/carat")<br />
set(LIB_BOOST_INCLUDE_DIR "C:/carat/libraries/boost/actual_boost")<br />
set(LIB_RHINO6 "C:/Program Files/Rhino 6.0 SDK")<br />
set(QTDIR64 "C:/Qt") or respective path<br />
</pre><br />
<br />
* Choose the respective carat/src folder for the source code<br />
<br />
* Choose or create a respective build folder<br />
<br />
* Delete the cache, if you are not using Visual Studio 15 2017 Win64 as default native compilers and press "Configure".<br />
<br />
* Choose the packages by unchecking everything beside BUILD_RHINO_PLUG_IN_SDK6 and USE_WITH_JSON.<br />
<br />
* Press "Configure"<br />
<br />
* Press "Generate"<br />
<br />
== MS Visual Studio ==<br />
<br />
* Copy Qt5Core.dll, Qt5Cored.dll, Qt5Gui.dll, Qt5Guid.dll, Qt5Widgets.dll, Qt5Widgetsd.dll in the Debug and Release folder.<br />
<br />
* Create a folder "platforms" in the Debug and Release folder and copy qwindows.dll and qwindowsd.dll from ../QT/5.10.0/msvc2017_64/plugins/platforms. <br />
<br />
* Open the project and choose interface_rhino as startproject.<br />
<br />
* Open the properties of the project --> configuration properties --> Debug<br />
** Debug configuration: Command: C:\Program Files (x86)\Rhino 5.0 x64 SDK\Bin\x64\Rhino5x64_d.exe<br />
** Release configuration: Command: C:\Program Files\Rhinoceros 5.0 (64-bit)\System\Rhino.exe<br />
<br />
* Open the properties of the project --> configuration properties --> C/C++ --> Code generation <br />
** Debug configuration: Set Runtime Check to Standard for every project<br />
<br />
* Open the Property Manager and add Rhino.Cpp.PlugIn.props to Debug|x64 and Release|x64 of interface_rhino (cf. [http://developer.rhino3d.com/guides/cpp/migrate-your-plugin-manual-windows/ Add property sheets])<br />
<br />
<!--== References ==<br />
<br />
<references/> --></div>Bauerhttp://carat.st.bv.tum.de/caratuserswiki/index.php/Users:PrePostProcessing/RhinoPost/Installation_DeveloperUsers:PrePostProcessing/RhinoPost/Installation Developer2018-03-08T13:09:34Z<p>Bauer: /* Rhino SDK 5.0 */</p>
<hr />
<div>In order to set up the developer's environment one need the following:<br />
* Rhino SDK5.0<br />
* Microsoft Visual Studio 2010<br />
* QT Creator 4<br />
* QT Library<br />
* boost library (boost_1_55 works, boost_1_63 doesn't work, in between unknown)<br />
<br />
== Rhino SDK 5.0 ==<br />
You need to download and install the actual [http://www.rhino3d.com/download/rhino-sdk/5.0/release Rhinoceros SDK ].<br />
Version 5.0 does only support MS Visual Studio 2010.<br />
<br />
== QT ==<br />
<br />
* The actual set-up works with QT 4 (Date 19.01.2017). The respective exe-file for MS Visual Studio 2010 (qt-win-opensource-4.8.4-vs2010.exe) can be download on [https://download.qt.io/archive/qt/4.8/4.8.4/].<br />
<br />
* Copy the library qt/vs2010 into your libraries folder.<br />
<br />
== CMake ==<br />
<br />
[[File:CMake_RhinoInterface.PNG|thumb|600px|CMake settings]]<br />
<br />
* The following paths have to be set in cmake_personal_input.dat: <br />
<br />
<pre><br />
set(CARAT_ROOT "C:/carat")<br />
set(LIB_BOOST_INCLUDE_DIR "C:/carat/libraries/boost/actual_boost")<br />
set(LIB_RHINO5 "C:/Program Files (x86)/Rhino 5.0 x64 SDK")<br />
set(QTDIR64 "C:/carat/libraries/qt/vs2010/4.8.4-dyn-64bit")<br />
</pre><br />
<br />
* Choose the respective carat/src folder for the source code<br />
<br />
* Choose or create a respective build folder<br />
<br />
* Delete the cache, if you are not using Visual Studio 10 2010 Win64 as default native compilers and press "Configure".<br />
<br />
* Choose the packages by unchecking everything beside BUILD_RHINO_PLUG_IN_SDK5.<br />
<br />
* Press "Configure"<br />
<br />
* Press "Generate"<br />
<br />
== MS Visual Studio ==<br />
<br />
* Copy QtCore4.dll, QtCored4.dll, QtGui4.dll, QtGuid4.dll in the Debug and Release folder.<br />
<br />
* Open the project and choose interface_rhino as startproject.<br />
<br />
* Open the properties of the project --> configuration properties --> Debug<br />
** Debug configuration: Command: C:\Program Files (x86)\Rhino 5.0 x64 SDK\Bin\x64\Rhino5x64_d.exe<br />
** Release configuration: Command: C:\Program Files\Rhinoceros 5.0 (64-bit)\System\Rhino.exe<br />
<br />
<!--== References ==<br />
<br />
<references/> --></div>Bauerhttp://carat.st.bv.tum.de/caratuserswiki/index.php/Users:PrePostProcessing/RhinoTeDAUsers:PrePostProcessing/RhinoTeDA2018-01-17T13:42:58Z<p>Bauer: </p>
<hr />
<div>[[Category: Users:PrePostProcessing]]<br />
<br />
TeDA (Tool for enhanced Design by Analysis) is a plug-in in Rhinoceros<ref name="Rhino_Webpage">http://www.rhino3d.com</ref> for preprocessing of Carat++. It is developed with C#. It can create input files for Carat and Kratos.<br />
<br />
[[File:TeDA_Panel1.PNG|thumb|right|400px|TeDA Plug-In]]<br />
<br />
The plug-in is able to assign:<br />
* elements to surfaces and curves (Currently, Membrane_NURBS, Shell_NURBS_KL, BRep_Edge_Cord. Beta: Cable_NURBS, Beam_3D_NURBS, BRep_Edge_Beam) <br />
* refinement for surfaces and curves<br />
* supports<br />
* loads<br />
* custom material<br />
* custom analyses (FORMFINDING, STA_GEO_NONLIN)<br />
* custom output<br />
<br />
Furthermore, there is a visualization of the assigned properties.<br />
<br />
== Installation ==<br />
<br />
=== User ===<br />
<br />
The Plug-In TeDA is easily installed:<br />
<br />
* Open Rhinoceros<br />
* Open Rhino-Properties by clicking on File -> Properties...<br />
* Click on Plug-Ins in the left hand column<br />
* Click on Install<br />
* Choose ''TeDASharp.rhp'' in your folder<br />
* Click 'OK' in the Rhino-Properties<br />
<br />
In order to update TeDA, only the ''TeDASharp.rhp'' has to be replaced by a new one in your folder.<br />
<br />
=== Developer ===<br />
<br />
The project file is configured for Microsoft Visual Studio 2015 <ref name="MS_VS_15">https://www.microsoft.com/de-DE/download/details.aspx?id=48146</ref><br />
<br />
* Get access to the repository on GitLab<br />
* Install Grasshopper<ref name="Grasshopper_Download">http://www.grasshopper3d.com/page/download-1</ref> and open it once in Rhinoceros by writing Grasshopper in the command line of Rhino<br />
* Set the references in the project file. (Maybe you have to remove the old ones and add them again)<br />
** RhinoCommon: C:\Program Files\Rhinoceros 5.0 (64-bit)\System\RhinoCommon.dll<br />
** Grasshopper: C:\Users\UserX\AppData\Roaming\McNeel\Rhinoceros\5.0\Plug-ins\Grasshopper\x.x.xx.x\Grasshopper.dll<br />
<br />
== User's Guide ==<br />
<br />
The plug-in GUI can be started with ''TeDA_OpenPanel''.<br />
<br />
== References ==<br />
<br />
<references/></div>Bauerhttp://carat.st.bv.tum.de/caratuserswiki/index.php/File:TeDA_Panel1.PNGFile:TeDA Panel1.PNG2018-01-17T13:42:33Z<p>Bauer: </p>
<hr />
<div></div>Bauerhttp://carat.st.bv.tum.de/caratuserswiki/index.php/Users:General_FEM_Analysis/BCs_ReferenceUsers:General FEM Analysis/BCs Reference2017-12-14T14:00:40Z<p>Bauer: /* Load case */</p>
<hr />
<div>[[Category: Users:General FEM Analysis]]<br />
<br />
__FORCETOC__ <br />
<br />
<br />
== Load case ==<br />
A load case object collects all boundary conditions, Dirichlet and Neumann constraints, which define the current problem. A load case block is linked directly into an analysis object. Each Neumann block is separately weighted by a factor FAC.<br />
<br />
The example below shows a load case including a nodal load block, one element load, and one set of Dirichlet conditions. Activated Dirichlet sets can also (partly) be deactivated.<br />
<br />
<pre><br />
LD-COM 1<br />
TYPE = LD-NODE 1 FAC=1.0<br />
TYPE = LD-ELEM 1 FAC=1.0<br />
TYPE = BC-DIRICHLET 1<br />
TYPE = DEACT-BC-DIRICHLET 2 !only for special applications needed<br />
</pre><br />
<br />
Note that DesignBoundaries for supports do not have to be added to the load case.<br />
<br />
== Dirichlet Boundary Conditions ==<br />
<br />
Here you can find the [[Users:General FEM Analysis/BCs Reference/Dirichlet|Reference Guide for Dirichlet BCs]] based node sets.<br />
<br />
Here you can find the [[Users:Geometry Generation/Design_Supports|Reference Guide for Dirichlet BCs for design elements]].<br />
<br />
<br />
<br />
== Neumann Boundary Conditions ==<br />
<br />
Here you can find the [[Users:General FEM Analysis/BCs Reference/Neumann|Reference Guide for Neumann BCs]] based node sets.<br />
<br />
Here you can find the [[Users:Geometry Generation/Design_Loads|Reference Guide for Neumann BCs for design elements]].</div>Bauerhttp://carat.st.bv.tum.de/caratuserswiki/index.php/Users:Geometry_Generation/Design_SupportsUsers:Geometry Generation/Design Supports2017-12-14T13:56:07Z<p>Bauer: </p>
<hr />
<div>Dirichlet boundary conditions can be applied to design elements with respect to their parametric coordinates.<br />
<br />
=== Parameter Description ===<br />
<br />
{| border="1" cellpadding="3" cellspacing="0"<br />
|colspan="3" style="background:#efefef;"| Parameters LOC_COORD<br />
|-<br />
!Parameter <br />
!Description<br />
!Defined for<br />
|-<br />
!u,v,w = ''int''{0;1}<br />
|only valid for = 0 or = 1. 0 denotes the beginning of the knot vector and 1 the end. If nothing is defined, the boundary conditions are applied to the whole patch.<br />
|Designelements with respective dimensions.<br />
|-<br />
!DE-BREP ''int''<br />
|applies the boundary conditions to the BRepElement.<br />
|DesignBRepelement.<br />
|-<br />
|colspan="3" style="background:#efefef;"| Parameters BC<br />
|-<br />
!Parameter <br />
!Description<br />
!Defined for<br />
|-<br />
!DISP_X <br /> DISP_Y <br /> DISP_Z <br /> DISP_ALL<br />
|blocks the displacement of the corresponding nodes in the respective directions <br />
|every element with respective degrees of freedom at the nodes<br />
|-<br />
!DISP_X_NONZERO <br /> DISP_Y_NONZERO <br /> DISP_Z_NONZERO <br />
|sets the displacement of the corresponding nodes in the respective directions to a value defined by a value (syntax: DISP_X_NONZERO = 0.25, ...) or a NURBS_REF in the Designelement definition. Direct initialization by a value overwrites the other.<br />
|every element with respective degrees of freedom at the nodes<br />
|-<br />
!DISP_T1 <br /> DISP_T2 <br /> DISP_T3<br />
|blocks the displacement in the respective directions. Is applied as weak boundary condition and summoned over all gauss points. Directions correspond to the base vectors of the element formulation. <br />
|ElementNURBS_BRep_EdgeCoupling with ElementSurface_NURBS<br />
|-<br />
!DISP_X_COUPLING <br /> DISP_Y_COUPLING <br /> DISP_Z_COUPLING<br />
|coupling of the dofs of the corresponding nodes in respective direction. Usable for clamping without blocking the displacements.<br />
|every element with respective degrees of freedom at the nodes<br />
|-<br />
!CLAMPED<br />
|clampes by blocking the displacements of the first two control points. It is only applicable for open knot vectors.<br />
|every NURBS based element<br />
|-<br />
!CLAMPED_X <br /> CLAMPED_Y <br /> CLAMPED_Z<br />
|clampes by blocking the displacements in the defined directions of the first two control points. Note that, X, Y, Z does not denote the rotation axis.<br />
|every NURBS based element<br />
|-<br />
!CLAMPED_TOR<br />
|blocks the rotational dof rot_tan.<br />
|ElementBeam_3D_NURBS_KLRod,ElementNURBS_BRep_Beam<br />
|-<br />
!CLAMPED_TOR_NONZERO<br />
|sets the rotational dof rot_tan to defined value ( by value or NURBS_REF).<br />
|ElementBeam_3D_NURBS_KLRod<br />
|-<br />
!ROT_X <br /> ROT_Y <br /> ROT_Z <br /> ROT_ALL<br />
|blocks the rotation of the corresponding nodes around the respective axis.<br />
|every element with respective degrees of freedom at the nodes<br />
|-<br />
!ROT_T1 <br /> ROT_T2 <br /> ROT_T3<br />
|blocks the rotation around the respective base vectors of the element formulation. Is applied as weak boundary condition and summoned over all gauss points. <br />
|ElementNURBS_BRep_EdgeCoupling with ElementSurface_NURBS<br />
|-<br />
!DIR_DIFF_SHELL8_X <br /> DIR_DIFF_SHELL8_Y <br /> DIR_DIFF_SHELL8_Z<br />
|<br />
|<br />
|-<br />
|colspan="3" style="background:#efefef;"| Parameters DIRECTION<br />
|-<br />
!Parameter <br />
!Description<br />
!Defined for<br />
|-<br />
!DIRECTION_1 ''= float, float, float'' <br /> DIRECTION_2 ''= float, float, float''<br />
|This condition allows to limit translatoric movements of a point within a plane or a line. To this purpose a plane is defined by the parameter DIRECTION_1 naming the plane normal. If a second plane is defined by specifying DIRECTION_2 the point is only allowed to move an the intersection line of the two planes. <br />
|DISP_X, DISP_Y, DISP_Z<br />
|-<br />
|colspan="3" style="background:#efefef;"| Parameters CURVE<br />
|-<br />
!Parameter <br />
!Description<br />
!Defined for<br />
|-<br />
!LD-CURVE ''int''<br />
|initial displacements are scaled by the global load factor * local load factor of the defined load curve.<br />
|DISP_X_NONZERO, DISP_Y_NONZERO, DISP_Z_NONZERO, DISP_X_NONZERO <br /> CLAMPED_TOR_NONZERO <br /> CLAMPED_X_NONZERO, CLAMPED_Y_NONZERO, CLAMPED_Z_NONZERO<br />
|-<br />
|}<br />
<br />
=== Example of a Complete Input Block ===<br />
<br />
<pre><br />
!===================================================================<br />
! ID DE-EL LOC COORD BC<br />
DE-SUP 1 1 u=0 DISP_X, DISP_Y, DISP_Z<br />
DE-SUP 2 1 u=0 v=1 w=1 DISP_X, DISP_Y, DISP_Z<br />
DE-SUP 3 1 DISP_X, DISP_Y, DISP_Z <br />
DE-SUP 4 1 DE-BREP 1 DISP_T1, DISP_T2, DISP_T3<br />
DE-SUP 5 1 u=0 DISP_X_NONZERO = 0.25 LD-CURVE 2 <br />
DE-SUP 6 1 u=0 DISP_Y_NONZERO, DISP_Z_NONZERO !works only if DE-EL has a Reference-Patch (NURBS_REF) <br />
DE-SUP 7 1 u=0 DISP_X, DISP_Y, DISP_Z DIRECTION_1 = -1,0,1 DIRECTION_2 = 0,1,-1 !nodes can only move in direction of the vector [1,1,1] <br />
DE-SUP 8 1 DE-BREP 1 DISP_Y_NONZERO = 0.33 LD-CURVE 2 <br />
</pre><br />
<br />
<!--<br />
!Further boundary types. Not necessarily defined for element type<br />
!DISP_X_COUPLING, DISP_Y_COUPLING, DISP_Z_COUPLING<br />
!DISP_X_NONZERO, DISP_Y_NONZERO, DISP_Z_NONZERO<br />
!DISP_ALL<br />
!CLAMPED_TOR_NONZERO<br />
!CLAMPED_X, CLAMPED_Y, CLAMPED_Z ! blocks the displacement in x, y, resp. z-direction<br />
!CLAMPED_X_NONZERO, CLAMPED_Y_NONZERO, CLAMPED_Z_NONZERO ! applies a defined initial displacement in x, y, resp. z-direction<br />
!ROT_X, ROT_Y, ROT_Z<br />
!ROT_ALL<br />
!ROT_T1, ROT_T2, ROT_T3<br />
!DIR_DIFF_SHELL8_X, DIR_DIFF_SHELL8_Y, DIR_DIFF_SHELL8_Z<br />
--><br />
In order to activate boundary conditions which are not related to DesignBRepelements, they have to be added to the respective load combination.<br />
<pre><br />
LD-COM 1<br />
TYPE=BC-DIRICHLET 1<br />
TYPE=BC-DIRICHLET 2 <br />
TYPE=BC-DIRICHLET 3 <br />
TYPE=BC-DIRICHLET 5 <br />
</pre><br />
<br />
In order to use boundary conditions for a set of nodes beside a specific one, a functionality for deactivation is added to the load combination. This can be used to in the design context for e.g. blocking the displacements of a whole design element but unleash the first node (u=0) from this restrictions. Note that this only work for boundary conditions on nodes and not for BRep boundary conditions.<br />
<br />
<pre><br />
LD-COM 1<br />
TYPE=BC-DIRICHLET 3<br />
TYPE=DEACT-BC-DIRICHLET 1 <br />
</pre><br />
<br />
<br />
Automatic coupling of coincidenting control points of different design elements is received by<br />
<br />
<pre><br />
!===================================================================<br />
! ID EL1(Master) EL2 (Slave)<br />
DE-JOINT ALL_COOR<br />
!===================================================================<br />
</pre></div>Bauerhttp://carat.st.bv.tum.de/caratuserswiki/index.php/Users:PrePostProcessingUsers:PrePostProcessing2017-11-08T15:18:14Z<p>Bauer: </p>
<hr />
<div>[[Category: Users:PrePostProcessing]]<br />
<br />
Several plug-ins have been developped for pre- and postprocessing of the ''Carat++''-Analysis.<br />
<br />
* GiD<br />
** [[Users:PrePostProcessing/GiDPre|GiD Preprocessing]]<br />
** [[Users:PrePostProcessing/GiDPost|GiD Postprocessing]]<br />
* Rhinoceros<br />
** [[Users:PrePostProcessing/RhinoTeDA|TeDA Preprocessing]]<br />
** [[Users:PrePostProcessing/RhinoPre|RhinoPre]]<br />
** [[Users:PrePostProcessing/RhinoPost|RhinoPost]]<br />
* Siemens NX<br />
** [[Users:PrePostProcessing/SiemensNXPlugIn|Plug-In Development]]<br />
** [[Users:PrePostProcessing/SiemensNXPlugIn|NX Load Points]]<br />
* Abaqus<br />
** [[Users:PrePostProcessing/AbaqusInstallation|Installation]]<br />
** [[Users:PrePostProcessing/AbaqusPlugIns|Plug-In Development]]<br />
* HTML<br />
** Load Points Postprocessing</div>Bauerhttp://carat.st.bv.tum.de/caratuserswiki/index.php/Users:General_FEM_Analysis/Elements_Reference/NURBS_BRep_Edge_cordUsers:General FEM Analysis/Elements Reference/NURBS BRep Edge cord2017-10-23T07:46:30Z<p>Bauer: /* Element Loading */</p>
<hr />
<div>== General Description ==<br />
<br />
Coded and testing is in progress.<br />
<br />
=== Element Type ===<br />
<br />
* This element provides a geometrically nonlinear, isogeometric spatial cable.<br />
<br />
=== Degrees of Freedom ===<br />
<br />
The element uses the translatoric degrees of freedom (''Disp_X'', ''Disp_Y'', ''Disp_Z'') of the control points of the master element.<br />
<br />
=== Parameter Description ===<br />
<br />
{| border="1" cellpadding="3" cellspacing="0"<br />
|colspan="3" style="background:#efefef;"| Compulsory Parameters<br />
|-<br />
!Parameter<br />
!Values, Default(*)<br />
!Description<br />
|-<br />
!MAT<br />
|EL-MAT ''int''<br />
|Linking to a material input block<br />
|-<br />
!INT_TYPE_NURBS_BREP_CHORD<br />
|FULL, USER<br />
|Control of integration type. <br />
* FULL: p+1 Gauss points are used (p = polynomial degree of the NURBS patch) <br />
* USER: the optional Parameter GAUSS_U defines the number of Gauss points<br />
|-<br />
!CROSS SECTION <br />
|AREA = ''float''<br />
|area of the cross section<br />
|-<br />
!PRESTRESS<br />
|PRESTRESS = ''float''<br />
|prestress of the cable element<br />
|-<br />
|colspan="3" style="background:#efefef;"| Optional Parameters<br />
|-<br />
!Parameter<br />
!Values, Default(*)<br />
!Description<br />
|-<br />
!GAUSS_U<br />
|GAUSS_U = ''int''<br />
|Number of Gauss point per element. Must only to be defined when INT_TYPE_NURBS_BREP_CHORD = USER<br />
|-<br />
|}<br />
<br />
=== Example of a Complete Input Block ===<br />
<pre><br />
EL-PROP 1 : NURBS_BREP_CHORD <br />
MAT= EL-MAT 1<br />
AREA = 1<br />
PRESTRESS = 4000<br />
INT_TYPE_NURBS_BREP_CHORD = USER or FULL<br />
GAUSS_U = 4<br />
</pre><br />
<br />
== Element Loading ==<br />
<br />
As the NURBS_BRep_Edge_Cord element is embedded into a master element, it can carry all loads which can be assigned to the master element:<br />
<br />
== Benchmarks ==<br />
<br />
The main benchmark file in the ''Carat++''-repository is <br />
* '../examples/benchmark_examples/isogeometric/iga_formfinding_4point_with_trusses/cbm_4PointSailwTrusses.txt'.<br />
<br />
== References ==<br />
<br />
<references/></div>Bauerhttp://carat.st.bv.tum.de/caratuserswiki/index.php/Users:General_FEM_Analysis/Elements_Reference/NURBS_BRep_Edge_cordUsers:General FEM Analysis/Elements Reference/NURBS BRep Edge cord2017-10-23T07:44:26Z<p>Bauer: /* Degrees of Freedom */</p>
<hr />
<div>== General Description ==<br />
<br />
Coded and testing is in progress.<br />
<br />
=== Element Type ===<br />
<br />
* This element provides a geometrically nonlinear, isogeometric spatial cable.<br />
<br />
=== Degrees of Freedom ===<br />
<br />
The element uses the translatoric degrees of freedom (''Disp_X'', ''Disp_Y'', ''Disp_Z'') of the control points of the master element.<br />
<br />
=== Parameter Description ===<br />
<br />
{| border="1" cellpadding="3" cellspacing="0"<br />
|colspan="3" style="background:#efefef;"| Compulsory Parameters<br />
|-<br />
!Parameter<br />
!Values, Default(*)<br />
!Description<br />
|-<br />
!MAT<br />
|EL-MAT ''int''<br />
|Linking to a material input block<br />
|-<br />
!INT_TYPE_NURBS_BREP_CHORD<br />
|FULL, USER<br />
|Control of integration type. <br />
* FULL: p+1 Gauss points are used (p = polynomial degree of the NURBS patch) <br />
* USER: the optional Parameter GAUSS_U defines the number of Gauss points<br />
|-<br />
!CROSS SECTION <br />
|AREA = ''float''<br />
|area of the cross section<br />
|-<br />
!PRESTRESS<br />
|PRESTRESS = ''float''<br />
|prestress of the cable element<br />
|-<br />
|colspan="3" style="background:#efefef;"| Optional Parameters<br />
|-<br />
!Parameter<br />
!Values, Default(*)<br />
!Description<br />
|-<br />
!GAUSS_U<br />
|GAUSS_U = ''int''<br />
|Number of Gauss point per element. Must only to be defined when INT_TYPE_NURBS_BREP_CHORD = USER<br />
|-<br />
|}<br />
<br />
=== Example of a Complete Input Block ===<br />
<pre><br />
EL-PROP 1 : NURBS_BREP_CHORD <br />
MAT= EL-MAT 1<br />
AREA = 1<br />
PRESTRESS = 4000<br />
INT_TYPE_NURBS_BREP_CHORD = USER or FULL<br />
GAUSS_U = 4<br />
</pre><br />
<br />
== Element Loading ==<br />
<br />
The NURBS_BRep_Edge_Cord element is able to carry the following loads:<br />
* dead load<br />
* snow load<br />
* pressure load<br />
<br />
== Benchmarks ==<br />
<br />
The main benchmark file in the ''Carat++''-repository is <br />
* '../examples/benchmark_examples/isogeometric/iga_formfinding_4point_with_trusses/cbm_4PointSailwTrusses.txt'.<br />
<br />
== References ==<br />
<br />
<references/></div>Bauerhttp://carat.st.bv.tum.de/caratuserswiki/index.php/Users:General_FEM_Analysis/Elements_Reference/NURBS_BRep_Edge_cordUsers:General FEM Analysis/Elements Reference/NURBS BRep Edge cord2017-10-23T07:43:51Z<p>Bauer: /* Element Type */</p>
<hr />
<div>== General Description ==<br />
<br />
Coded and testing is in progress.<br />
<br />
=== Element Type ===<br />
<br />
* This element provides a geometrically nonlinear, isogeometric spatial cable.<br />
<br />
=== Degrees of Freedom ===<br />
<br />
The element uses the translatoric degrees of freedom (''Disp_X'', ''Disp_Y'', ''Disp_Z'') at each control point. <br />
<br />
=== Parameter Description ===<br />
<br />
{| border="1" cellpadding="3" cellspacing="0"<br />
|colspan="3" style="background:#efefef;"| Compulsory Parameters<br />
|-<br />
!Parameter<br />
!Values, Default(*)<br />
!Description<br />
|-<br />
!MAT<br />
|EL-MAT ''int''<br />
|Linking to a material input block<br />
|-<br />
!INT_TYPE_NURBS_BREP_CHORD<br />
|FULL, USER<br />
|Control of integration type. <br />
* FULL: p+1 Gauss points are used (p = polynomial degree of the NURBS patch) <br />
* USER: the optional Parameter GAUSS_U defines the number of Gauss points<br />
|-<br />
!CROSS SECTION <br />
|AREA = ''float''<br />
|area of the cross section<br />
|-<br />
!PRESTRESS<br />
|PRESTRESS = ''float''<br />
|prestress of the cable element<br />
|-<br />
|colspan="3" style="background:#efefef;"| Optional Parameters<br />
|-<br />
!Parameter<br />
!Values, Default(*)<br />
!Description<br />
|-<br />
!GAUSS_U<br />
|GAUSS_U = ''int''<br />
|Number of Gauss point per element. Must only to be defined when INT_TYPE_NURBS_BREP_CHORD = USER<br />
|-<br />
|}<br />
<br />
=== Example of a Complete Input Block ===<br />
<pre><br />
EL-PROP 1 : NURBS_BREP_CHORD <br />
MAT= EL-MAT 1<br />
AREA = 1<br />
PRESTRESS = 4000<br />
INT_TYPE_NURBS_BREP_CHORD = USER or FULL<br />
GAUSS_U = 4<br />
</pre><br />
<br />
== Element Loading ==<br />
<br />
The NURBS_BRep_Edge_Cord element is able to carry the following loads:<br />
* dead load<br />
* snow load<br />
* pressure load<br />
<br />
== Benchmarks ==<br />
<br />
The main benchmark file in the ''Carat++''-repository is <br />
* '../examples/benchmark_examples/isogeometric/iga_formfinding_4point_with_trusses/cbm_4PointSailwTrusses.txt'.<br />
<br />
== References ==<br />
<br />
<references/></div>Bauerhttp://carat.st.bv.tum.de/caratuserswiki/index.php/Users:General_FEM_Analysis/Elements_Reference/NURBS_BRep_Edge_cordUsers:General FEM Analysis/Elements Reference/NURBS BRep Edge cord2017-10-23T07:42:36Z<p>Bauer: /* Element Loading */</p>
<hr />
<div>== General Description ==<br />
<br />
Coded and testing is in progress.<br />
<br />
=== Element Type ===<br />
<br />
* This element provides a geometrically nonlinear, isogeometric spatial cable.<br />
* Mass computation is implemented.<br />
<br />
The formulation is stabilized by an additional bending stiffness based on Raknes et al.<ref>S.B. Raknes, X. Deng, Y. Bazilevs, D.J. Benson, K.M. Mathisen, T. Kvamsdal: „Isogeometric rotation-free bending-stabilized cables: Statics, dynamics, bending strips and coupling with shells“, in „Computer methods in applied mechanics and engineering“, Vol. 263, 2013, Seiten 127-143 http://dx.doi.org/10.1016/j.cma.2013.05.005</ref>. The bending stiffness is computed out of the area with the assumption of a circular cross section. <br />
<br />
=== Degrees of Freedom ===<br />
<br />
The element uses the translatoric degrees of freedom (''Disp_X'', ''Disp_Y'', ''Disp_Z'') at each control point. <br />
<br />
=== Parameter Description ===<br />
<br />
{| border="1" cellpadding="3" cellspacing="0"<br />
|colspan="3" style="background:#efefef;"| Compulsory Parameters<br />
|-<br />
!Parameter<br />
!Values, Default(*)<br />
!Description<br />
|-<br />
!MAT<br />
|EL-MAT ''int''<br />
|Linking to a material input block<br />
|-<br />
!INT_TYPE_NURBS_BREP_CHORD<br />
|FULL, USER<br />
|Control of integration type. <br />
* FULL: p+1 Gauss points are used (p = polynomial degree of the NURBS patch) <br />
* USER: the optional Parameter GAUSS_U defines the number of Gauss points<br />
|-<br />
!CROSS SECTION <br />
|AREA = ''float''<br />
|area of the cross section<br />
|-<br />
!PRESTRESS<br />
|PRESTRESS = ''float''<br />
|prestress of the cable element<br />
|-<br />
|colspan="3" style="background:#efefef;"| Optional Parameters<br />
|-<br />
!Parameter<br />
!Values, Default(*)<br />
!Description<br />
|-<br />
!GAUSS_U<br />
|GAUSS_U = ''int''<br />
|Number of Gauss point per element. Must only to be defined when INT_TYPE_NURBS_BREP_CHORD = USER<br />
|-<br />
|}<br />
<br />
=== Example of a Complete Input Block ===<br />
<pre><br />
EL-PROP 1 : NURBS_BREP_CHORD <br />
MAT= EL-MAT 1<br />
AREA = 1<br />
PRESTRESS = 4000<br />
INT_TYPE_NURBS_BREP_CHORD = USER or FULL<br />
GAUSS_U = 4<br />
</pre><br />
<br />
== Element Loading ==<br />
<br />
The NURBS_BRep_Edge_Cord element is able to carry the following loads:<br />
* dead load<br />
* snow load<br />
* pressure load<br />
<br />
== Benchmarks ==<br />
<br />
The main benchmark file in the ''Carat++''-repository is <br />
* '../examples/benchmark_examples/isogeometric/iga_formfinding_4point_with_trusses/cbm_4PointSailwTrusses.txt'.<br />
<br />
== References ==<br />
<br />
<references/></div>Bauerhttp://carat.st.bv.tum.de/caratuserswiki/index.php/Users:General_FEM_Analysis/Elements_Reference/NURBS_BRep_Edge_cordUsers:General FEM Analysis/Elements Reference/NURBS BRep Edge cord2017-10-23T07:41:51Z<p>Bauer: /* Parameter Description */</p>
<hr />
<div>== General Description ==<br />
<br />
Coded and testing is in progress.<br />
<br />
=== Element Type ===<br />
<br />
* This element provides a geometrically nonlinear, isogeometric spatial cable.<br />
* Mass computation is implemented.<br />
<br />
The formulation is stabilized by an additional bending stiffness based on Raknes et al.<ref>S.B. Raknes, X. Deng, Y. Bazilevs, D.J. Benson, K.M. Mathisen, T. Kvamsdal: „Isogeometric rotation-free bending-stabilized cables: Statics, dynamics, bending strips and coupling with shells“, in „Computer methods in applied mechanics and engineering“, Vol. 263, 2013, Seiten 127-143 http://dx.doi.org/10.1016/j.cma.2013.05.005</ref>. The bending stiffness is computed out of the area with the assumption of a circular cross section. <br />
<br />
=== Degrees of Freedom ===<br />
<br />
The element uses the translatoric degrees of freedom (''Disp_X'', ''Disp_Y'', ''Disp_Z'') at each control point. <br />
<br />
=== Parameter Description ===<br />
<br />
{| border="1" cellpadding="3" cellspacing="0"<br />
|colspan="3" style="background:#efefef;"| Compulsory Parameters<br />
|-<br />
!Parameter<br />
!Values, Default(*)<br />
!Description<br />
|-<br />
!MAT<br />
|EL-MAT ''int''<br />
|Linking to a material input block<br />
|-<br />
!INT_TYPE_NURBS_BREP_CHORD<br />
|FULL, USER<br />
|Control of integration type. <br />
* FULL: p+1 Gauss points are used (p = polynomial degree of the NURBS patch) <br />
* USER: the optional Parameter GAUSS_U defines the number of Gauss points<br />
|-<br />
!CROSS SECTION <br />
|AREA = ''float''<br />
|area of the cross section<br />
|-<br />
!PRESTRESS<br />
|PRESTRESS = ''float''<br />
|prestress of the cable element<br />
|-<br />
|colspan="3" style="background:#efefef;"| Optional Parameters<br />
|-<br />
!Parameter<br />
!Values, Default(*)<br />
!Description<br />
|-<br />
!GAUSS_U<br />
|GAUSS_U = ''int''<br />
|Number of Gauss point per element. Must only to be defined when INT_TYPE_NURBS_BREP_CHORD = USER<br />
|-<br />
|}<br />
<br />
=== Example of a Complete Input Block ===<br />
<pre><br />
EL-PROP 1 : NURBS_BREP_CHORD <br />
MAT= EL-MAT 1<br />
AREA = 1<br />
PRESTRESS = 4000<br />
INT_TYPE_NURBS_BREP_CHORD = USER or FULL<br />
GAUSS_U = 4<br />
</pre><br />
<br />
== Element Loading ==<br />
<br />
The NURBS_BRep_Edge_Cord element is able to carry the following loads:<br />
* dead load<br />
* snow load<br />
* pressure load<br />
* temperature load (not tested)<br />
<br />
== Benchmarks ==<br />
<br />
The main benchmark file in the ''Carat++''-repository is <br />
* '../examples/benchmark_examples/isogeometric/iga_formfinding_4point_with_trusses/cbm_4PointSailwTrusses.txt'.<br />
<br />
== References ==<br />
<br />
<references/></div>Bauerhttp://carat.st.bv.tum.de/caratuserswiki/index.php/Users:Geometry_Generation/Design_SupportsUsers:Geometry Generation/Design Supports2017-10-16T15:45:44Z<p>Bauer: /* Example of a Complete Input Block */</p>
<hr />
<div>Dirichlet boundary conditions can be applied to design elements with respect to their parametric coordinates.<br />
<br />
=== Parameter Description ===<br />
<br />
{| border="1" cellpadding="3" cellspacing="0"<br />
|colspan="3" style="background:#efefef;"| Parameters LOC_COORD<br />
|-<br />
!Parameter <br />
!Description<br />
!Defined for<br />
|-<br />
!u,v,w = ''int''{0;1}<br />
|only valid for = 0 or = 1. 0 denotes the beginning of the knot vector and 1 the end. If nothing is defined, the boundary conditions are applied to the whole patch.<br />
|Designelements with respective dimensions.<br />
|-<br />
!DE-BREP ''int''<br />
|applies the boundary conditions to the BRepElement.<br />
|DesignBRepelement.<br />
|-<br />
|colspan="3" style="background:#efefef;"| Parameters BC<br />
|-<br />
!Parameter <br />
!Description<br />
!Defined for<br />
|-<br />
!DISP_X <br /> DISP_Y <br /> DISP_Z <br /> DISP_ALL<br />
|blocks the displacement of the corresponding nodes in the respective directions <br />
|every element with respective degrees of freedom at the nodes<br />
|-<br />
!DISP_X_NONZERO <br /> DISP_Y_NONZERO <br /> DISP_Z_NONZERO <br />
|sets the displacement of the corresponding nodes in the respective directions to a value defined by a value (syntax: DISP_X_NONZERO = 0.25, ...) or a NURBS_REF in the Designelement definition. Direct initialization by a value overwrites the other.<br />
|every element with respective degrees of freedom at the nodes<br />
|-<br />
!DISP_T1 <br /> DISP_T2 <br /> DISP_T3<br />
|blocks the displacement in the respective directions. Is applied as weak boundary condition and summoned over all gauss points. Directions correspond to the base vectors of the element formulation. <br />
|ElementNURBS_BRep_EdgeCoupling with ElementSurface_NURBS<br />
|-<br />
!DISP_X_COUPLING <br /> DISP_Y_COUPLING <br /> DISP_Z_COUPLING<br />
|coupling of the dofs of the corresponding nodes in respective direction. Usable for clamping without blocking the displacements.<br />
|every element with respective degrees of freedom at the nodes<br />
|-<br />
!CLAMPED<br />
|clampes by blocking the displacements of the first two control points. It is only applicable for open knot vectors.<br />
|every NURBS based element<br />
|-<br />
!CLAMPED_X <br /> CLAMPED_Y <br /> CLAMPED_Z<br />
|clampes by blocking the displacements in the defined directions of the first two control points. Note that, X, Y, Z does not denote the rotation axis.<br />
|every NURBS based element<br />
|-<br />
!CLAMPED_TOR<br />
|blocks the rotational dof rot_tan.<br />
|ElementBeam_3D_NURBS_KLRod,ElementNURBS_BRep_Beam<br />
|-<br />
!CLAMPED_TOR_NONZERO<br />
|sets the rotational dof rot_tan to defined value ( by value or NURBS_REF).<br />
|ElementBeam_3D_NURBS_KLRod<br />
|-<br />
!ROT_X <br /> ROT_Y <br /> ROT_Z <br /> ROT_ALL<br />
|blocks the rotation of the corresponding nodes around the respective axis.<br />
|every element with respective degrees of freedom at the nodes<br />
|-<br />
!ROT_T1 <br /> ROT_T2 <br /> ROT_T3<br />
|blocks the rotation around the respective base vectors of the element formulation. Is applied as weak boundary condition and summoned over all gauss points. <br />
|ElementNURBS_BRep_EdgeCoupling with ElementSurface_NURBS<br />
|-<br />
!DIR_DIFF_SHELL8_X <br /> DIR_DIFF_SHELL8_Y <br /> DIR_DIFF_SHELL8_Z<br />
|<br />
|<br />
|-<br />
|colspan="3" style="background:#efefef;"| Parameters DIRECTION<br />
|-<br />
!Parameter <br />
!Description<br />
!Defined for<br />
|-<br />
!DIRECTION_1 ''= float, float, float'' <br /> DIRECTION_2 ''= float, float, float''<br />
|This condition allows to limit translatoric movements of a point within a plane or a line. To this purpose a plane is defined by the parameter DIRECTION_1 naming the plane normal. If a second plane is defined by specifying DIRECTION_2 the point is only allowed to move an the intersection line of the two planes. <br />
|DISP_X, DISP_Y, DISP_Z<br />
|-<br />
|colspan="3" style="background:#efefef;"| Parameters CURVE<br />
|-<br />
!Parameter <br />
!Description<br />
!Defined for<br />
|-<br />
!LD-CURVE ''int''<br />
|initial displacements are scaled by the global load factor * local load factor of the defined load curve.<br />
|DISP_X_NONZERO, DISP_Y_NONZERO, DISP_Z_NONZERO, DISP_X_NONZERO <br /> CLAMPED_TOR_NONZERO <br /> CLAMPED_X_NONZERO, CLAMPED_Y_NONZERO, CLAMPED_Z_NONZERO<br />
|-<br />
|}<br />
<br />
=== Example of a Complete Input Block ===<br />
<br />
<pre><br />
!===================================================================<br />
! ID DE-EL LOC COORD BC<br />
DE-SUP 1 1 u=0 DISP_X, DISP_Y, DISP_Z<br />
DE-SUP 2 1 u=0 v=1 w=1 DISP_X, DISP_Y, DISP_Z<br />
DE-SUP 3 1 DISP_X, DISP_Y, DISP_Z <br />
DE-SUP 4 1 DE-BREP 1 DISP_T1, DISP_T2, DISP_T3<br />
DE-SUP 5 1 u=0 DISP_X_NONZERO = 0.25 LD-CURVE 2 <br />
DE-SUP 6 1 u=0 DISP_Y_NONZERO, DISP_Z_NONZERO !works only if DE-EL has a Reference-Patch (NURBS_REF) <br />
DE-SUP 7 1 u=0 DISP_X, DISP_Y, DISP_Z DIRECTION_1 = -1,0,1 DIRECTION_2 = 0,1,-1 !nodes can only move in direction of the vector [1,1,1] <br />
DE-SUP 8 1 DE-BREP 1 DISP_Y_NONZERO = 0.33 LD-CURVE 2 <br />
</pre><br />
<br />
<!--<br />
!Further boundary types. Not necessarily defined for element type<br />
!DISP_X_COUPLING, DISP_Y_COUPLING, DISP_Z_COUPLING<br />
!DISP_X_NONZERO, DISP_Y_NONZERO, DISP_Z_NONZERO<br />
!DISP_ALL<br />
!CLAMPED_TOR_NONZERO<br />
!CLAMPED_X, CLAMPED_Y, CLAMPED_Z ! blocks the displacement in x, y, resp. z-direction<br />
!CLAMPED_X_NONZERO, CLAMPED_Y_NONZERO, CLAMPED_Z_NONZERO ! applies a defined initial displacement in x, y, resp. z-direction<br />
!ROT_X, ROT_Y, ROT_Z<br />
!ROT_ALL<br />
!ROT_T1, ROT_T2, ROT_T3<br />
!DIR_DIFF_SHELL8_X, DIR_DIFF_SHELL8_Y, DIR_DIFF_SHELL8_Z<br />
--><br />
In order to activate boundary conditions which are not related to DesignBRepelements, they have to be added to the respective load combination.<br />
<pre><br />
LD-COM 1<br />
TYPE=BC-DIRICHLET 1<br />
TYPE=BC-DIRICHLET 2 <br />
TYPE=BC-DIRICHLET 3 <br />
TYPE=BC-DIRICHLET 5 <br />
</pre><br />
<br />
<br />
Automatic coupling of coincidenting control points of different design elements is received by<br />
<br />
<pre><br />
!===================================================================<br />
! ID EL1(Master) EL2 (Slave)<br />
DE-JOINT ALL_COOR<br />
!===================================================================<br />
</pre></div>Bauerhttp://carat.st.bv.tum.de/caratuserswiki/index.php/Users:HowToUseCarat/InstallationWindowsUsers:HowToUseCarat/InstallationWindows2017-09-12T12:39:26Z<p>Bauer: /* IDE */</p>
<hr />
<div>This page shows how Carat++ can be compiled under a Windows environment.<br />
* Windows 10 64bit<br />
* Microsoft Visual Studio 2015<br />
* TODO git/svn<br />
* CMake 3.8.0<br />
* Boost 1.63.0<br />
* MKL (Intel MKL 2017)<br />
<br />
== Windows Version ==<br />
<br />
In this installation guide Windows 10 64bit is used. <br />
<br />
Carat++ installation was tested also under the following Windows versions:<br />
* Windows 7 64bit<br />
* TODO please add more if you tested it there<br />
<br />
== IDE == <br />
<br />
The IDE of choice is Microsoft Visual Studio 2015 Community. Furthermore, the setup with Microsoft Visual Studio 2017 Community is similar.<br />
<br />
* Download it from https://www.microsoft.com/de-DE/download/details.aspx?id=48146<br />
<br />
* In Visual Studio 2015, Visual C++ is not installed by default. When installing, be sure to choose Custom installation and then choose the C++ components you require.<br />
<br />
* If Visual Studio 2015 is already installed, choose File | New | Project | C++ and you will be prompted to install the necessary components.<br />
<br />
//TODO Screenshots<br />
<br />
Settings for Visual Studio:<br />
* Text-editor -> C/C++ -> Tabstopps:<br />
** Indent: Intelligent<br />
** Tabstopp size: 2<br />
** Indent size: 2<br />
** Insert spaces<br />
<br />
== Git ==<br />
<br />
Git is used as version control system. It is needed to download the Carat++ source code.<br />
<br />
TODO<br />
<br />
== Get the source code ==<br />
<br />
* Navigate to the folder where you want to have the source code.<br />
* Right click -> Git Clone...<br />
* Enter the URL: 129.187.141.105:/repos/carat.git<br />
* Click OK. <br />
* Enter your trac-username and -password.<br />
<br />
<gallery><br />
File:git_clone.png|Git Clone<br />
File:git_clone_url.png|URL <br />
</gallery><br />
<br />
== Create directory for build and libraries ==<br />
<br />
In "C:\carat\" create the empty directories "libs" and "build".<br />
<br />
== CMake == <br />
Install the latest CMake version<br />
<br />
== Boost ==<br />
<br />
Get the boost library version 1.63.0 from https://boost.org.<br />
Download and unpack it. <br />
Copy the unpacked folder with the version number into the "carat/libs" directory.<br />
<br />
In order to use the Boost logging, it needs to be compiled:<br />
<br />
* Open the Windwos command prompt.<br />
* Navigate to the "carat/libs/boost_1_63_0 directory.<br />
* Compile boost with the following lines in the command prompt.<br />
<br />
<pre><br />
bootstrap<br />
<br />
b2 link=shared address-model=64 runtime-link=shared --with-atomic --with-chrono --with-date_time --with-filesystem --with-log --with-system --with-thread<br />
<br />
b2 link=static address-model=64 runtime-link=static --with-atomic --with-chrono --with-date_time --with-filesystem --with-log --with-system --with-thread<br />
</pre><br />
If there is an error ''command "cl" missing'', refer to the IDE section above.<br />
<br />
* Now add the following path to the compiled boost libraries to your environmental variable "Path":<br />
<br />
<pre><br />
C:\carat\libs\boost_1_63_0\stage\lib\<br />
</pre><br />
<br />
== MKL ==<br />
<br />
Intel MKL is a equation solving library, that is strongly recommended to use. <br />
<br />
* Install the Intel mkl package located at "\\DC01\F_Users\TEMP\software\intel_suite\MKL_2017_standalone\windows" with default settings.<br />
* Now add the following path to the compiled boost libraries to your environmental variable "Path":<br />
<br />
<pre><br />
C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2017\windows\redist\intel64\mkl\<br />
</pre><br />
<br />
== RapidJSON ==<br />
<br />
RapidJSON is a JSON parser and generator for C++. It is used to read a Carat Inputfile in JSON-format. This library is optional.<br />
<br />
* Copy the library "rapidjson-master" from "\\DC01\F_Users\TEMP\software\Carat_libs" to your carat libraries. <br />
<!-- * Set the respective path in "CARAT_ROOT\src\cmake_personal_input.dat". --><br />
<!-- * Check USE_WITH_JSON in the CMAKE file in order to include it in your project. By default it is not part of the project. --><br />
<br />
<br />
== Compile Carat ==<br />
<br />
=== User Settings === <br />
<br />
First of all it is necessary to set some paths depending on where you stored the carat source and libs.<br />
<br />
Navigate to the Carat++ source directory and make a copy of the "cmake_personal_input.template" to "cmake_personal_input.dat".<br />
<br />
Do not modify the "cmake_personal_input.template"!<br />
<br />
In the "cmake_personal_input.dat" file you find the following part with commented lines where you have to set your user defined paths:<br />
<pre><br />
#==============================<br />
# set directory paths<br />
#==============================<br />
<br />
# BASIC INSTALLATION<br />
<br />
#set(CARAT_ROOT "C:/carat")<br />
#set(LIB_BOOST_INCLUDE_DIR "C:/carat/libs/boost_1_55_0")<br />
#set(LIB_BOOST_DIR "C:/carat/libs/boost_1_55_0/boost")<br />
#set(LIB_MKL_DIR "C:/Program Files (x86)/Intel/Composer XE 2011 SP1/mkl")<br />
</pre><br />
<br />
With the paths used in this installation guide the block should look like (don't forget to remove the #):<br />
<pre><br />
#==============================<br />
# set directories paths<br />
#==============================<br />
<br />
# BASIC INSTALLATION<br />
<br />
set(CARAT_ROOT "~/software/carat")<br />
set(LIB_BOOST_INCLUDE_DIR "C:/carat/libs/boost_1_63_0")<br />
set(LIB_BOOST_DIR "C:/carat/libs/boost_1_63_0/stage/lib")<br />
set(LIB_MKL_DIR "C:/Program Files (x86)/IntelSWTools/compilers_and_libraries_2017/windows/mkl")<br />
</pre><br />
<br />
Make sure to use a "/" as a separator in the paths.<br />
<br />
=== Create the project with CMake===<br />
<br />
TODO add pictures (already created)<br />
<br />
* Open CMake<br />
* Set the carat source path: "C:/carat/src"<br />
* Set the carat build directory: "C:/carat/build" (create this folder if it does not exist)<br />
* Click "Configure"<br />
* Select Visual Studio 2015<br />
* Check the desired Flags (for the basic setup you can use the default values as you see in the sreenshot below)<br />
* Click "Generate<br />
<br />
=== Open the Carat++ project with Visual Studio 2015 ===<br />
<br />
Now you can open the Carat++ Project with Visual Studio 2015 and edit/compile it.<br />
<br />
* Open Visual Studio 2015<br />
* Click "Open Project..." and select the "C:/Carat/build/Carat++.sln" project file.<br />
* Right-click the "carat" module in the project explorer on the right and "Set StartUp Projects".<br />
<br />
Now you are ready to compile Carat++!<br />
<br />
=== Compile ===<br />
<br />
<br />
<br />
== Benchmarks == <br />
<br />
After each build or at least before a git commit the benchmarks have to be tested.<br />
<br />
* Compile "carat_benchmark"<br />
* RUN_TEST<br />
<br />
You should add a benchmark for every development. Therefore you can add two types of benchmarks in the folder example/benchmark_examples/:<br />
<br />
* cbm_myfile1.dat: This benchmark is executed in every RUN_TESTS. The runtime should be short ( < 1s)<br />
* xcbm_myfile1.dat: This benchmark is only executed in RUN_TESTS, if the flag EXTENSIVE_BENCHMARKS.<br />
<br />
In addition, you have to provide a reference file with the correct solution in a file called ref_myfile1.dat. <br />
<br />
<pre><br />
Result "Displacement" "Load Case" 0 Vector OnNodes<br />
Values<br />
79 -1.1022632867e+000 -9.8466095193e-001 -1.3132351571e-001<br />
83 -1.1400399584e+000 -1.1658915870e+000 -9.1812530586e-002<br />
</pre></div>Bauerhttp://carat.st.bv.tum.de/caratuserswiki/index.php/Users:HowToUseCarat/InstallationWindowsUsers:HowToUseCarat/InstallationWindows2017-09-12T12:35:44Z<p>Bauer: </p>
<hr />
<div>This page shows how Carat++ can be compiled under a Windows environment.<br />
* Windows 10 64bit<br />
* Microsoft Visual Studio 2015<br />
* TODO git/svn<br />
* CMake 3.8.0<br />
* Boost 1.63.0<br />
* MKL (Intel MKL 2017)<br />
<br />
== Windows Version ==<br />
<br />
In this installation guide Windows 10 64bit is used. <br />
<br />
Carat++ installation was tested also under the following Windows versions:<br />
* Windows 7 64bit<br />
* TODO please add more if you tested it there<br />
<br />
== IDE == <br />
<br />
The IDE of choice is Microsoft Visual Studio 2015 Community.<br />
<br />
* Download it from https://www.microsoft.com/de-DE/download/details.aspx?id=48146<br />
<br />
* In Visual Studio 2015, Visual C++ is not installed by default. When installing, be sure to choose Custom installation and then choose the C++ components you require.<br />
<br />
* If Visual Studio 2015 is already installed, choose File | New | Project | C++ and you will be prompted to install the necessary components.<br />
<br />
//TODO Screenshots<br />
<br />
Settings for Visual Studio:<br />
* Text-editor -> C/C++ -> Tabstopps:<br />
** Indent: Intelligent<br />
** Tabstopp size: 2<br />
** Indent size: 2<br />
** Insert spaces<br />
<br />
== Git ==<br />
<br />
Git is used as version control system. It is needed to download the Carat++ source code.<br />
<br />
TODO<br />
<br />
== Get the source code ==<br />
<br />
* Navigate to the folder where you want to have the source code.<br />
* Right click -> Git Clone...<br />
* Enter the URL: 129.187.141.105:/repos/carat.git<br />
* Click OK. <br />
* Enter your trac-username and -password.<br />
<br />
<gallery><br />
File:git_clone.png|Git Clone<br />
File:git_clone_url.png|URL <br />
</gallery><br />
<br />
== Create directory for build and libraries ==<br />
<br />
In "C:\carat\" create the empty directories "libs" and "build".<br />
<br />
== CMake == <br />
Install the latest CMake version<br />
<br />
== Boost ==<br />
<br />
Get the boost library version 1.63.0 from https://boost.org.<br />
Download and unpack it. <br />
Copy the unpacked folder with the version number into the "carat/libs" directory.<br />
<br />
In order to use the Boost logging, it needs to be compiled:<br />
<br />
* Open the Windwos command prompt.<br />
* Navigate to the "carat/libs/boost_1_63_0 directory.<br />
* Compile boost with the following lines in the command prompt.<br />
<br />
<pre><br />
bootstrap<br />
<br />
b2 link=shared address-model=64 runtime-link=shared --with-atomic --with-chrono --with-date_time --with-filesystem --with-log --with-system --with-thread<br />
<br />
b2 link=static address-model=64 runtime-link=static --with-atomic --with-chrono --with-date_time --with-filesystem --with-log --with-system --with-thread<br />
</pre><br />
If there is an error ''command "cl" missing'', refer to the IDE section above.<br />
<br />
* Now add the following path to the compiled boost libraries to your environmental variable "Path":<br />
<br />
<pre><br />
C:\carat\libs\boost_1_63_0\stage\lib\<br />
</pre><br />
<br />
== MKL ==<br />
<br />
Intel MKL is a equation solving library, that is strongly recommended to use. <br />
<br />
* Install the Intel mkl package located at "\\DC01\F_Users\TEMP\software\intel_suite\MKL_2017_standalone\windows" with default settings.<br />
* Now add the following path to the compiled boost libraries to your environmental variable "Path":<br />
<br />
<pre><br />
C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2017\windows\redist\intel64\mkl\<br />
</pre><br />
<br />
== RapidJSON ==<br />
<br />
RapidJSON is a JSON parser and generator for C++. It is used to read a Carat Inputfile in JSON-format. This library is optional.<br />
<br />
* Copy the library "rapidjson-master" from "\\DC01\F_Users\TEMP\software\Carat_libs" to your carat libraries. <br />
<!-- * Set the respective path in "CARAT_ROOT\src\cmake_personal_input.dat". --><br />
<!-- * Check USE_WITH_JSON in the CMAKE file in order to include it in your project. By default it is not part of the project. --><br />
<br />
<br />
== Compile Carat ==<br />
<br />
=== User Settings === <br />
<br />
First of all it is necessary to set some paths depending on where you stored the carat source and libs.<br />
<br />
Navigate to the Carat++ source directory and make a copy of the "cmake_personal_input.template" to "cmake_personal_input.dat".<br />
<br />
Do not modify the "cmake_personal_input.template"!<br />
<br />
In the "cmake_personal_input.dat" file you find the following part with commented lines where you have to set your user defined paths:<br />
<pre><br />
#==============================<br />
# set directory paths<br />
#==============================<br />
<br />
# BASIC INSTALLATION<br />
<br />
#set(CARAT_ROOT "C:/carat")<br />
#set(LIB_BOOST_INCLUDE_DIR "C:/carat/libs/boost_1_55_0")<br />
#set(LIB_BOOST_DIR "C:/carat/libs/boost_1_55_0/boost")<br />
#set(LIB_MKL_DIR "C:/Program Files (x86)/Intel/Composer XE 2011 SP1/mkl")<br />
</pre><br />
<br />
With the paths used in this installation guide the block should look like (don't forget to remove the #):<br />
<pre><br />
#==============================<br />
# set directories paths<br />
#==============================<br />
<br />
# BASIC INSTALLATION<br />
<br />
set(CARAT_ROOT "~/software/carat")<br />
set(LIB_BOOST_INCLUDE_DIR "C:/carat/libs/boost_1_63_0")<br />
set(LIB_BOOST_DIR "C:/carat/libs/boost_1_63_0/stage/lib")<br />
set(LIB_MKL_DIR "C:/Program Files (x86)/IntelSWTools/compilers_and_libraries_2017/windows/mkl")<br />
</pre><br />
<br />
Make sure to use a "/" as a separator in the paths.<br />
<br />
=== Create the project with CMake===<br />
<br />
TODO add pictures (already created)<br />
<br />
* Open CMake<br />
* Set the carat source path: "C:/carat/src"<br />
* Set the carat build directory: "C:/carat/build" (create this folder if it does not exist)<br />
* Click "Configure"<br />
* Select Visual Studio 2015<br />
* Check the desired Flags (for the basic setup you can use the default values as you see in the sreenshot below)<br />
* Click "Generate<br />
<br />
=== Open the Carat++ project with Visual Studio 2015 ===<br />
<br />
Now you can open the Carat++ Project with Visual Studio 2015 and edit/compile it.<br />
<br />
* Open Visual Studio 2015<br />
* Click "Open Project..." and select the "C:/Carat/build/Carat++.sln" project file.<br />
* Right-click the "carat" module in the project explorer on the right and "Set StartUp Projects".<br />
<br />
Now you are ready to compile Carat++!<br />
<br />
=== Compile ===<br />
<br />
<br />
<br />
== Benchmarks == <br />
<br />
After each build or at least before a git commit the benchmarks have to be tested.<br />
<br />
* Compile "carat_benchmark"<br />
* RUN_TEST<br />
<br />
You should add a benchmark for every development. Therefore you can add two types of benchmarks in the folder example/benchmark_examples/:<br />
<br />
* cbm_myfile1.dat: This benchmark is executed in every RUN_TESTS. The runtime should be short ( < 1s)<br />
* xcbm_myfile1.dat: This benchmark is only executed in RUN_TESTS, if the flag EXTENSIVE_BENCHMARKS.<br />
<br />
In addition, you have to provide a reference file with the correct solution in a file called ref_myfile1.dat. <br />
<br />
<pre><br />
Result "Displacement" "Load Case" 0 Vector OnNodes<br />
Values<br />
79 -1.1022632867e+000 -9.8466095193e-001 -1.3132351571e-001<br />
83 -1.1400399584e+000 -1.1658915870e+000 -9.1812530586e-002<br />
</pre></div>Bauerhttp://carat.st.bv.tum.de/caratuserswiki/index.php/Users:General_FEM_Analysis/Data_Output/RhinocerosUsers:General FEM Analysis/Data Output/Rhinoceros2017-09-06T15:01:01Z<p>Bauer: /* Input Parameters */</p>
<hr />
<div>[[Category: Users:General FEM]]<br />
<br />
== General Description ==<br />
<br />
The Rhino postprocessor is developed at the chair as a plug-in for Rhinoceros. More information about Rhinoceros is provided on their web page <ref name="Rhino_Webpage">http://www.rhino3d.com</ref>. The visualization data of the respective inputfiles (out.georhino.txt , out.paramrhino.txt, out.paramlinesrhino.txt, out.post.res) can be manipulated.<br />
<br />
=== Input Parameters ===<br />
<br />
The block mainly consists of switches which can be set to a value equal 1 (on) or a value equals 0 (off).<br />
<br />
{| border="1" cellpadding="3" cellspacing="0"<br />
|colspan="3" style="background:#efefef;"| Block headline<br />
|-<br />
!Parameter<br />
!Values, Default(*)<br />
!Description<br />
|-<br />
!PC-OUT <br />
|''int'' : RHINO<br />
|ID and type of output object.<br />
|-<br />
|colspan="3" style="background:#efefef;"| Parameters for analysis data<br />
|-<br />
!Parameter<br />
!Values, Default(*)<br />
!Description<br />
|-<br />
!GEOM<br />
|''int'' (0)<br />
|Output of mesh geometry and topology (output_file_name.georhino.txt). The parameters 1 (yes) and 0 (no) are valid. <br />
|-<br />
!DISP<br />
|''int'' (0) <br />
|Output of nodal displacements (output_file_name.post.res). The parameters 1 (yes) and 0 (no) are valid. <br />
|-<br />
!STRESS<br />
|''int'' (0) <br />
|Output of element stresses on the Gausspoints (output_file_name.post.res). The parameters 1 (yes) and 0 (no) are valid. <br />
|-<br />
!STRESS_LINES<br />
|''int'' (0) <br />
|Output of brep-element stresses (output_file_name.post.res). The parameters 1 (yes) and 0 (no) are valid. (currently not working)<br />
|-<br />
!NODAL_STRESS<br />
|''int'' (0) <br />
|Output of element stresses projected to the control points (output_file_name.post.res). The parameters 1 (yes) and 0 (no) are valid. <br />
|-<br />
!STRESS_DIRECTION<br />
|''int'' (0) <br />
|Output of element stress directions (principle stress directions). The parameters 1 (yes) and 0 (no) are valid. <br />
|-<br />
!SUPPORT_FORCE<br />
|''int'' (0) <br />
|Output of nodal support forces (output_file_name.post.res). The parameters 1 (yes) and 0 (no) are valid. <br />
|-<br />
!RESULT_MINMAX<br />
|''int'' (0) <br />
|Output of minimal and maximal values of every result type (output_file_name.postinfo.res). The parameters 1 (yes) and 0 (no) are valid. (currently no output & not readable for RhinoPost)<br />
|-<br />
|colspan="3" style="background:#efefef;"| Auxiliary parameters<br />
|-<br />
!Parameter<br />
!Values, Default(*)<br />
!Description<br />
|-<br />
!GAUSS_POINTS<br />
|''int'' (0) <br />
|Output of the position of the Gauss points in parameter space. The parameters 1 (yes) and 0 (no) are valid. <br />
|-<br />
!GAUSS_POINTS_GEO<br />
|''int'' (0) <br />
|Output of the position of the Gauss points in geometry space (output_file_name.georhino.text). The parameters 1 (yes) and 0 (no) are valid. <br />
|-<br />
!COUPLING_POINTS<br />
|''int'' (0) <br />
|Output of the position of the coupling points in geometry space (output_file_name.georhino.text). The parameters 1 (yes) and 0 (no) are valid. <br />
|-<br />
!PAR_LINES<br />
|''int'' (0) <br />
|if output_file_name.paramrhino.txt is printed (output_file_name.paramrhino.text). The parameters 1 (yes) and 0 (no) are valid. <br />
|-<br />
!PAR_TRIM<br />
|''int'' (0) <br />
|if output_file_name.paramrhino.txt is printed (output_file_name.paramrhino.text). The parameters 1 (yes) and 0 (no) are valid. <br />
|-<br />
!FPN<br />
|''int'' (0) <br />
|Switch output syntax to floating point data. The parameters 1 (yes) and 0 (no) are valid. <br />
|-<br />
!PREC<br />
|''int'' (0) <br />
|Number of digits of floating point data. Parameters in the range from 1 to 16 are valid. <br />
|-<br />
!SUPPORT_POS<br />
|''int'' (0) <br />
|Output of the position of the supports(currently only point and line supports) (output_file_name.georhino.text). The parameters 1 (yes) and 0 (no) are valid.<br />
|-<br />
!LOAD_POS<br />
|''int'' (0) <br />
|Output of the position of the loads (currently only point and line loads) (output_file_name.georhino.text). The parameters 1 (yes) and 0 (no) are valid. <br />
|-<br />
!ELE_PROPS<br />
|''int'' (0) <br />
|Output of specific data assigned to elements (currently only material data). The parameters 1 (yes) and 0 (no) are valid. <br />
|-<br />
!CROSS_SECTION<br />
|''int'' (0) <br />
|Output of the base vectors of the cross section at every Gauss point (currently only for BEAM_3D_NURBS_KLRod) (output_file_name.post.res). The parameters 1 (yes) and 0 (no) are valid. <br />
|-<br />
!DELTA_DISP<br />
|''int'' (0) <br />
|Output of the difference of the displacements w.r.t. the defined time step (nodal displacements - nodal displacements of time step ''int'') (output_file_name.post.res). The parameters 1 (yes) and 0 (no) are valid. <br />
|-<br />
!GAUSS_POINTS_DISP<br />
|''int'' (0) <br />
|Output of the displacements of the gauss points (currently: on Nurbs1D & Nurbs2D) (output_file_name.post.res). The parameters 1 (yes) and 0 (no) are valid. <br />
|-<br />
!GAUSS_POINTS_AREA<br />
|''int'' (0) <br />
|Output of integration lengths in u- and v- direction and the integration area dA of the gauss points (currently: on Nurbs1D & Nurbs2D) (output_file_name.post.res). The parameters 1 (yes) and 0 (no) are valid.<br />
|-<br />
!OUTPUT_FILE_NAME<br />
|''string'' (''out'') <br />
|Prefix of the output files. <br />
|-<br />
!OUTPUT_FREQUENCY<br />
|''int'' (1) <br />
|Output data is printed for every n''th'' step of the analysis. <br />
|-<br />
!RESTART_FILE<br />
|''int'' (0) <br />
|Restart file is generated. The parameters 1 (yes) and 0 (no) are valid. <br />
|-<br />
|colspan="3" style="background:#efefef;"| Parameters for optimization data (readable, but no output created)<br />
|-<br />
!Parameter<br />
!Values, Default(*)<br />
!Description<br />
|-<br />
!DESIGN_VARIABLE<br />
|''int'' (0) <br />
|Output of design variables. The parameters 1 (yes) and 0 (no) are valid. <br />
|-<br />
!PURE_GRAD<br />
|''int'' (0) <br />
|Output of pure gradients (not filtered). The parameter 1 (yes) and 0 (no) are valid. <br />
|-<br />
!SMOOTH_GRAD<br />
|''int'' (0) <br />
|Output of smooth gradients. The parameters 1 (yes) and 0 (no) are valid. <br />
|-<br />
!SEARCH_DIRECTION<br />
|''int'' (0) <br />
|Output of search direction. The parameters 1 (yes) and 0 (no) are valid. <br />
|-<br />
!DESIGN_UPDATE<br />
|''int'' (0) <br />
|Output of design update. The parameters 1 (yes) and 0 (no) are valid. <br />
|-<br />
!VARIABLE_BOUND<br />
|''int'' (0) <br />
|Output of variable bounds. The parameters 1 (yes) and 0 (no) are valid. <br />
|-<br />
!OPT_DESIGN<br />
|''int'' (0) <br />
|Output of optimized design (mesh data). The parameters 1 (yes) and 0 (no) are valid. <br />
|}<br />
<br />
=== Input Example ===<br />
<br />
Example of a complete input block:<br />
<pre><br />
PC-OUT 1 : RHINO (default) filename<br />
GEOM=1 !Geometry (e.g. NURBS surfaces) out.georhino.txt<br />
DISP=1 !Displacements on control points (=FE nodes) out.post.res<br />
STRESS=1 !Stresses at quadrature(evaluation) points (required for trimmed surfaces) out.post.res<br />
NODAL_STRESS=1 !Stresses mapped to control points (can be used for untrimmed surfaces) out.post.res<br />
!STRESS_LINES=1 !Stresses at boundary quadrature points (stresses can be visualized in Rhino by lines _|_ to surface) (long time no test) out.post.res<br />
GAUSS_POINTS=1 !Output of quadrature points in parameter space (recommended just for one patch) out.paramrhino.txt<br />
GAUSS_POINTS_GEO=1 !Output of quadrature points in geometry space out.georhino.txt<br />
COUPLING_POINTS=1 !Output of coupling points in geometry space out.georhino.txt<br />
!PAR_LINES=1 !Output of trimming curves in parameter space (file out.paramrhino.txt) out.paramrhino.txt<br />
PAR_TRIM=1 !Output of trimming curves in parameter space (file out.paramrhino.txt) out.paramrhino.txt<br />
PREC=5 !precision of float numbers<br />
FPN=1 !1 scientific notation; 0 fixed notation<br />
OUTPUT_FILE_NAME = benchmark_example !name of output files (e.g. "out" is replaced by "benchmark_example"<br />
</pre><br />
<br />
== References ==<br />
<br />
<references/></div>Bauerhttp://carat.st.bv.tum.de/caratuserswiki/index.php/Users:General_FEM_Analysis/Analyses_Reference/Static_NonlinearUsers:General FEM Analysis/Analyses Reference/Static Nonlinear2017-09-05T14:25:26Z<p>Bauer: /* Parameter Description */</p>
<hr />
<div>[[Category: Users:General FEM Analysis]]<br />
<br />
== General Description ==<br />
<br />
The static nonlinear analysis is applied to analyze displacements, strains or stresses of nonlinear structures. There exists several sources of nonlinearities like nonlinear kinematics, nonlinear material behavior or contact scenarios.<br />
<br />
The static nonlinear analysis formulates structural equilibrium on the actual configuration under consideration of the actual system response. <br />
<br />
=== Structure of Equation System ===<br />
<br />
A nonlinear problem is formulated by the equation '''r''' = '''f'''_int('''u''') - λ * '''f'''_ext('''u''') where '''r''' specifies the residual vector and '''f'''_int and '''f'''_ext define the internal and external forces, respectively. In general, the internal forces as well as the external forces depend on the actual displacement field '''u'''. Thus, the equation is nonlinear with respect to the a priori unknown equilibrium displacements. The parameter λ specifies a scaling parameter for the external load. Usually this parameter is controlled by a load curve which specifies λ as a function of the pseudo time t. The slope of this load curve must be small enough such that convergence is possible in each step. Whenever a nonlinear analysis has convergence problems it is appropriate to reduce the slope of this load curve and calculate more time steps.<br />
<br />
At the equilibrium point the internal forces are equal to the external forces and the residual vector is equal to zero. The above specified nonlinear problem is linearized for the actual displacement state and solved by a Newton-Raphson scheme where the residual vector is used to compute incremental displacements by '''K'''_t '''u'''_inc = '''r'''. Here the tangential stiffness matrix is specified by '''K'''_t whereas '''u'''_inc denotes the incremental displacements.<br />
<br />
=== Path Following Methods ===<br />
The iterative solution of the nonlinear problem requires path following methods. The most simple path following method is a pure '''Load Control'''. Here the parameter λ (''lambda'') is increased according to the specified load curve. This allows nonlinear analysis for relatively robust nonlinear problems. But as soon as the structure shows instabilities the load control method usually does not not converge anymore. In this case the '''arc length''' method can be applied to compute the equilibrium path. This method controls the so called arc length which is defined as a combination of displacement increment and load increment. In general it is also possible to directly control a specified displacement.<br />
<br />
More information about path following methods can be found e.g. in the theses of Reiner Reitinger<ref name="Rei94">Reitinger, R.: Stabilität und Optimierung imperfektionsempfindlicher Tragwerke, Dissertation, Bericht Nr. 17, Institut für Baustatik, Universität Stuttgart, 1994</ref> and Amphon Jarusjarungkiat<ref name="Jar2009">Jarusjarungkiat, A.: Nonlinear Analysis of Pneumatic Membranes - "From Subgrid to Interface", Dissertation, Lehrstuhl für Statik, Technische Universität München, 2009</ref>.<br />
<br />
=== Step Length Control ===<br />
Actually there exist two methods for step length control in Carat++. The most simple method is the fixed step length which computes the whole load displacement path with a constant step length. This procedure is robust but inefficient because a large number of load steps has to be computed. Usually it is more efficient to apply adaptive step length methods. A very robust method was presented by Crisfield and Ramm, cf. <ref name="Rei94" />. This method specifies the actual step length for the time step ''i'' by the operation<br />
<br />
''StepLength_i'' = ''alpha'' * ''StepLength_i-1''.<br />
<br />
The parameter ''alpha'' is computed by ''(J_d / (J_i-1 * (Nmb_Restarts+1)))^p'' with: ''J_d'' = desired number of equilibrium iterations, ''J_i-1'' = equilibrium iterations of last time step and ''p'' equals the exponent.<br />
<br />
<pre><br />
Example: Actual iteration step: i<br />
Number of desired equilibrium iterations: J_d = 8.<br />
Number of equilibrium iterations in the last time step: J_i-1 = 12.<br />
Number of restarts: Nmb_Restarts = 0.<br />
Exponent: p=1.0.<br />
Step length of last step: StepLength_i-1 = 0.2.<br />
<br />
alpha = ( 8 / (12*(0+1)))^(1.0) = (8 / 12)^(1.0) = 2/3.<br />
StepLength_i = 2/3 * 0.2 = 0.1333. <br />
<br />
</pre><br />
<br />
Thus, if the number of equilibrium iterations is larger than a desired value the step length is decreased for the next time step. If the number of equilibrium iterations is smaller than a desired value the step length is increased for the next time step. The exponent ''p'' can be used to manipulate the update speed. It should be used with care.<br />
<br />
=== Simultaneous Eigenvalue Analysis ===<br />
Reaching critical points of the load displacement path (limit points, bifurcation points, ...) requires special investigations. A simultaneous eigenvalue analysis solving the problem<br />
<br />
('''K'''_t - ''eigenvalue'' * '''I''') '''phi''' = '''0'''<br />
<br />
allows for approximation of the load factor at the next critical point ''lambda''_k. Whenever a critical point is reached the above equations yields a zero eigenvalue. Extrapolating the current load factor according to the eigenvalue allows for good approximations of the critical load.<br />
<br />
=== Imperfect Designs ===<br />
Many structures subjected to large compression loading are sensitive to geometrical imperfections. Unfortunately the shape of the imperfection is a priori unknown but mostly some information about tolerances exist. In the nonlinear analysis the imperfection shapes can be computed as sum of several normalized eigenmodes. The final imperfection mode is then scaled by the specified tolerance. This operation can be expressed by<br />
<br />
d'''x'''_imp = tol * (sum_i '''phi'''_i).<br />
<br />
After computation of the imperfection mode, the geometry of the structure is modified and the nonlinear analysis starts with the imperfect geometry.<br />
<br />
== Input Parameters ==<br />
<br />
=== Parameter Description ===<br />
<br />
{| border="1" cellpadding="3" cellspacing="0"<br />
|colspan="3" style="background:#efefef;"| Compulsory Parameters<br />
|-<br />
!Parameter<br />
!Values, Default(*)<br />
!Description<br />
|-<br />
!PC-ANALYSIS<br />
|''int'' : STA_GEO_NONLIN<br />
|Keyword of nonlinear analysis with analysis ID<br />
|-<br />
!PATHCONTROL<br />
|FORCE or ARCLENGTH or DISPLACEMENT<br />
|Definition of path control method.<br />
|-<br />
!SOLVER<br />
|PC-SOLVER ''int''<br />
|Linking to a linear solver (direct or iterative)<br />
|-<br />
!OUTPUT<br />
|PC-OUT ''int''<br />
|Linking to [[Users:General FEM Analysis/Data Output|output objects]] (specifies the type of output format, e.g. GiD)<br />
|-<br />
!COMPCASE<br />
|LD-COM ''int''<br />
|Linking to computation case object which specifies the boundary conditions (loading and supports). Only a single computation case is allowed.<br />
|-<br />
!DOMAIN<br />
|EL-DOMAIN ''int''<br />
|Linking to the domain the analysis should work on.<br />
|-<br />
!NUM_STEP<br />
|''int''<br />
|Number of (pseudo) time steps that have to be calculated.<br />
|-<br />
!MAX_ITER_EQUILIBRIUM<br />
|''int''<br />
|Maximum number of equilibrium iterations that are allowed per (pseudo) time step. <br />
|-<br />
!EQUILIBRIUM_ACCURACY<br />
|''float''<br />
|Equilibrium accuracy that has to be reached for convergence. The convergence is checked with the L2 norm of the incremental displacements.<br />
|-<br />
!CURVE<br />
|LD-CURVE ''int''<br />
|Linking to the load curve.<br />
|-<br />
|colspan="3" style="background:#efefef;"| Optional Parameters<br />
|-<br />
!TRACED_NODE<br />
|''int''<br />
|Node ID of traced node. Used for screen and log file output.<br />
|-<br />
!TRACED_NODAL_DOF<br />
|''dof type''<br />
|DOF type of node TRACED_NODE that is traced (DISP_X, DISP_Y, DISP_Z, ...).<br />
|-<br />
!STEP_LENGTH_CONTROL<br />
|FIXED or<br> <br />
<br />
CRISFIELD_RAMM or<br> <br />
<br />
LOAD_BISECT<br />
|FIXED specifies a constant step size where the desired step size is defined by the parameter STEP_LENGTH_CONTROL_REALS (only for ARCLENGTH method). <br><br />
CRISFIELD_RAMM specifies an adaptive method according to Crisfield and Ramm, c.f. <ref name="Rei94" /> (only for ARCLENGTH method). In this case the parameter STEP_LENGTH_CONTROL_INTS = ''int'' specifies the number of restarts that are allowed. The other necessary parameters are specified by STEP_LENGTH_CONTROL_REALS. See the example below. <br><br />
LOAD_BISECT is defined for pathcontrol FORCE. If the full time step cannot be solved, the load increment is bisectioned. This is recursive. In this case the parameter STEP_LENGTH_CONTROL_INTS = ''int'' specifies the max. level of bisectioning of the time steps.<br />
|-<br />
!STEP_LENGTH_CONTROL_REALS<br />
|''float'', ''float'', ...<br />
|respective number of floats for step length control algorithm<br />
|-<br />
!STEP_LENGTH_CONTROL_INTS<br />
|''int'', ''int'', ...<br />
|respective number of integers for step length control algorithm<br />
|-<br />
!SIMULTANEOUS_EIGENVALUE_ANALYSIS<br />
|1 or 0<br />
|flag to specify if a simultaneous eigenvalue analysis should be performed:<br />
<br />
0 - no eigenvalue analysis<br />
<br />
1 - perform eigenvalue analysis. This flag requires definition of parameter EIGEN_SOLVER. <br />
|-<br />
!EIGEN_SOLVER<br />
|PC-SOLVER ''int''<br />
|Linking to an eigenvalue solver<br />
|-<br />
!IMPERFECTION_MODES<br />
|''int'', ''int'', ''int'', ...<br />
|specifies which eigen modes should be summarized to the imperfection mode. Computation of imperfect design requires definition of parameter EIGEN_SOLVER.<br />
|-<br />
!IMPERFECTION_SIZE<br />
|''float''<br />
|specifies the scalingof the imperfection mode.<br />
|}<br />
<br />
=== Example of a Complete Input Block ===<br />
<br />
<pre><br />
PC-ANALYSIS 1: STA_GEO_NONLIN<br />
PATHCONTROL = ARCLENGTH ! or DISPLACEMENT or FORCE<br />
SOLVER = PC-SOLVER 1<br />
OUTPUT = PC-OUT 1<br />
COMPCASE = LD-COM 1<br />
DOMAIN = EL-DOMAIN 1<br />
NUM_STEP = 30<br />
MAX_ITER_EQUILIBRIUM = 100<br />
EQUILIBRIUM_ACCURACY = 1e-10<br />
CURVE=LD-CURVE 1<br />
TRACED_NODE=2<br />
TRACED_NODAL_DOF=DISP_Y <br />
! Example: fixed step length of 0.05<br />
STEP_LENGTH_CONTROL = FIXED<br />
STEP_LENGTH_CONTROL_REALS = 0.05 ! constant step length of 0.05<br />
! Example adaptive step length according to Crisfield and Ramm<br />
STEP_LENGTH_CONTROL = CRISFIELD_RAMM<br />
STEP_LENGTH_CONTROL_REALS = 0.1, 1.0 ! initial step length = 0.1, exponent p = 1.0<br />
STEP_LENGTH_CONTROL_INTS = 5 ! 5 equilibrium iterations per step are desired<br />
! Example: no simultaneous eigenvalue analysis<br />
SIMULTANEOUS_EIGENVALUE_ANALYSIS = 0 <br />
! Example: simultaneous eigenvalue analysis<br />
SIMULTANEOUS_EIGENVALUE_ANALYSIS = 1<br />
EIGEN_SOLVER = PC-SOLVER 2<br />
! Example: use imperfect design with modes 1, 2, 4, and 6<br />
IMPERFECTION_MODES = 1, 2, 4, 6<br />
IMPERFECTION_SIZE = 0.015 ! maximum size of imperfection mode equals 0.015<br />
EIGEN_SOLVER = PC-SOLVER 2<br />
</pre><br />
<br />
== Examples ==<br />
<br />
=== Snap-through of a two-bar truss ===<br />
<br />
The following simple example shows a geometrically nonlinear analysis of a 2bar truss system using the arclength method. It uses a fixed step size for computation.<br />
The respective input file can be found in the repository under<br />
<br />
* ..\examples\benchmark_examples\analyses\stanln_2bartruss_arclength_l\2bartruss_arclength_fixed.txt<br />
<br />
The problem computes a snap through problem. The [[Users:General FEM Analysis/BCs Reference|boundary conditions]] are visualized by the figure below.<br />
{|<br />
|[[File:2bar_truss_org.png|frame|up|Simple 2bar truss structure discretized with [[Users:General FEM Analysis/Elements Reference/Truss1|truss elements]]]] <br />
|}<br />
The load f is increased by the arclength method such that the displacements depicted in the figure below occur.<br />
{|<br />
|[[File:2bar_truss_defo.gif|frame|up|Truss snap through]] <br />
|}<br />
The figure below shows the load displacement path of the y-displacement of the center node. The well known snap through behavior is clearly visible. For a load factor of approx. 0.14 the structure shows instability. In the following the arclength control reduces the load factor until -0.14 to compute equilibrium states. Obviously these states can be only be computed by arclength or displacement control. After a complete snap through the load can be increased further. Now the complete structure works in tension which does not yield to further instability points.<br />
{|<br />
|[[File:2bar_truss_load_disp_curve.png|frame|up|Load displacement path of 2bar truss]] <br />
|}<br />
<br />
=== Benchmark examples ===<br />
* snap-through of a two-bar truss ([[Users:General_FEM_Analysis/Elements_Reference/Truss1|TRUSS1]]) with arc-length control: ..\examples\benchmark_examples\analyses\stanln_2bartruss_arclength_l\2bartruss_arclength_fixed.txt<br />
* bending of a cantilever discretized with solids ([[Users:General_FEM_Analysis/Elements_Reference/SolidTetra1|SOLIDTETRA1]]) with displacement control: ..\examples\benchmark_examples\analyses\stanln_disp_ctr\cbm_stanlin_disp.dat<br />
* 4-point sail ([[Users:General_FEM_Analysis/Elements_Reference/Membrane1|MEMBRANE1]]) under snow load with load-control: ..\examples\benchmark_examples\analyses\stanln_membrane1_I\cbm_4_point.txt<br />
* pathswitching for a shells ([[Users:General_FEM_Analysis/Elements_Reference/Shell9|SHELL9]]) under compression: ..\examples\benchmark_examples\analyses\stanln_path_switching\cbm_pathswitch.dat<br />
<br />
== References ==<br />
<br />
<references/></div>Bauerhttp://carat.st.bv.tum.de/caratuserswiki/index.php/Users:HowToUseCarat/InstallationWindowsUsers:HowToUseCarat/InstallationWindows2017-09-04T09:14:19Z<p>Bauer: /* Windows Version */</p>
<hr />
<div>This page shows how Carat++ can be compiled under a Windows environment.<br />
* Windows 10 64bit<br />
* Microsoft Visual Studio 2015<br />
* TODO git/svn<br />
* CMake 3.8.0<br />
* Boost 1.63.0<br />
* MKL (Intel MKL 2017)<br />
<br />
== Windows Version ==<br />
<br />
In this installation guide Windows 10 64bit is used. <br />
<br />
Carat++ installation was tested also under the following Windows versions:<br />
* Windows 7 64bit<br />
* TODO please add more if you tested it there<br />
<br />
== IDE == <br />
<br />
The IDE of choice is Microsoft Visual Studio 2015 Community.<br />
<br />
* Download it from https://www.microsoft.com/de-DE/download/details.aspx?id=48146<br />
<br />
* In Visual Studio 2015, Visual C++ is not installed by default. When installing, be sure to choose Custom installation and then choose the C++ components you require.<br />
<br />
* If Visual Studio 2015 is already installed, choose File | New | Project | C++ and you will be prompted to install the necessary components.<br />
<br />
//TODO Screenshots<br />
<br />
Settings for Visual Studio:<br />
* Text-editor -> C/C++ -> Tabstopps:<br />
** Indent: Intelligent<br />
** Tabstopp size: 2<br />
** Indent size: 2<br />
** Insert spaces<br />
<br />
== Git ==<br />
<br />
Git is used as version control system. It is needed to download the Carat++ source code.<br />
<br />
TODO<br />
<br />
== Get the source code ==<br />
<br />
* Navigate to the folder where you want to have the source code.<br />
* Right click -> Git Clone...<br />
* Enter the URL: 129.187.141.105:/repos/carat.git<br />
* Click OK. <br />
* Enter your trac-username and -password.<br />
<br />
<gallery><br />
File:git_clone.png|Git Clone<br />
File:git_clone_url.png|URL <br />
</gallery><br />
<br />
== Create directory for build and libraries ==<br />
<br />
In "C:\carat\" create the empty directories "libs" and "build".<br />
<br />
== CMake == <br />
Install the latest CMake version<br />
<br />
== Boost ==<br />
<br />
Get the boost library version 1.63.0 from https://boost.org.<br />
Download and unpack it. <br />
Copy the unpacked folder with the version number into the "carat/libs" directory.<br />
<br />
In order to use the Boost logging, it needs to be compiled:<br />
<br />
* Open the Windwos command prompt.<br />
* Navigate to the "carat/libs/boost_1_63_0 directory.<br />
* Compile boost with the following lines in the command prompt.<br />
<br />
<pre><br />
bootstrap<br />
<br />
b2 link=shared address-model=64 runtime-link=shared --with-atomic --with-chrono --with-date_time --with-filesystem --with-log --with-system --with-thread<br />
<br />
b2 link=static address-model=64 runtime-link=static --with-atomic --with-chrono --with-date_time --with-filesystem --with-log --with-system --with-thread<br />
</pre><br />
If there is an error ''command "cl" missing'', refer to the IDE section above.<br />
<br />
* Now add the following path to the compiled boost libraries to your environmental variable "Path":<br />
<br />
<pre><br />
C:\carat\libs\boost_1_63_0\stage\lib\<br />
</pre><br />
<br />
== MKL ==<br />
<br />
Intel MKL is a equation solving library, that is strongly recommended to use. <br />
<br />
* Install the Intel mkl package located at "\\DC01\F_Users\TEMP\software\intel_suite\MKL_2017_standalone\windows" with default settings.<br />
* Now add the following path to the compiled boost libraries to your environmental variable "Path":<br />
<br />
<pre><br />
C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2017\windows\redist\intel64\mkl\<br />
</pre><br />
<br />
== Compile Carat ==<br />
<br />
=== User Settings === <br />
<br />
First of all it is necessary to set some paths depending on where you stored the carat source and libs.<br />
<br />
Navigate to the Carat++ source directory and make a copy of the "cmake_personal_input.template" to "cmake_personal_input.dat".<br />
<br />
Do not modify the "cmake_personal_input.template"!<br />
<br />
In the "cmake_personal_input.dat" file you find the following part with commented lines where you have to set your user defined paths:<br />
<pre><br />
#==============================<br />
# set directory paths<br />
#==============================<br />
<br />
# BASIC INSTALLATION<br />
<br />
#set(CARAT_ROOT "C:/carat")<br />
#set(LIB_BOOST_INCLUDE_DIR "C:/carat/libs/boost_1_55_0")<br />
#set(LIB_BOOST_DIR "C:/carat/libs/boost_1_55_0/boost")<br />
#set(LIB_MKL_DIR "C:/Program Files (x86)/Intel/Composer XE 2011 SP1/mkl")<br />
</pre><br />
<br />
With the paths used in this installation guide the block should look like (don't forget to remove the #):<br />
<pre><br />
#==============================<br />
# set directories paths<br />
#==============================<br />
<br />
# BASIC INSTALLATION<br />
<br />
set(CARAT_ROOT "~/software/carat")<br />
set(LIB_BOOST_INCLUDE_DIR "C:/carat/libs/boost_1_63_0")<br />
set(LIB_BOOST_DIR "C:/carat/libs/boost_1_63_0/stage/lib")<br />
set(LIB_MKL_DIR "C:/Program Files (x86)/IntelSWTools/compilers_and_libraries_2017/windows/mkl")<br />
</pre><br />
<br />
Make sure to use a "/" as a separator in the paths.<br />
<br />
=== Create the project with CMake===<br />
<br />
TODO add pictures (already created)<br />
<br />
* Open CMake<br />
* Set the carat source path: "C:/carat/src"<br />
* Set the carat build directory: "C:/carat/build" (create this folder if it does not exist)<br />
* Click "Configure"<br />
* Select Visual Studio 2015<br />
* Check the desired Flags (for the basic setup you can use the default values as you see in the sreenshot below)<br />
* Click "Generate<br />
<br />
=== Open the Carat++ project with Visual Studio 2015 ===<br />
<br />
Now you can open the Carat++ Project with Visual Studio 2015 and edit/compile it.<br />
<br />
* Open Visual Studio 2015<br />
* Click "Open Project..." and select the "C:/Carat/build/Carat++.sln" project file.<br />
* Right-click the "carat" module in the project explorer on the right and "Set StartUp Projects".<br />
<br />
Now you are ready to compile Carat++!<br />
<br />
=== Compile ===<br />
<br />
<br />
<br />
== Benchmarks == <br />
<br />
After each build or at least before a git commit the benchmarks have to be tested.<br />
<br />
* Compile "carat_benchmark"<br />
* RUN_TEST<br />
<br />
You should add a benchmark for every development. Therefore you can add two types of benchmarks in the folder example/benchmark_examples/:<br />
<br />
* cbm_myfile1.dat: This benchmark is executed in every RUN_TESTS. The runtime should be short ( < 1s)<br />
* xcbm_myfile1.dat: This benchmark is only executed in RUN_TESTS, if the flag EXTENSIVE_BENCHMARKS.<br />
<br />
In addition, you have to provide a reference file with the correct solution in a file called ref_myfile1.dat. <br />
<br />
<pre><br />
Result "Displacement" "Load Case" 0 Vector OnNodes<br />
Values<br />
79 -1.1022632867e+000 -9.8466095193e-001 -1.3132351571e-001<br />
83 -1.1400399584e+000 -1.1658915870e+000 -9.1812530586e-002<br />
</pre></div>Bauerhttp://carat.st.bv.tum.de/caratuserswiki/index.php/Users:General_FEM_Analysis/BCs_Reference/DirichletUsers:General FEM Analysis/BCs Reference/Dirichlet2017-09-01T10:17:26Z<p>Bauer: /* SPC-NONZERO */</p>
<hr />
<div>[[Category: Users:General FEM Analysis]]<br />
<br />
== General Info ==<br />
Dirichlet conditions can be divided into three groups:<br />
* single point constraints (SPC) which refer to one point only and<br />
* multiple point constraints (MPC) that perform a kind of coupling by applying the same Dirichlet object to several points.<br />
* The RBE condition builds up the last group, which defines a coupling in between several points, but each point computes its own displacement according to a certain formula.<br />
<br />
<br />
== SPC-ZERO ==<br />
The SPC-ZERO condition is the most frequently used Dirichlet condition. It prescribes zero displacement to certain degrees of freedom of a node. To this purpose it is necessary to list the influenced nodes and the related fixed DOFs inside the Dirichlet block.<br />
<pre><br />
BC-DIRICHLET 1 : SPC-ZERO<br />
NODE 1 DISP_X DISP_Y DISP_Z ! fix all translatoric DOFs for node 1<br />
NODE 2 DISP_X ! only fix the translation in x-direction for node 2<br />
NODE 3 DIR_DIFF_SHELL8_X ! the director related degrees of freedom of the SHELL8 can be equipped with Neumann BCs, too<br />
</pre><br />
<br />
== SPC-NONZERO ==<br />
The SPC-NONZERO condition allows to prescribe a nodal displacement unequal zero (eg. settlement of a support). The handling is quite similar to the SPC-ZERO, but each considered degree of freedom needs to be assigned a value.<br />
<br />
'''REMARK:''' This BC is currently only available for geometrical non-linear computations.<br />
<br />
As an example we regard a cantilever with a prescribed tip displacement of 1.<br />
<br />
{|<br />
| <pre><br />
BC-DIRICHLET 2: SPC-NONZERO<br />
NODE 721 DISP_Z = 1<br />
NODE 722 DISP_Z = 1<br />
NODE 723 DISP_Z = 1<br />
</pre><br />
<br />
| [[File:BCs_nonzero.PNG | 400px]]<br />
|}<br />
<br />
The complete input file can be found in ''CARAT_ROOT/examples/own_examples/dirichlet_bc/cantilever_spc-nonzero''.<br />
<br />
Furthermore, the condition can be scaled by a load curve. Note that the displacement in this case is scale by the local load curve value times the global loadcurve value. A constant dummy load curve might be necessary. <br />
<br />
<pre><br />
BC-DIRICHLET 2: SPC-NONZERO<br />
NODE 721 DISP_Z = 1 LD-CURVE 2<br />
NODE 722 DISP_Z = 1 LD-CURVE 2<br />
NODE 723 DISP_Z = 1 LD-CURVE 2<br />
</pre><br />
<br />
== SPC-DIRECTION ==<br />
This condition allows to limit translatoric movements of a point within a plane or a line. To this purpose a plane is defined by the parameter DIRECTION_1 naming the plane normal. If a second plane is defined by specifying DIRECTION_2 the point is only allowed to move an the intersection line of the two planes.<br />
<br />
This will be shown on a short example. A truss element defined by nodes 1 and 2 is located along the global x-axis. Point 1 is fixed in all three directions and at node 2 a tensile force is applied. As an additional constraint, node 2 is forced to move along the line defined by the vector (1,1,1). To this purpose, two Dirichlet blocks have to be defined. The first one is a SPC-ZERO block fixing node 1 (not listed here), and the second one limiting node 2 to a one dimensional movement using a SPC-DIRECTION constraint:<br />
<pre><br />
BC-DIRICHLET 2: SPC-DIRECTION<br />
DOFS=DISP_X DISP_Y DISP_Z NODES=2 DIRECTION_1 = -1,0,1 DIRECTION_2 = 0,1,-1<br />
</pre><br />
where the vector (1,1,1) is defined indirectly by two directions being normal to it.<br />
<br />
The picture below shows the result with the tip displacement visualized by an arrow. The full input file is available on the SVN server: ''CARAT_ROOT/examples/own_examples/dirichlet_bc/truss_1elem_spc-zero''.<br />
<br />
[[File:SPC-DIRECTION.PNG |200px | Result of a truss equipped with a SPC-DIRECTION condition]]<br />
<br />
If the same directions have to be applied to several nodes this can either be done by listing the node vector inside the BC-block or by using node sets:<br />
<br />
<pre><br />
DOFS=DISP_X DISP_Y DISP_Z NODES=2,3,4 DIRECTION_1 = -1,0,1 DIRECTION_2 = 0,1,-1<br />
DOFS=DISP_X DISP_Y DISP_Z NODE_SETS= NODE-SET 5 DIRECTION_1 = -1,0,1 DIRECTION_2 = 0,1,-1<br />
</pre><br />
<br />
Another method of prescribing a direction is the usage of the nodal director. It either can be defined in reference or in actual configuration:<br />
<pre><br />
DOFS=DISP_X DISP_Y DISP_Z NODES=1 DIRECTION = NODE_DIR_REF<br />
DOFS=DISP_X DISP_Y DISP_Z NODES=2 DIRECTION = NODE_DIR_ACT<br />
</pre><br />
<br />
== MPC-COUPLING ==<br />
An instance of MPC-COUPLING allows degrees of freedom of different nodes to share the same equation number, so they assemble to the same entries inside global matrices and vectors and return identical results. Of course only degrees of freedom of the same type can be coupled.<br />
<br />
An application for a coupling instance might be the modelling of an hinge. Two nodes are defined at the same coordinates and coupled via their translatoric DOFs:<br />
<pre><br />
NODE 1 X 0 Y 0 Z 0<br />
NODE 2 X 0 Y 0 Z 0<br />
.....<br />
BC-DIRICHLET 1 : MPC-COUPLING<br />
DOFS = DISP_X DISP_Y DISP_Z NODES=1, 2<br />
</pre><br />
<br />
Instead of a node list, the nodes to be coupled also can be listed in a node set:<br />
<pre><br />
NODE 1 X 0 Y 0 Z 0<br />
NODE 2 X 0 Y 0 Z 0<br />
.....<br />
ND-SET 1 NAME=NODES2COUPLE<br />
NODE 1 2<br />
<br />
BC-DIRICHLET 1 : MPC-COUPLING<br />
DOFS = DISP_X DISP_Y DISP_Z NODE_SETS= NODE-SET 1<br />
</pre><br />
<br />
== RBE ==<br />
If a rigid body element has to be defined, the Dirichlet condition RBE can be used. To this purpose a master node has to be defined which controls the motion of the hole rigid body. All other nodes compute their displacements depending on the translations and rotations of the master node.<br />
<br />
The section below shows the definition of a 10-noded rigid body.<br />
<pre><br />
BC-DIRICHLET 1 : RBE<br />
MASTERNODE = NODE 1<br />
DOFS = DISP_X DISP_Y DISP_Z NODES = 2,3,4,5,6,7,8,9,10<br />
</pre><br />
<br />
As an example we consider a cantilever loaded by a tip moment. Within the first computation we did not define a rigid body element and so the cantilever curves along its complete length (the red line deviates from the centre line of the green part). For the second run we defined the green part to be a rigid body. As a result, this part does not curve at all (the red line is identical with the centre line). <br />
<br />
<gallery caption="" widths="350px" heights="150px" perrow="3"><br />
File:RBE_initgeo.PNG | initial geometry<br />
File:RBE_no_rbe.PNG | result without RBE <br />
File:RBE_with_rbe.PNG | result with RBE defined<br />
</gallery><br />
<br />
<!--The whole input file can be found in {{PathToBenchmarkExamples}}dirichlet_BCs/SolidHexa1_Cantilever_RBE/RBE.dat.--></div>Bauerhttp://carat.st.bv.tum.de/caratuserswiki/index.php/Users:Geometry_Generation/Design_LoadsUsers:Geometry Generation/Design Loads2017-07-18T15:22:28Z<p>Bauer: /* Example of a Complete Input Block */</p>
<hr />
<div>Neumann boundary conditions can be applied to design elements with respect to their parametric coordinates.<br />
<!--<br />
=== Parameter Description ===<br />
<br />
{| border="1" cellpadding="3" cellspacing="0"<br />
|colspan="3" style="background:#efefef;"| Parameters LOC_COORD<br />
|-<br />
!Parameter <br />
!Description<br />
!Defined for<br />
|-<br />
!u,v,w = ''int''{0;1}<br />
|only valid for = 0 or = 1. 0 denotes the beginning of the knot vector and 1 the end. If nothing is defined, the boundary conditions are applied to the whole patch.<br />
|Designelements with respective dimensions.<br />
|-<br />
!DE-BREP ''int''<br />
|applies the boundary conditions to the BRepElement.<br />
|DesignBRepelement.<br />
|-<br />
|} --><br />
<br />
=== Example of a Complete Input Block ===<br />
<br />
<pre><br />
!===================================================================<br />
! ID TYPE DE-EL LOC COOR D1 D2 D3 VAL<br />
!===================================================================<br />
DE-LOAD 1 DEAD 1 u=10.0 D1=-1 D2=0 D3=0 VAL = 1 <br />
DE-LOAD 2 DEAD 1 D1=-1 D2=0 D3=0 VAL = 1 LD-CURVE 1<br />
DE-LOAD 3 MOMENT 1 DE-BREP 1 D1=-1 D2=0 D3=0 VAL = 1<br />
DE-LOAD 4 DEAD 1 u=5~7 v=3~10 D1=-1 D2=0 D3=0 VAL = 1 !values for u and v have to be knots<br />
<br />
!!Load type not necessarily defined for element type<br />
!DEAD, DEAD_FL + D1=-1 D2=0 D3=0 ! dead load in defined direction<br />
!SNOW, SNOW_FL + D1=-1 D2=0 D3=0 ! snow load from defined direction<br />
!PRES, PRES_FL ! pressure load perpendicular to surface<br />
!MOMENT_TAN ! moment around center line = nurbs curve<br />
!MOMENT_G1, MOMENT_G1_FL ! moment around G1 / g1 (base vector of the geometric description of the element)<br />
!MOMENT_POINT + D1=-1 D2=0 D3=0 ! single moment around defined axis<br />
!MOMENT + D1=-1 D2=0 D3=0 ! (single) moment around defined axis<br />
!PAR_G1 ! load in g1 direction (has to be tested)<br />
!PAR_G2 ! load in g2 direction (has to be tested) <br />
!TEMP ! temperature load, equally distributed (+- epsilon)<br />
!DELTA_TEMP (+ D1=-1 D2=0 D3=0 ) ! temperature load with gradiant over thickness (in defined direction) (+- kappa) <br />
</pre><br />
<br />
In order to activate them, they have to be added to the respective load combination.<br />
<pre><br />
LD-COM 1<br />
TYPE=LD-NODE 1 FAC= 1.0<br />
TYPE=LD-ELEM 3 FAC= 1.0 <br />
</pre></div>Bauerhttp://carat.st.bv.tum.de/caratuserswiki/index.php/Users:General_FEM_Analysis/Elements_Reference/NURBS_BRep_PointUsers:General FEM Analysis/Elements Reference/NURBS BRep Point2017-07-10T15:59:50Z<p>Bauer: /* Parameter Description */</p>
<hr />
<div>== General Description ==<br />
<br />
=== Element Type ===<br />
<br />
* This element provides the geometric description of a point on a NURBS patch <br />
* used for coupling, supports and loads<br />
<br />
=== Degrees of Freedom ===<br />
<br />
The element uses the degrees of freedom of the corresponding NURBS patch(es). <br />
<br />
=== Parameter Description ===<br />
<br />
{| border="1" cellpadding="3" cellspacing="0"<br />
|colspan="3" style="background:#efefef;"| Compulsory Parameters<br />
|-<br />
!Parameter<br />
!Values, Default(*)<br />
!Description<br />
|-<br />
!BREP_TYPE<br />
|COUPLING_DISP <br> COUPLING_ROT <br> COUPLING_DISP_ROT <br> NO_COUPLING <br> SUPPORT <br> SUPPORT_ROT <br> CLAMPED_SUPPORT <br> CONNECT_DISP<br />
|coupling of displacements <br> coupling of rotations <br> coupling of displacements and rotations <br> no coupling <br> blocking of the respective displacements <br> blocking of the rotational degree of freedom, if existing (mainly for BEAM_3D_NURBS_KLRod) <br> clamped, movable support <br> pulling two points together<br />
|-<br />
!BL_FACTOR_DISP<br />
|''float''<br />
|penalty factor for displacements. Youngs's modulus x 100 recommended<br />
|-<br />
!BL_FACTOR_ROT<br />
|''float''<br />
|penalty factor for rotations. Youngs's modulus x 100 recommended<br />
|-<br />
|colspan="3" style="background:#efefef;"| Optional Parameters<br />
|-<br />
!Parameter<br />
!Values, Default(*)<br />
!Description<br />
|-<br />
!NITSCHE<br />
|USER, AUTO, NONE<br />
|not yet implemented<br />
|-<br />
|}<br />
<br />
=== Example of a Complete Input Block ===<br />
<pre><br />
EL-PROP 1 : NURBS_BREP_POINT<br />
BL_FACTOR_DISP = 1e5<br />
BL_FACTOR_ROT = 1e5<br />
BREP_TYPE = COUPLING_DISP_ROT<br />
</pre><br />
<br />
== Element Loading ==<br />
<br />
<br />
== Benchmarks ==<br />
<br />
No benchmark file in the ''Carat++''-repository is yet defined.<br />
<br />
== References ==<br />
<br />
<references/></div>Bauerhttp://carat.st.bv.tum.de/caratuserswiki/index.php/Users:General_FEM_Analysis/Elements_Reference/Cord_3D_NURBSUsers:General FEM Analysis/Elements Reference/Cord 3D NURBS2017-07-10T15:57:27Z<p>Bauer: /* Parameter Description */</p>
<hr />
<div>== General Description ==<br />
<br />
Coded and testing is in progress.<br />
<br />
=== Element Type ===<br />
<br />
* This element provides a geometrically nonlinear, isogeometric spatial cable.<br />
* Mass computation is implemented.<br />
<br />
The formulation is stabilized by an additional bending stiffness based on Raknes et al.<ref>S.B. Raknes, X. Deng, Y. Bazilevs, D.J. Benson, K.M. Mathisen, T. Kvamsdal: „Isogeometric rotation-free bending-stabilized cables: Statics, dynamics, bending strips and coupling with shells“, in „Computer methods in applied mechanics and engineering“, Vol. 263, 2013, Seiten 127-143 http://dx.doi.org/10.1016/j.cma.2013.05.005</ref>. The bending stiffness is computed out of the area with the assumption of a circular cross section. <br />
<br />
=== Degrees of Freedom ===<br />
<br />
The element uses the translatoric degrees of freedom (''Disp_X'', ''Disp_Y'', ''Disp_Z'') at each control point. <br />
<br />
=== Parameter Description ===<br />
<br />
{| border="1" cellpadding="3" cellspacing="0"<br />
|colspan="3" style="background:#efefef;"| Compulsory Parameters<br />
|-<br />
!Parameter<br />
!Values, Default(*)<br />
!Description<br />
|-<br />
!MAT<br />
|EL-MAT ''int''<br />
|Linking to a material input block<br />
|-<br />
!INT_TYPE_CORD_3D_NURBS<br />
|FULL, USER<br />
|Control of integration type. <br />
* FULL: p+1 Gauss points are used (p = polynomial degree of the NURBS patch) <br />
* USER: the optional Parameter GAUSS_U defines the number of Gauss points<br />
|-<br />
!CROSS SECTION <br />
|AREA = ''float''<br />
|area of the cross section<br />
|-<br />
!PRESTRESS<br />
|PRESTRESS = ''float''<br />
|prestress of the cable element<br />
|-<br />
|colspan="3" style="background:#efefef;"| Optional Parameters<br />
|-<br />
!Parameter<br />
!Values, Default(*)<br />
!Description<br />
|-<br />
!GAUSS_U<br />
|GAUSS_U = ''int''<br />
|Number of Gauss point per element. Must only to be defined when INT_TYPE_CORD_3D_NURBS = USER<br />
|-<br />
!PRESTRESS_CURVE<br />
|PRESTRESS_CURVE = ''int''<br />
|if the prestress of the cable element is linked to the load-curve, i.e. scaled by the global load factor. The parameters 1 (yes) and 0 (no, Default) are valid. <br />
|-<br />
|}<br />
<br />
=== Example of a Complete Input Block ===<br />
<pre><br />
EL-PROP 1 : CORD_3D_NURBS<br />
MAT= EL-MAT 1 <br />
AREA=1.0000e-001<br />
PRESTRESS = 100<br />
PRESTRESS_CURVE = 0<br />
INT_TYPE_CORD_3D_NURBS = FULL<br />
!or:<br />
INT_TYPE_CORD_3D_NURBS = USER<br />
GAUSS_U = 3<br />
</pre><br />
<br />
== Element Loading ==<br />
<br />
The Cord_3D_NURBS element is able to carry the following loads:<br />
* dead load<br />
* snow load<br />
* pressure load<br />
* temperature load (not tested)<br />
<br />
== Benchmarks ==<br />
<br />
Currently, no main benchmark file in the ''Carat++''-repository is available.<br />
<br />
== References ==<br />
<br />
<references/></div>Bauerhttp://carat.st.bv.tum.de/caratuserswiki/index.php/Users:Geometry_Generation/Design_SupportsUsers:Geometry Generation/Design Supports2017-07-10T15:50:51Z<p>Bauer: /* Example of a Complete Input Block */</p>
<hr />
<div>Dirichlet boundary conditions can be applied to design elements with respect to their parametric coordinates.<br />
<br />
=== Parameter Description ===<br />
<br />
{| border="1" cellpadding="3" cellspacing="0"<br />
|colspan="3" style="background:#efefef;"| Parameters LOC_COORD<br />
|-<br />
!Parameter <br />
!Description<br />
!Defined for<br />
|-<br />
!u,v,w = ''int''{0;1}<br />
|only valid for = 0 or = 1. 0 denotes the beginning of the knot vector and 1 the end. If nothing is defined, the boundary conditions are applied to the whole patch.<br />
|Designelements with respective dimensions.<br />
|-<br />
!DE-BREP ''int''<br />
|applies the boundary conditions to the BRepElement.<br />
|DesignBRepelement.<br />
|-<br />
|colspan="3" style="background:#efefef;"| Parameters BC<br />
|-<br />
!Parameter <br />
!Description<br />
!Defined for<br />
|-<br />
!DISP_X <br /> DISP_Y <br /> DISP_Z <br /> DISP_ALL<br />
|blocks the displacement of the corresponding nodes in the respective directions <br />
|every element with respective degrees of freedom at the nodes<br />
|-<br />
!DISP_X_NONZERO <br /> DISP_Y_NONZERO <br /> DISP_Z_NONZERO <br />
|sets the displacement of the corresponding nodes in the respective directions to a value defined by a value (syntax: DISP_X_NONZERO = 0.25, ...) or a NURBS_REF in the Designelement definition. Direct initialization by a value overwrites the other.<br />
|every element with respective degrees of freedom at the nodes<br />
|-<br />
!DISP_T1 <br /> DISP_T2 <br /> DISP_T3<br />
|blocks the displacement in the respective directions. Is applied as weak boundary condition and summoned over all gauss points. Directions correspond to the base vectors of the element formulation. <br />
|ElementNURBS_BRep_EdgeCoupling with ElementSurface_NURBS<br />
|-<br />
!DISP_X_COUPLING <br /> DISP_Y_COUPLING <br /> DISP_Z_COUPLING<br />
|coupling of the dofs of the corresponding nodes in respective direction. Usable for clamping without blocking the displacements.<br />
|every element with respective degrees of freedom at the nodes<br />
|-<br />
!CLAMPED<br />
|clampes by blocking the displacements of the first two control points. It is only applicable for open knot vectors.<br />
|every NURBS based element<br />
|-<br />
!CLAMPED_X <br /> CLAMPED_Y <br /> CLAMPED_Z<br />
|clampes by blocking the displacements in the defined directions of the first two control points. Note that, X, Y, Z does not denote the rotation axis.<br />
|every NURBS based element<br />
|-<br />
!CLAMPED_TOR<br />
|blocks the rotational dof rot_tan.<br />
|ElementBeam_3D_NURBS_KLRod,ElementNURBS_BRep_Beam<br />
|-<br />
!CLAMPED_TOR_NONZERO<br />
|sets the rotational dof rot_tan to defined value ( by value or NURBS_REF).<br />
|ElementBeam_3D_NURBS_KLRod<br />
|-<br />
!ROT_X <br /> ROT_Y <br /> ROT_Z <br /> ROT_ALL<br />
|blocks the rotation of the corresponding nodes around the respective axis.<br />
|every element with respective degrees of freedom at the nodes<br />
|-<br />
!ROT_T1 <br /> ROT_T2 <br /> ROT_T3<br />
|blocks the rotation around the respective base vectors of the element formulation. Is applied as weak boundary condition and summoned over all gauss points. <br />
|ElementNURBS_BRep_EdgeCoupling with ElementSurface_NURBS<br />
|-<br />
!DIR_DIFF_SHELL8_X <br /> DIR_DIFF_SHELL8_Y <br /> DIR_DIFF_SHELL8_Z<br />
|<br />
|<br />
|-<br />
|colspan="3" style="background:#efefef;"| Parameters DIRECTION<br />
|-<br />
!Parameter <br />
!Description<br />
!Defined for<br />
|-<br />
!DIRECTION_1 ''= float, float, float'' <br /> DIRECTION_2 ''= float, float, float''<br />
|This condition allows to limit translatoric movements of a point within a plane or a line. To this purpose a plane is defined by the parameter DIRECTION_1 naming the plane normal. If a second plane is defined by specifying DIRECTION_2 the point is only allowed to move an the intersection line of the two planes. <br />
|DISP_X, DISP_Y, DISP_Z<br />
|-<br />
|colspan="3" style="background:#efefef;"| Parameters CURVE<br />
|-<br />
!Parameter <br />
!Description<br />
!Defined for<br />
|-<br />
!LD-CURVE ''int''<br />
|initial displacements are scaled by the global load factor * local load factor of the defined load curve.<br />
|DISP_X_NONZERO, DISP_Y_NONZERO, DISP_Z_NONZERO, DISP_X_NONZERO <br /> CLAMPED_TOR_NONZERO <br /> CLAMPED_X_NONZERO, CLAMPED_Y_NONZERO, CLAMPED_Z_NONZERO<br />
|-<br />
|}<br />
<br />
=== Example of a Complete Input Block ===<br />
<br />
<pre><br />
!===================================================================<br />
! ID DE-EL LOC COORD BC<br />
DE-SUP 1 1 u=0 DISP_X, DISP_Y, DISP_Z<br />
DE-SUP 2 1 u=0 v=1 w=1 DISP_X, DISP_Y, DISP_Z<br />
DE-SUP 3 1 DISP_X, DISP_Y, DISP_Z <br />
DE-SUP 4 1 DE-BREP 1 DISP_T1, DISP_T2, DISP_T3<br />
DE-SUP 5 1 u=0 DISP_X_NONZERO = 0.25 LD-CURVE 2 <br />
DE-SUP 6 1 u=0 DISP_Y_NONZERO, DISP_Z_NONZERO !works only if DE-EL has a Reference-Patch (NURBS_REF) <br />
DE-SUP 7 1 u=0 DISP_X, DISP_Y, DISP_Z DIRECTION_1 = -1,0,1 DIRECTION_2 = 0,1,-1 !nodes can only move in direction of the vector [1,1,1] <br />
</pre><br />
<br />
<!--<br />
!Further boundary types. Not necessarily defined for element type<br />
!DISP_X_COUPLING, DISP_Y_COUPLING, DISP_Z_COUPLING<br />
!DISP_X_NONZERO, DISP_Y_NONZERO, DISP_Z_NONZERO<br />
!DISP_ALL<br />
!CLAMPED_TOR_NONZERO<br />
!CLAMPED_X, CLAMPED_Y, CLAMPED_Z ! blocks the displacement in x, y, resp. z-direction<br />
!CLAMPED_X_NONZERO, CLAMPED_Y_NONZERO, CLAMPED_Z_NONZERO ! applies a defined initial displacement in x, y, resp. z-direction<br />
!ROT_X, ROT_Y, ROT_Z<br />
!ROT_ALL<br />
!ROT_T1, ROT_T2, ROT_T3<br />
!DIR_DIFF_SHELL8_X, DIR_DIFF_SHELL8_Y, DIR_DIFF_SHELL8_Z<br />
--><br />
In order to activate boundary conditions which are not related to DesignBRepelements, they have to be added to the respective load combination.<br />
<pre><br />
LD-COM 1<br />
TYPE=BC-DIRICHLET 1<br />
TYPE=BC-DIRICHLET 2 <br />
TYPE=BC-DIRICHLET 3 <br />
TYPE=BC-DIRICHLET 5 <br />
</pre><br />
<br />
<br />
Automatic coupling of coincidenting control points of different design elements is received by<br />
<br />
<pre><br />
!===================================================================<br />
! ID EL1(Master) EL2 (Slave)<br />
DE-JOINT ALL_COOR<br />
!===================================================================<br />
</pre></div>Bauerhttp://carat.st.bv.tum.de/caratuserswiki/index.php/Users:Geometry_Generation/Design_SupportsUsers:Geometry Generation/Design Supports2017-07-10T15:49:14Z<p>Bauer: /* Parameter Description */</p>
<hr />
<div>Dirichlet boundary conditions can be applied to design elements with respect to their parametric coordinates.<br />
<br />
=== Parameter Description ===<br />
<br />
{| border="1" cellpadding="3" cellspacing="0"<br />
|colspan="3" style="background:#efefef;"| Parameters LOC_COORD<br />
|-<br />
!Parameter <br />
!Description<br />
!Defined for<br />
|-<br />
!u,v,w = ''int''{0;1}<br />
|only valid for = 0 or = 1. 0 denotes the beginning of the knot vector and 1 the end. If nothing is defined, the boundary conditions are applied to the whole patch.<br />
|Designelements with respective dimensions.<br />
|-<br />
!DE-BREP ''int''<br />
|applies the boundary conditions to the BRepElement.<br />
|DesignBRepelement.<br />
|-<br />
|colspan="3" style="background:#efefef;"| Parameters BC<br />
|-<br />
!Parameter <br />
!Description<br />
!Defined for<br />
|-<br />
!DISP_X <br /> DISP_Y <br /> DISP_Z <br /> DISP_ALL<br />
|blocks the displacement of the corresponding nodes in the respective directions <br />
|every element with respective degrees of freedom at the nodes<br />
|-<br />
!DISP_X_NONZERO <br /> DISP_Y_NONZERO <br /> DISP_Z_NONZERO <br />
|sets the displacement of the corresponding nodes in the respective directions to a value defined by a value (syntax: DISP_X_NONZERO = 0.25, ...) or a NURBS_REF in the Designelement definition. Direct initialization by a value overwrites the other.<br />
|every element with respective degrees of freedom at the nodes<br />
|-<br />
!DISP_T1 <br /> DISP_T2 <br /> DISP_T3<br />
|blocks the displacement in the respective directions. Is applied as weak boundary condition and summoned over all gauss points. Directions correspond to the base vectors of the element formulation. <br />
|ElementNURBS_BRep_EdgeCoupling with ElementSurface_NURBS<br />
|-<br />
!DISP_X_COUPLING <br /> DISP_Y_COUPLING <br /> DISP_Z_COUPLING<br />
|coupling of the dofs of the corresponding nodes in respective direction. Usable for clamping without blocking the displacements.<br />
|every element with respective degrees of freedom at the nodes<br />
|-<br />
!CLAMPED<br />
|clampes by blocking the displacements of the first two control points. It is only applicable for open knot vectors.<br />
|every NURBS based element<br />
|-<br />
!CLAMPED_X <br /> CLAMPED_Y <br /> CLAMPED_Z<br />
|clampes by blocking the displacements in the defined directions of the first two control points. Note that, X, Y, Z does not denote the rotation axis.<br />
|every NURBS based element<br />
|-<br />
!CLAMPED_TOR<br />
|blocks the rotational dof rot_tan.<br />
|ElementBeam_3D_NURBS_KLRod,ElementNURBS_BRep_Beam<br />
|-<br />
!CLAMPED_TOR_NONZERO<br />
|sets the rotational dof rot_tan to defined value ( by value or NURBS_REF).<br />
|ElementBeam_3D_NURBS_KLRod<br />
|-<br />
!ROT_X <br /> ROT_Y <br /> ROT_Z <br /> ROT_ALL<br />
|blocks the rotation of the corresponding nodes around the respective axis.<br />
|every element with respective degrees of freedom at the nodes<br />
|-<br />
!ROT_T1 <br /> ROT_T2 <br /> ROT_T3<br />
|blocks the rotation around the respective base vectors of the element formulation. Is applied as weak boundary condition and summoned over all gauss points. <br />
|ElementNURBS_BRep_EdgeCoupling with ElementSurface_NURBS<br />
|-<br />
!DIR_DIFF_SHELL8_X <br /> DIR_DIFF_SHELL8_Y <br /> DIR_DIFF_SHELL8_Z<br />
|<br />
|<br />
|-<br />
|colspan="3" style="background:#efefef;"| Parameters DIRECTION<br />
|-<br />
!Parameter <br />
!Description<br />
!Defined for<br />
|-<br />
!DIRECTION_1 ''= float, float, float'' <br /> DIRECTION_2 ''= float, float, float''<br />
|This condition allows to limit translatoric movements of a point within a plane or a line. To this purpose a plane is defined by the parameter DIRECTION_1 naming the plane normal. If a second plane is defined by specifying DIRECTION_2 the point is only allowed to move an the intersection line of the two planes. <br />
|DISP_X, DISP_Y, DISP_Z<br />
|-<br />
|colspan="3" style="background:#efefef;"| Parameters CURVE<br />
|-<br />
!Parameter <br />
!Description<br />
!Defined for<br />
|-<br />
!LD-CURVE ''int''<br />
|initial displacements are scaled by the global load factor * local load factor of the defined load curve.<br />
|DISP_X_NONZERO, DISP_Y_NONZERO, DISP_Z_NONZERO, DISP_X_NONZERO <br /> CLAMPED_TOR_NONZERO <br /> CLAMPED_X_NONZERO, CLAMPED_Y_NONZERO, CLAMPED_Z_NONZERO<br />
|-<br />
|}<br />
<br />
=== Example of a Complete Input Block ===<br />
<br />
<pre><br />
!===================================================================<br />
! ID DE-EL LOC COORD BC<br />
DE-SUP 1 1 u=0 DISP_X, DISP_Y, DISP_Z<br />
DE-SUP 2 1 u=0 v=1 w=1 DISP_X, DISP_Y, DISP_Z<br />
DE-SUP 3 1 DISP_X, DISP_Y, DISP_Z <br />
DE-SUP 4 1 DE-BREP 1 DISP_T1, DISP_T2, DISP_T3<br />
DE-SUP 5 1 u=0 DISP_X_NONZERO = 0.25 LD-CURVE 2 <br />
DE-SUP 6 1 u=0 DISP_Y_NONZERO, DISP_Z_NONZERO !works only if DE-EL has a Reference-Patch (NURBS_REF) <br />
</pre><br />
<br />
<!--<br />
!Further boundary types. Not necessarily defined for element type<br />
!DISP_X_COUPLING, DISP_Y_COUPLING, DISP_Z_COUPLING<br />
!DISP_X_NONZERO, DISP_Y_NONZERO, DISP_Z_NONZERO<br />
!DISP_ALL<br />
!CLAMPED_TOR_NONZERO<br />
!CLAMPED_X, CLAMPED_Y, CLAMPED_Z ! blocks the displacement in x, y, resp. z-direction<br />
!CLAMPED_X_NONZERO, CLAMPED_Y_NONZERO, CLAMPED_Z_NONZERO ! applies a defined initial displacement in x, y, resp. z-direction<br />
!ROT_X, ROT_Y, ROT_Z<br />
!ROT_ALL<br />
!ROT_T1, ROT_T2, ROT_T3<br />
!DIR_DIFF_SHELL8_X, DIR_DIFF_SHELL8_Y, DIR_DIFF_SHELL8_Z<br />
--><br />
In order to activate boundary conditions which are not related to DesignBRepelements, they have to be added to the respective load combination.<br />
<pre><br />
LD-COM 1<br />
TYPE=BC-DIRICHLET 1<br />
TYPE=BC-DIRICHLET 2 <br />
TYPE=BC-DIRICHLET 3 <br />
TYPE=BC-DIRICHLET 5 <br />
</pre><br />
<br />
<br />
Automatic coupling of coincidenting control points of different design elements is received by<br />
<br />
<pre><br />
!===================================================================<br />
! ID EL1(Master) EL2 (Slave)<br />
DE-JOINT ALL_COOR<br />
!===================================================================<br />
</pre></div>Bauerhttp://carat.st.bv.tum.de/caratuserswiki/index.php/Users:General_FEM_Analysis/BCs_Reference/DirichletUsers:General FEM Analysis/BCs Reference/Dirichlet2017-07-10T14:59:36Z<p>Bauer: /* SPC-DIRECTION */</p>
<hr />
<div>[[Category: Users:General FEM Analysis]]<br />
<br />
== General Info ==<br />
Dirichlet conditions can be divided into three groups:<br />
* single point constraints (SPC) which refer to one point only and<br />
* multiple point constraints (MPC) that perform a kind of coupling by applying the same Dirichlet object to several points.<br />
* The RBE condition builds up the last group, which defines a coupling in between several points, but each point computes its own displacement according to a certain formula.<br />
<br />
<br />
== SPC-ZERO ==<br />
The SPC-ZERO condition is the most frequently used Dirichlet condition. It prescribes zero displacement to certain degrees of freedom of a node. To this purpose it is necessary to list the influenced nodes and the related fixed DOFs inside the Dirichlet block.<br />
<pre><br />
BC-DIRICHLET 1 : SPC-ZERO<br />
NODE 1 DISP_X DISP_Y DISP_Z ! fix all translatoric DOFs for node 1<br />
NODE 2 DISP_X ! only fix the translation in x-direction for node 2<br />
NODE 3 DIR_DIFF_SHELL8_X ! the director related degrees of freedom of the SHELL8 can be equipped with Neumann BCs, too<br />
</pre><br />
<br />
== SPC-NONZERO ==<br />
The SPC-NONZERO condition allows to prescribe a nodal displacement unequal zero (eg. settlement of a support). The handling is quite similar to the SPC-ZERO, but each considered degree of freedom needs to be assigned a value.<br />
<br />
'''REMARK:''' This BC is currently only available for geometrical non-linear computations.<br />
<br />
As an example we regard a cantilever with a prescribed tip displacement of 1.<br />
<br />
{|<br />
| <pre><br />
BC-DIRICHLET 2: SPC-NONZERO<br />
NODE 721 DISP_Z = 1<br />
NODE 722 DISP_Z = 1<br />
NODE 723 DISP_Z = 1<br />
</pre><br />
<br />
| [[File:BCs_nonzero.PNG | 400px]]<br />
|}<br />
<br />
The complete input file can be found in ''CARAT_ROOT/examples/own_examples/dirichlet_bc/cantilever_spc-nonzero''.<br />
<br />
== SPC-DIRECTION ==<br />
This condition allows to limit translatoric movements of a point within a plane or a line. To this purpose a plane is defined by the parameter DIRECTION_1 naming the plane normal. If a second plane is defined by specifying DIRECTION_2 the point is only allowed to move an the intersection line of the two planes.<br />
<br />
This will be shown on a short example. A truss element defined by nodes 1 and 2 is located along the global x-axis. Point 1 is fixed in all three directions and at node 2 a tensile force is applied. As an additional constraint, node 2 is forced to move along the line defined by the vector (1,1,1). To this purpose, two Dirichlet blocks have to be defined. The first one is a SPC-ZERO block fixing node 1 (not listed here), and the second one limiting node 2 to a one dimensional movement using a SPC-DIRECTION constraint:<br />
<pre><br />
BC-DIRICHLET 2: SPC-DIRECTION<br />
DOFS=DISP_X DISP_Y DISP_Z NODES=2 DIRECTION_1 = -1,0,1 DIRECTION_2 = 0,1,-1<br />
</pre><br />
where the vector (1,1,1) is defined indirectly by two directions being normal to it.<br />
<br />
The picture below shows the result with the tip displacement visualized by an arrow. The full input file is available on the SVN server: ''CARAT_ROOT/examples/own_examples/dirichlet_bc/truss_1elem_spc-zero''.<br />
<br />
[[File:SPC-DIRECTION.PNG |200px | Result of a truss equipped with a SPC-DIRECTION condition]]<br />
<br />
If the same directions have to be applied to several nodes this can either be done by listing the node vector inside the BC-block or by using node sets:<br />
<br />
<pre><br />
DOFS=DISP_X DISP_Y DISP_Z NODES=2,3,4 DIRECTION_1 = -1,0,1 DIRECTION_2 = 0,1,-1<br />
DOFS=DISP_X DISP_Y DISP_Z NODE_SETS= NODE-SET 5 DIRECTION_1 = -1,0,1 DIRECTION_2 = 0,1,-1<br />
</pre><br />
<br />
Another method of prescribing a direction is the usage of the nodal director. It either can be defined in reference or in actual configuration:<br />
<pre><br />
DOFS=DISP_X DISP_Y DISP_Z NODES=1 DIRECTION = NODE_DIR_REF<br />
DOFS=DISP_X DISP_Y DISP_Z NODES=2 DIRECTION = NODE_DIR_ACT<br />
</pre><br />
<br />
== MPC-COUPLING ==<br />
An instance of MPC-COUPLING allows degrees of freedom of different nodes to share the same equation number, so they assemble to the same entries inside global matrices and vectors and return identical results. Of course only degrees of freedom of the same type can be coupled.<br />
<br />
An application for a coupling instance might be the modelling of an hinge. Two nodes are defined at the same coordinates and coupled via their translatoric DOFs:<br />
<pre><br />
NODE 1 X 0 Y 0 Z 0<br />
NODE 2 X 0 Y 0 Z 0<br />
.....<br />
BC-DIRICHLET 1 : MPC-COUPLING<br />
DOFS = DISP_X DISP_Y DISP_Z NODES=1, 2<br />
</pre><br />
<br />
Instead of a node list, the nodes to be coupled also can be listed in a node set:<br />
<pre><br />
NODE 1 X 0 Y 0 Z 0<br />
NODE 2 X 0 Y 0 Z 0<br />
.....<br />
ND-SET 1 NAME=NODES2COUPLE<br />
NODE 1 2<br />
<br />
BC-DIRICHLET 1 : MPC-COUPLING<br />
DOFS = DISP_X DISP_Y DISP_Z NODE_SETS= NODE-SET 1<br />
</pre><br />
<br />
== RBE ==<br />
If a rigid body element has to be defined, the Dirichlet condition RBE can be used. To this purpose a master node has to be defined which controls the motion of the hole rigid body. All other nodes compute their displacements depending on the translations and rotations of the master node.<br />
<br />
The section below shows the definition of a 10-noded rigid body.<br />
<pre><br />
BC-DIRICHLET 1 : RBE<br />
MASTERNODE = NODE 1<br />
DOFS = DISP_X DISP_Y DISP_Z NODES = 2,3,4,5,6,7,8,9,10<br />
</pre><br />
<br />
As an example we consider a cantilever loaded by a tip moment. Within the first computation we did not define a rigid body element and so the cantilever curves along its complete length (the red line deviates from the centre line of the green part). For the second run we defined the green part to be a rigid body. As a result, this part does not curve at all (the red line is identical with the centre line). <br />
<br />
<gallery caption="" widths="350px" heights="150px" perrow="3"><br />
File:RBE_initgeo.PNG | initial geometry<br />
File:RBE_no_rbe.PNG | result without RBE <br />
File:RBE_with_rbe.PNG | result with RBE defined<br />
</gallery><br />
<br />
<!--The whole input file can be found in {{PathToBenchmarkExamples}}dirichlet_BCs/SolidHexa1_Cantilever_RBE/RBE.dat.--></div>Bauerhttp://carat.st.bv.tum.de/caratuserswiki/index.php/Users:General_FEM_Analysis/BCs_ReferenceUsers:General FEM Analysis/BCs Reference2017-07-06T07:18:48Z<p>Bauer: /* Load case */</p>
<hr />
<div>[[Category: Users:General FEM Analysis]]<br />
<br />
__FORCETOC__ <br />
<br />
<br />
== Load case ==<br />
A load case object collects all boundary conditions, Dirichlet and Neumann constraints, which define the current problem. A load case block is linked directly into an analysis object. Each Neumann block is separately weighted by a factor FAC.<br />
<br />
The example below shows a load case including a nodal load block, one element load and one set of Dirichlet conditions.<br />
<br />
<pre><br />
LD-COM 1<br />
TYPE = LD-NODE 1 FAC=1.0<br />
TYPE = LD-ELEM 1 FAC=1.0<br />
TYPE = BC-DIRICHLET 1<br />
</pre><br />
<br />
Note that DesignBoundaries for supports do not have to be added to the load case.<br />
<br />
== Dirichlet Boundary Conditions ==<br />
<br />
Here you can find the [[Users:General FEM Analysis/BCs Reference/Dirichlet|Reference Guide for Dirichlet BCs]] based node sets.<br />
<br />
Here you can find the [[Users:Geometry Generation/Design_Supports|Reference Guide for Dirichlet BCs for design elements]].<br />
<br />
<br />
<br />
== Neumann Boundary Conditions ==<br />
<br />
Here you can find the [[Users:General FEM Analysis/BCs Reference/Neumann|Reference Guide for Neumann BCs]] based node sets.<br />
<br />
Here you can find the [[Users:Geometry Generation/Design_Loads|Reference Guide for Neumann BCs for design elements]].</div>Bauerhttp://carat.st.bv.tum.de/caratuserswiki/index.php/Users:Geometry_Generation/Design_SupportsUsers:Geometry Generation/Design Supports2017-07-05T15:45:52Z<p>Bauer: /* Example of a Complete Input Block */</p>
<hr />
<div>Dirichlet boundary conditions can be applied to design elements with respect to their parametric coordinates.<br />
<br />
=== Parameter Description ===<br />
<br />
{| border="1" cellpadding="3" cellspacing="0"<br />
|colspan="3" style="background:#efefef;"| Parameters LOC_COORD<br />
|-<br />
!Parameter <br />
!Description<br />
!Defined for<br />
|-<br />
!u,v,w = ''int''{0;1}<br />
|only valid for = 0 or = 1. 0 denotes the beginning of the knot vector and 1 the end. If nothing is defined, the boundary conditions are applied to the whole patch.<br />
|Designelements with respective dimensions.<br />
|-<br />
!DE-BREP ''int''<br />
|applies the boundary conditions to the BRepElement.<br />
|DesignBRepelement.<br />
|-<br />
|colspan="3" style="background:#efefef;"| Parameters BC<br />
|-<br />
!Parameter <br />
!Description<br />
!Defined for<br />
|-<br />
!DISP_X <br /> DISP_Y <br /> DISP_Z <br /> DISP_ALL<br />
|blocks the displacement of the corresponding nodes in the respective directions <br />
|every element with respective degrees of freedom at the nodes<br />
|-<br />
!DISP_X_NONZERO <br /> DISP_Y_NONZERO <br /> DISP_Z_NONZERO <br />
|sets the displacement of the corresponding nodes in the respective directions to a value defined by a value (syntax: DISP_X_NONZERO = 0.25, ...) or a NURBS_REF in the Designelement definition. Direct initialization by a value overwrites the other.<br />
|every element with respective degrees of freedom at the nodes<br />
|-<br />
!DISP_T1 <br /> DISP_T2 <br /> DISP_T3<br />
|blocks the displacement in the respective directions. Is applied as weak boundary condition and summoned over all gauss points. Directions correspond to the base vectors of the element formulation. <br />
|ElementNURBS_BRep_EdgeCoupling with ElementSurface_NURBS<br />
|-<br />
!DISP_X_COUPLING <br /> DISP_Y_COUPLING <br /> DISP_Z_COUPLING<br />
|coupling of the dofs of the corresponding nodes in respective direction. Usable for clamping without blocking the displacements.<br />
|every element with respective degrees of freedom at the nodes<br />
|-<br />
!CLAMPED<br />
|clampes by blocking the displacements of the first two control points. It is only applicable for open knot vectors.<br />
|every NURBS based element<br />
|-<br />
!CLAMPED_X <br /> CLAMPED_Y <br /> CLAMPED_Z<br />
|clampes by blocking the displacements in the defined directions of the first two control points. Note that, X, Y, Z does not denote the rotation axis.<br />
|every NURBS based element<br />
|-<br />
!CLAMPED_TOR<br />
|blocks the rotational dof rot_tan.<br />
|ElementBeam_3D_NURBS_KLRod,ElementNURBS_BRep_Beam<br />
|-<br />
!CLAMPED_TOR_NONZERO<br />
|sets the rotational dof rot_tan to defined value ( by value or NURBS_REF).<br />
|ElementBeam_3D_NURBS_KLRod<br />
|-<br />
!ROT_X <br /> ROT_Y <br /> ROT_Z <br /> ROT_ALL<br />
|blocks the rotation of the corresponding nodes around the respective axis.<br />
|every element with respective degrees of freedom at the nodes<br />
|-<br />
!ROT_T1 <br /> ROT_T2 <br /> ROT_T3<br />
|blocks the rotation around the respective base vectors of the element formulation. Is applied as weak boundary condition and summoned over all gauss points. <br />
|ElementNURBS_BRep_EdgeCoupling with ElementSurface_NURBS<br />
|-<br />
!DIR_DIFF_SHELL8_X <br /> DIR_DIFF_SHELL8_Y <br /> DIR_DIFF_SHELL8_Z<br />
|<br />
|<br />
|-<br />
|colspan="3" style="background:#efefef;"| Parameters CURVE<br />
|-<br />
!Parameter <br />
!Description<br />
!Defined for<br />
|-<br />
!LD-CURVE ''int''<br />
|initial displacements are scaled by the global load factor * local load factor of the defined load curve.<br />
|DISP_X_NONZERO, DISP_Y_NONZERO, DISP_Z_NONZERO, DISP_X_NONZERO <br /> CLAMPED_TOR_NONZERO <br /> CLAMPED_X_NONZERO, CLAMPED_Y_NONZERO, CLAMPED_Z_NONZERO<br />
|-<br />
|}<br />
<br />
=== Example of a Complete Input Block ===<br />
<br />
<pre><br />
!===================================================================<br />
! ID DE-EL LOC COORD BC<br />
DE-SUP 1 1 u=0 DISP_X, DISP_Y, DISP_Z<br />
DE-SUP 2 1 u=0 v=1 w=1 DISP_X, DISP_Y, DISP_Z<br />
DE-SUP 3 1 DISP_X, DISP_Y, DISP_Z <br />
DE-SUP 4 1 DE-BREP 1 DISP_T1, DISP_T2, DISP_T3<br />
DE-SUP 5 1 u=0 DISP_X_NONZERO = 0.25 LD-CURVE 2 <br />
DE-SUP 6 1 u=0 DISP_Y_NONZERO, DISP_Z_NONZERO !works only if DE-EL has a Reference-Patch (NURBS_REF) <br />
</pre><br />
<br />
<!--<br />
!Further boundary types. Not necessarily defined for element type<br />
!DISP_X_COUPLING, DISP_Y_COUPLING, DISP_Z_COUPLING<br />
!DISP_X_NONZERO, DISP_Y_NONZERO, DISP_Z_NONZERO<br />
!DISP_ALL<br />
!CLAMPED_TOR_NONZERO<br />
!CLAMPED_X, CLAMPED_Y, CLAMPED_Z ! blocks the displacement in x, y, resp. z-direction<br />
!CLAMPED_X_NONZERO, CLAMPED_Y_NONZERO, CLAMPED_Z_NONZERO ! applies a defined initial displacement in x, y, resp. z-direction<br />
!ROT_X, ROT_Y, ROT_Z<br />
!ROT_ALL<br />
!ROT_T1, ROT_T2, ROT_T3<br />
!DIR_DIFF_SHELL8_X, DIR_DIFF_SHELL8_Y, DIR_DIFF_SHELL8_Z<br />
--><br />
In order to activate boundary conditions which are not related to DesignBRepelements, they have to be added to the respective load combination.<br />
<pre><br />
LD-COM 1<br />
TYPE=BC-DIRICHLET 1<br />
TYPE=BC-DIRICHLET 2 <br />
TYPE=BC-DIRICHLET 3 <br />
TYPE=BC-DIRICHLET 5 <br />
</pre><br />
<br />
<br />
Automatic coupling of coincidenting control points of different design elements is received by<br />
<br />
<pre><br />
!===================================================================<br />
! ID EL1(Master) EL2 (Slave)<br />
DE-JOINT ALL_COOR<br />
!===================================================================<br />
</pre></div>Bauer