12.2. B. Implicit Quasistatic Example Problem

This appendix provides an example problem to illustrate the construction of an input file for an analysis. The problem is modeled after a pencil/eraser that is pressed against and rubbed across a tablet. The pencil, eraser and tablet are represented by blocks 1, 2 and 3 respectively. Block 4 is used to apply kinematics directly to the eraser via tied contact between block 4 and block 2. Block 1 is superfluous except when viewed together with blocks 1, 2 and 3. Then they closely resemble a pencil with an eraser on a tablet. The problem demonstrates the overall structure of an input file and includes the use of both tied and frictional contact simultaneously, the multilevel solver, and a linear solver for preconditioning. A schematic of the problem is shown in Fig. 12.3 and the mesh is shown in Fig. 12.4.

../../_images/eraser.png

Fig. 12.3 Eraser schematic; Block 1 (yellow) is pencil, block 2 (red) is eraser, block 3 (gray) is tablet, block 4 (not shown) is tied to eraser and has the kinematics applied to it.

../../_images/eraser_mesh.png

Fig. 12.4 Complete eraser mesh.

The problem kinematics and loading are described briefly here. The loading has two phases: preload and sliding. In the preload phase, the tablet (block 3) is kinematically fixed in the \(x\)-\(y\) plane and a vertical load (in the \(z\)-direction) is applied to the tablet which presses the tablet against the eraser (block 2). The eraser is kinematically fixed to block 4 via tied contact (see Fig. 12.4). Block 4 is held fixed in all three coordinate directions for the compression phase. The initial configuration and deformations of the preload phase are shown in the first two snapshots on the left in Fig. 12.3. In the sliding phase, block 4 is kinematically prescribed to move along the \(x\)-direction, thus sliding or dragging the eraser along the tablet (see Fig. 12.3) while the tablet force is held constant.

The input file is described below, with comments to explain every few lines. Following the description, the full input file is listed again. All character strings in the input file are presented in lowercase, which is an acceptable format in Adagio.

The input file starts with a begin sierra statement, as is required for all input files:

begin sierra eraser

We begin by defining vectors corresponding to the coordinate axes. These vectors/directions will be used to define the input for boundary condition blocks that come later.

define direction X with vector 1.0 0.0 0.0
define direction Y with vector 0.0 1.0 0.0
define direction Z with vector 0.0 0.0 1.0

We now need to define the functions used for this problem. The boundary conditions require a function for the tablet force and the sliding motion. Both the tablet force and sliding motion are prescribed as functions of time.

begin function slide
  type is piecewise linear
  begin values
    0.0      0.0
    1.0      0.0
    2.0      1.0
    3.0      1.0
  end values
end function slide

begin function tablet_force
  type is piecewise linear
  begin values
    0.0      0.0
    1.0      1.0
    3.0      1.0
  end values
end function tablet_force

begin function zero
  type is constant
  begin values
    0.0
  end values
end function zero

The tablet force ramps up over the time interval (0.0, 1.0) and then is held constant over the interval (1.0, 3.0). The sliding function is zero over the time interval (0.0, 1.0) and then it linearly increases over the interval (1.0, 2.0). Next, we define the material properties and models that are used in this problem. In this example, we define two sets of material properties: one is called stiff (pencil, tablet, and block 4), and the second is called soft (eraser). We use a linear elastic constitutive model for both cases.

begin material stiff
  density = 1.0
  begin parameters for model elastic
    youngs modulus = 1.e5
    poissons ratio = 0.3
  end parameters for model elastic
end material stiff

begin material soft
  density = 1.0
  begin parameters for model elastic
    youngs modulus = 1000.
    poissons ratio = 0.3
  end parameters for model elastic
end material soft

Now, we define the finite element mesh. This includes specification of the file that contains the mesh, a list of all the element blocks we will use from the mesh and the material associated with each block. The name of the file is eraser.g. The specification of the database type is optional-ExodusII is the default. Currently, each element block must be defined individually. The tablet, pencil and block 4 all reference the same material description (stiff). The material description is not repeated three times. The material description for stiff appears once and is then referenced three times.

begin finite element model mesh1
  database name = eraser.g
  database type = exodusII
  begin parameters for block block_1 #Pencil
    material = stiff
    model = elastic
  end
  begin parameters for block block_2 #Eraser
    material = soft
    model = elastic
  end
  begin parameters for block block_3 #Tablet
    material = stiff
    model = elastic
  end
  begin parameters for block block_4 #dummy block
    material = stiff
    model = elastic
  end
end finite element model mesh1

At this point we have finished specifying physics-independent quantities. We now want to set up the Adagio procedure and region, along with the time control command block. We start by defining the beginning of the procedure scope, the time control command block, and the beginning of the region scope. Three time stepping command blocks are used in this analysis. The termination time is set to 1.8. Having multiple time blocks is useful because we can make some solver options a function of the time block.

