Forum

Interpretation of different ways of setting BC in example files

  1. Alberto Fernandez

    I'm looking at the examples provided with GEBT. I've seen that in some of them point conditions are set as (cantilever5.dat):

    2
    3 0 0 0 0 0
    0 0 0 0 0 0  
    0 0 0 0 0 0
    0 0 0 0 0 0

    Does this mean that the only dof restricted to 0 is 3 (z displacement)?

    If I tried to do that in some of my cases I get an error. Is there a difference with respect to setting the same point as?:

    2
    7 8 3 10 11 12
    0 0 0 0 0 0  
    0 0 0 0 0 0
    0 0 0 0 0 0

     

  2. Qi Wang

    Hi Alberto,

    A sketch for "cantilever5.dat" can be found in the GEBT release folder "doc/GEBTExamples.ppt". Please refer to this PPT for the case description. I attached this slide at the end of this post for your convinient. At Point 2, only a2(z)-direction displacement is prescribed to 0. In addition to Point 2, boundary conditions were also provided at Point 1 and Point 3 so that all the unknows can be uniquely calculated.

    I don't know what exactly your case is. Generally speaking, boundary conditions are needed to solve the partial differential equations (PDE) that govern the solid mechanics problem. There are three types of boundary conditions: 1) Dirichlet , 2) Neumann and 3) mixed of 1) and 2). The boundary conditions should be defined carefully to avoid possible mistakes. For example, at one point the displacement and forces cannot be prescribed at the same time.

    Qi

     

    2017-10-19-00-00-26-Microsoft-PowerPoint.png

  3. Alberto Fernandez

    I follow what you are saying. However, from the manual we have:
    “...where kp no is the key point where the prescribed condition is applied, dof i (i = 1, 2, . . . , 6) are
    the prescribed degrees of freedom and they are six integers with values ranging from 1 to 12”
    I interpreted this as to saying that on a point where we set BC we need to set all of them (there is no indication that we can use 0), either in terms of displacements or forces. From what I see in the examples that seems not to be the case.
    Following those examples, I still do not see what is wrong with my test problem. I’m attaching here an image of the case as well as the .dat file that I used. I get a runtime error: “fortran runtime error: Index '0' of dimension 1 of array 'rhs' below lower bound of 1”. I’ve tried looking at the code but I don’t know much fortran. I assume it is an issue with populating the right hand side of the linear system, but then how does it work with other examples?

     

    test-GEBT.png

  4. Qi Wang

    Hi Alberto,

    To solve a solid mechanics problem, boundary conditions (aka prescribed values) are needed to make the system of equations determinted.

    Specifically to your case, at least 12 boundary conditions are need at two ends of the beam assembly (keypoints 1 and 3). For example, at Keypoint 3, you should define the boundary conditions as:

    3 # point load

    7 8 9 10 11 12

    5e4 0 0 0 0 0

    0 0 0 0 0 0

    0 0 0 0 0 0

    since all six loads, 3 forces and 3 moments, are known at this point and only force along a1 (DOF 7) is non-zero.

    Similarly, 6 boundary conditions should be provided at Keypoint 1 as well. My understanding is that you are trying to fix 3 displacements and 2 rotations but free the rotation about a3 axis. Then the corrseponding boundary conditions should be defined as

    1

    1 2 3 4 5 12

    0 0 0 0 0 0

    0 0 0 0 0 0

    0 0 0 0 0 0

    where 1,2,3 are the 3 DOFs for displacement, 4,5 are the rotation DOFs about a1 and a2 axes, respectively. Since the structure can be freely rotation about a3 axis, then the corresponding (reaction) load, M3, should be zeor, that is, 12.

    Qi

  5. Alberto Fernandez

    That is how I understood it and how I was setting up the problems. My confusion comes from examples where some  BC are not set. For example, in square.dat we have:
    3
    7 0 0 0 0 0
    1000 0 0 0 0 0
    1 0 0 0 0 0
    1 0 0 0 0 0

    I would expect this to be:
    3
    7 8 9 10 11 12
    1000 0 0 0 0 0
    1 0 0 0 0 0
    1 0 0 0 0 0

    Coming back to the example that I created, I don’t see why we would have an ill posed problem without a Dirichlet type of BC for the rotation around a1. The combined effect of imposing displacement in 1 and 2 should restrict rigid body rotation around all axis but the one joining those points.

    Anyhow, at least for me (gebt in Ubuntu 16.04) doing the modifications that you mentioned still does not get the case to run. I’m attaching the modified case file here. The error says:

     Finished reading inputs for the beam analysis.
     ITERATION=           1

     ERROR RETURN FROM MC23A  BECAUSE
               MATRIX IS STRUCTURALLY SINGULAR, RANK =    113
     ERROR RETURN FROM MA28A/AD BECAUSE ERROR RETURN FROM MC23A/AD
      Failure of MA28AD with iflag=-1

  6. Qi Wang

    Alberto,

    I took a quick look at the input file, and spotted those bugs:

    A. In your member definition block:

    1 1 2 1 1 1 4 0

    2 2 3 1 1 1 4 0

    the frame_no, the 6th integer your provided for member 2 is wrong. It should be "2", that is:

    1 1 2 1 1 1 4 0

    2 2 3 1 1 2 4 0

    B. In your frame definition block:

    1

    0.0 1.0 0.0

    1.0 0.0 0.0

    0.0 0.0 -1.0

    1

    0.0 1.0 0.0

    0.0 0.0 -1.0

    -1.0 0.0 0.0

    firstly, the number before second block should be "2", denoting the second frame. Otherwise it overwrites the previous direction cosine matrix.

    Secondly, your calculation of DCM is not correct. My calculation is:

    1

    0.0 -1.0 0.0

    1.0 0.0 0.0

    0.0 0.0 1.0

    2

    0.0 0.0 1.0

    0.0 1.0 0.0

    -1.0 0.0 0.0

    Please correct these bugs then try it using GEBT.

    Qi