Skip to content

Commit

Permalink
Add new example
Browse files Browse the repository at this point in the history
  • Loading branch information
mkraska committed Jan 12, 2018
1 parent 17fa2af commit 34f85fd
Show file tree
Hide file tree
Showing 20 changed files with 519 additions and 0 deletions.
101 changes: 101 additions & 0 deletions NonLinear/Cut/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
# Cut Operation: Plasticity and Contact
Tested with CGX 2.13.1 / CCX 2.13

Simplified model of a cut operation, where a C-shaped profile is sheared between two cutting tools. Both tools (knives) are of identical shape. One of them is fixed (entry side) and one moves (exit side).

Only the onset of the process can be represented with the static solution procedure. This, however, is sufficient to derive the load distribution for the tools.

+ Large displacements
+ Plasticity
+ Parametrization using `param.py`
+ Surface-to-surface contact
+ Use of `last iterations` output parameter to show unconverged iterations

File | Contents
:------------- | :-------------
[par.pre.fbd](par.pre.fbd) | Pre-processing script for CGX (parametrized with `param.py`)
[post.fbd](post.fbd) | Post-processing script for CGX
[iter.fbd](iter.fbd)] | CGX script for inspection of unconverged iterations during the solution process
[solve.inp](solve.inp)] | CCX input
[test.py](test.py) | Python script to run the full simulation


## Preprocessing



Parameter | Value | Description
:-- | :-- | :---
`he` | 130. | height of the tool in mm
`wi` | 180. | width of the tool in mm
`th` | 40. | thickness of the tool in mm
`ra` | 4. | end radius of the slot in mm
`phe` | 125. | height of the profile in mm
`pwi` | 70. | width of the profile in mm
`pgap` | 50. | gap (opening) of the C-profile in mm
`pra` | 10. | outer radius of the profile corners in mm
`ss` | 2. | gap between tools in mm

Edit the parameters in `par.pre.fbd` and run the commands

```
> param.py par.pre.fbd
> cgx -b pre.fbd
```
The outer contour and the slot of the tools are generated bottom up using points and lines.
The radii are generated using the `fil` command.


Boundary conditions:
+ Tool 1 is fixed at the lateral surfaces.
+ Tool 2 is subjected to a prescribed displacement under 45° in positive x and negative y direction, applied to the lateral surfaces
+ the profile is constrained in longitudinal direction at x=0

<img src="Refs/parts.png" width="400"><img src="Refs/randb.png" width="400">
<img src="Refs/rand1.png" width="400"><img src="Refs/rand2.png" width="400">

Four contact pairs are defined:
+ outer slot perimeter of tool 1 (MA1) and outer contour of the profile (BlechAussen)
+ outer slot perimeter of tool 2 (MA2) and outer contour of the profile
+ inner slot perimeter of tool 1 (MI1) and inner contour of the profile (BlechInnen)
+ inner slot perimeter of tool 2 (MI2) and inner contour of the profile

<img src="Refs/surf1.png" width="400"><img src="Refs/surf2.png" width="400">
<img src="Refs/surfb.png" width="400">

## Solving

```
> ccx solve
```
While the solution is running (takes a while), you can inspect the progress with the CVG and STA file monitor
```
> monitor.py solve
```
If you change parameters and experience heavy convergence problems then inspecting the intermediate unconverged iterations can help a lot:
```
> cgx -b iter.fbd
```
For the default parameters in the example, convergence isn't really an issue. For such stability to reach, it was essential to
+ place the parts such that they initially touch,
+ deliberately reduce the contact stiffness


<img src="solve.png" title="Convergence history">

## Postprocessing

```
> cgx -b post.fbd
```
Equivalent plastic strain and deformed shape of the profile:

<img src="Refs/blech-pe-1.png" width="400" title="Equivalent plastic strain"><img src="Refs/blech-pe-2.png" width="400" title="Equivalent plastic strain">

Fixed tool: Equivalent stress and maximum principal stress

<img src="Refs/tool1-se.png" width="400" title="Equivalent stress (due to bending and edge pressure)"><img src="Refs/tool1-s1.png" width="400" title="Maximum principal stress">

Moving tool: Equivalent stress and maximum principal stress