begin adagio procedure agio_procedure
  begin time control
    begin time stepping block preload
      start time = 0.0
      begin parameters for adagio region adagio
        number of time steps = 5
      end parameters for adagio region adagio
    end time stepping block preload
    begin time stepping block slide_1
      start time = 1.0
      begin parameters for adagio region adagio
        number of time steps = 1
      end parameters for adagio region adagio
    end time stepping block slide_1
    begin time stepping block slide_2
      start time = 1.1
      begin parameters for adagio region adagio
        number of time steps = 10
      end parameters for adagio region adagio
    end time stepping block slide_2
    termination time = 1.8
  end time control

  begin adagio region adagio

Next we associate the finite element model we defined above (mesh1) with this Adagio region.

use finite element model mesh1

Now we define the kinematic boundary conditions. First, we prescribe the displacement of surface_200 which is part of block 4. We fix this surface in both the \(x\) and \(z\) directions and prescribe the horizontal displacement along the X-direction using the previously defined functions zero and slide.

### movement of pencil prescribed by block 4
begin prescribed displacement
  surface = surface_200
  direction = X
  function = slide
  scale factor = 3.0
end prescribed displacement
begin fixed displacement
  surface = surface_200
  components = Y Z
end fixed displacement

Next, we fix the tablet and prevent it from moving in the X-Y plane. We do this on all tablet nodes (nodelist_111 and nodelist_112).

### Constraints on tablet
begin fixed displacement
  node set = nodelist_111
  components = X Y
end fixed displacement
begin fixed displacement
  node set = nodelist_112
  components = X Y
end fixed displacement

Finally, we prescribe preload force on the tablet which compresses the tablet against the eraser.

### Tablet force
begin prescribed force
  node set = nodelist_111
  direction = Z
  function = tablet_force
  scale factor = 100.0
end prescribed force

We now define the contact for this problem. Here we need to define tied contact between block 4 and the eraser. In addition, we have frictional sliding contact between the tablet and the eraser.

### block 4 tied to eraser ###
begin contact definition
  #
  # define contact surfaces.
  contact surface surf_200 contains surface_200
  contact surface surf_110 contains surface_110
  contact surface surf_11  contains surface_11 # Tablet
  contact surface surf_10  contains surface_10 # Eraser
  #
  begin interaction
    surfaces = surf_200 surf_110
    friction model = tied
  end interaction

  begin interaction
    surfaces = surf_11 surf_10
    friction model = fric
  end interaction

  begin constant friction model fric
    friction coefficient = 0.8
  end

end contact definition

Now we define what variables we want in the output file and how often we want the output file to be written. The output file will be called eraser.e, and it will be an ExodusII file (the database type command is optional; it defaults to ExodusII). The variables we are requesting are the displacements, velocities, and contact diagnostics at the nodes, and stresses and strains at the elements.

begin results output output_adagio
  database name = eraser.e
  database type = exodusII
  at step 0, increment = 1
  nodal displacement as displ
  nodal velocity as vel
  nodal contact_tangential_direction as cont_tan
  nodal contact_normal_direction as cont_norm
  nodal contact_accumulated_slip_vector as cont_slip_vec
  nodal contact_status as cont_stat
  nodal contact_normal_traction_magnitude as norm_trac_mag
  nodal contact_tangential_traction_magnitude as tan_trac_mag
  nodal contact_incremental_slip_magnitude as cont_Islip_mag
  nodal contact_accumulated_slip as cont_Aslip
  nodal contact_frictional_energy_density as cont_fric_E
  nodal contact_area
  element stress as stress
  element log_strain as strain
end results output output_adagio

The final part of the input deck is the Adagio solver commands. Because we are solving an implicit problem, we must use the solver command block. Nested inside the solver block, we define the control contact block as well as the nonlinear conjugate gradient (CG) solver block.

begin solver
  begin control contact name
    target relative residual = 1e-3
    Maximum Iterations = 200
  end control contact name
  begin cg
    target relative residual = 1.e-4
    begin full tangent preconditioner
      linear solver = feti
    end full tangent preconditioner
  end cg
end solver

After defining the Adagio region and procedure blocks, we close them using the lines:

  end adagio region adagio
end adagio procedure agio_procedure

The final detail that we need to define for this file is the linear solver. In the above solver command block, we included the full tangent preconditioner block, which has a nested command line linear solver = feti. This command line refers to a linear solver called feti that must be defined outside the “Procedure” scope but within the “Sierra” scope and can come at the top of the file before the “Procedure” definition or after it as is the case here. The input feti on this line command is a user defined string that can have any useful label. The following command block defines the linear solver labeled feti. Note that the command block has the label feti at the end of the Begin line and that this label is referred to from within the above full tangent preconditioner command block. The FETI parameters are all set to reasonable values for most problems, so there is no need to set any of them, but if it were necessary to set any of them to non-default values, that would be done within the feti equation solver block.

begin feti equation solver feti
  # use default settings
end feti equation solver feti

Finally, we finish the input file and close the sierra command block:

end sierra eraser