<img src="Refs/tool2-se.png" width="400" title="Equivalent stress (due to bending and edge pressure)"><img src="Refs/tool2-s1.png" width="400" title="Maximum principal stress">
Binary file added NonLinear/Cut/Refs/blech-pe-1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added NonLinear/Cut/Refs/blech-pe-2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added NonLinear/Cut/Refs/parts.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added NonLinear/Cut/Refs/rand1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added NonLinear/Cut/Refs/rand2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added NonLinear/Cut/Refs/randb.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added NonLinear/Cut/Refs/surf1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added NonLinear/Cut/Refs/surf2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added NonLinear/Cut/Refs/surfb.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added NonLinear/Cut/Refs/tool1-s1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added NonLinear/Cut/Refs/tool1-se.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added NonLinear/Cut/Refs/tool2-s1.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added NonLinear/Cut/Refs/tool2-se.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
12 changes: 12 additions & 0 deletions NonLinear/Cut/iter.fbd
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
wsize 1400 800
read ResultsForLastIterations.frd
seta ! all
view elem
view disp
view sh
ds -1 e 4
rot -z
zoom 2.5
plot ev +CF3
scal d 10
plus ev +CF1
259 changes: 259 additions & 0 deletions NonLinear/Cut/par.pre.fbd
Original file line number Diff line number Diff line change
@@ -0,0 +1,259 @@
# z in Profillaufrichtung
# x quer
# y nach oben

# <he=130.> height of the tool
# <wi=180.> width of the tool
# <th=40.> thickness of the tool
# <ra=4.> end radius of the slot
# <phe=125.> height of the profile
# <pwi=70.> width of the profile
# <pgap=50.> gap (opening) of the C-profile
# <pth=5.> sheet thickness
# <pra=10.> outer radius of the profile corners
# <ss=2.> gap between tools

# dependent variables
# <off=ra-pth/2.>
# <ya=pwi/2.+off>
# <yi=pwi/2.-pth-off>
# <yc12=pwi/2.-pra>
# <xc12=phe/2.-pra>
# <xa=phe/2.+off>
# <xi=phe/2.-pth-off>
# <xg=pgap/2.-ra-off>


# Kontur
pnt lu <-wi/2.> <-he/2.> 0
pnt mu 0 <-he/2.> 0
pnt lo <-wi/2.> < he/2.> 0
pnt mo 0 < he/2.> 0
pnt p1a 0 <-ya> 0
pnt p2a <-xa> <-ya> 0
pnt p3a <-xa> <ya> 0
pnt p4a <-xg> <ya> 0
pnt p4i <-xg> <yi> 0
pnt p3i <-xi> <yi> 0
pnt p2i <-xi> <-yi> 0
pnt p1i 0 <-yi> 0

# Messer
line ! mo lo
line ! lo lu
line ! lu mu
line ! mu p1a
line ! p1a p2a
line ! p2a p3a
line ! p3a p4a
line ! p4a p4i
line ! p4i p3i
line ! p3i p2i
line ! p2i p1i
line ! p1i mo
fil L005 L006 <pra>
fil L006 L007 <pra>
fil L007 L008 <ra>
fil L008 L009 <ra>
fil L009 L00A <pra-pth>
fil L00A L00B <pra-pth>
del l L008
merg p all

# Kontaktflächen
seta MesserInnen L00B L00I L00A L00H L009 L00G
comp MesserInnen do
seta MesserAussen L00F L007 L00E L006 L00D L005
comp MesserAussen do

plot pa all
plus la all
seto messer1
seto sketch
surf s1 all
setc
copy sketch new mir x a
merg p all
merg l all
swep all new tra 0 0 <th> a
setc

copy messer1 messer2 tra 0 0 <th+ss> a
div all auto 5 30
elty all te10
mesh all
comp messer1 do
comp messer2 do


# profil
seto blech
pnt pp1a 0 <-pwi/2> 0
pnt pp2a <-phe/2> <-pwi/2> 0
pnt pp3a <-phe/2> <pwi/2> 0
pnt pp4a <-pgap/2.> <pwi/2> 0
pnt pp1i 0 <-pwi/2+pth> 0
pnt pp2i <-phe/2+pth> <-pwi/2+pth> 0
pnt pp3i <-phe/2+pth> <pwi/2-pth> 0
pnt pp4i <-pgap/2.> <pwi/2-pth> 0

line l1 pp1a pp2a
line l2 pp2a pp3a
line l3 pp3a pp4a
line l4 pp4a pp4i
line l5 pp4i pp3i
line l6 pp3i pp2i
line l7 pp2i pp1i
line l8 pp1i pp1a
fil l1 l2 <pra>
fil l2 l3 <pra>
fil l5 l6 <pra-pth>
fil l6 l7 <pra-pth>
# Ränder
seta BlechInnen l l5 l6 l7 L05Y L05Z
comp BlechInnen do
seta BlechAussen l l1 l2 l3 L05W L05X
comp BlechAussen do

surf ! blech
swep blech new tra 0 0 <2.*th+ss> a

copy blech new mir x a

elty blech te10
div blech auto 3 10
mesh blech

merg n blech
#move blech tra 0 0 <-th>
comp BlechAussen do
comp BlechInnen do
comp blech do

setc

setr messer1 se blech
# Kontaktflächen
# seta BlechInnen s A025 A02B A026 A02C A027 A02L A02Q A02K A02P A02J
# seta BlechAussen s A02H A02O A02G A02N A02F A021 A029 A022 A02A A0s3

plot f all n
view elem

merg l all
merg p all
merg n all

seti MA1 f MesserAussen messer1
seti MA2 f MesserAussen messer2
seti MI1 f MesserInnen messer1
seti MI2 f MesserInnen messer2

send MA1 abq sur
send MA2 abq sur
send MI1 abq sur
send MI2 abq sur



send BlechAussen abq sur
send BlechInnen abq sur


# sets for constraints
seta Blechrand s A020 A02E
comp Blechrand do
send Blechrand abq nam

# sets for Materials
send messer1 abq nam
send messer2 abq nam
send blech abq nam

# Messer 1 rechts, links, oben, unten
seta m1nodes n messer1
enq m1nodes m1r rec <wi/2.> _ _ 0.1
send m1r abq nam
enq m1nodes m1l rec <-wi/2.> _ _ 0.1
send m1l abq nam
enq m1nodes m1o rec _ <he/2.> _ 0.1
send m1o abq nam
enq m1nodes m1u rec _ <-he/2.> _ 0.1
send m1u abq nam

# Messer 2 rechts, links, oben, unten
seta m2nodes n messer2
enq m2nodes m2r rec <wi/2.> _ _ 0.1
send m2r abq nam
enq m2nodes m2l rec <-wi/2.> _ _ 0.1
send m2l abq nam
enq m2nodes m2o rec _ <he/2.> _ 0.1
send m2o abq nam
enq m2nodes m2u rec _ <-he/2.> _ 0.1
send m2u abq nam

# Messer Außenkanten
seta m1rnodes n m1r m1l m1o m1u
enq m1rnodes m1k rec _ _ 0 0.1
send m1k abq nam
seta m2rnodes n m2r m2l m2o m2u
enq m2rnodes m2k rec _ _ <2.*th+ss> 0.1
send m2k abq nam

move blech tra <off> <-off> 0
move messer2 tra <2.*off> <-2*off> 0

send all abq

# doc images
ulin Parts: Messer1 (gray), Messer2 (red), blech (green)
rot -z
rot r 30
rot u 30
seta ! all
frame
hcpy png
sys mv hcpy_1.png Refs/parts.png

ulin contact surfaces: MI1 (turq.), MA1 (blue)
plot l all n
plus f MI1 t
plus f MA1 b
hcpy png
sys mv hcpy_2.png Refs/surf1.png

ulin contact surfaces: MI2 (turq.), MA2 (blue)
plot l all n
plus f MI2 t
plus f MA2 b
hcpy png
sys mv hcpy_3.png Refs/surf2.png

ulin contact surfaces: BlechInnen (turq.), BlechAussen (blue)
plot l all n
plus f BlechInnen t
plus f BlechAussen b
hcpy png
sys mv hcpy_4.png Refs/surfb.png

ulin conststraint regions of Messer1: m1r (black), m1u (red), m1k (green)
plot l all n
plus n m1r k 4
plus n m1u r 4
plus n m1k g 4
hcpy png
sys mv hcpy_5.png Refs/rand1.png

ulin conststraint regions of Messer2: m2r (black), m2u (red), m2k (green)
plot l all n
plus n m2l k 4
plus n m2o r 4
plus n m2k g 4
hcpy png
sys mv hcpy_6.png Refs/rand2.png

ulin conststraint region: Blechrand
plot l all n
plus n Blechrand r 4
hcpy png
sys mv hcpy_7.png Refs/randb.png
Loading

0 comments on commit 34f85fd

Please sign in to comment.