├── .DS_Store
├── .gitignore
├── Examples
├── 1Q4_Axi.txt
├── 1Q4_CamClay copy.txt
├── 1Q4_CamClay.txt
├── 1Q4_Plast.txt
├── 1Q4_Plast_DispImp.txt
├── 1elemQ4_DispImp.txt
├── 1elemQ8.txt
├── 1elemQ8_Axis.txt
├── 2T3_DispImp.txt
├── 2elemQ8.txt
├── 4Q4_Plast.txt
├── 4Q4_Plast_PrescDisp.txt
├── 4elemQ8.txt
├── 4elemQ8_DispImp.txt
├── 4elemQ8_DistLoading.txt
├── 4elemQ8_DistLoading_Axisym.txt
├── E1Q4_Axi.txt
├── Example_2D_p542.txt
├── Example_2D_p542_Original.txt
├── Example_2D_p542_ext.txt
├── Example_one_elem_4d.txt
├── Example_two_elem.4d.txt
├── Example_two_elem.txt
├── Example_two_elem_dispImp.txt
├── FEM_1Q4.nb
├── LimeTreatedSoils.txt
└── Oudin_Exemple_plast.nb
├── PostProcessing
├── .idea
│ ├── .name
│ ├── Postprocessing.iml
│ ├── dictionaries
│ │ └── viktor.xml
│ ├── encodings.xml
│ ├── misc.xml
│ ├── modules.xml
│ ├── other.xml
│ ├── scopes
│ │ └── scope_settings.xml
│ ├── testrunner.xml
│ ├── vcs.xml
│ └── workspace.xml
├── Output
│ ├── Deviatoric
│ │ ├── deviatoric (Victors-MacBook-Pro's conflicted copy 2014-04-07 (1)).txt
│ │ ├── deviatoric (Victors-MacBook-Pro's conflicted copy 2014-04-07).txt
│ │ └── deviatoric.txt
│ ├── conntable.txt
│ ├── coordinates.txt
│ ├── displacements.txt
│ ├── displacements2.txt
│ ├── output_increm
│ │ ├── displacements
│ │ │ ├── 0.dat
│ │ │ ├── 1.dat
│ │ │ ├── 10.dat
│ │ │ ├── 100.dat
│ │ │ ├── 101.dat
│ │ │ ├── 102.dat
│ │ │ ├── 103.dat
│ │ │ ├── 104.dat
│ │ │ ├── 105.dat
│ │ │ ├── 106.dat
│ │ │ ├── 107.dat
│ │ │ ├── 108.dat
│ │ │ ├── 109.dat
│ │ │ ├── 11.dat
│ │ │ ├── 110.dat
│ │ │ ├── 111.dat
│ │ │ ├── 112.dat
│ │ │ ├── 113.dat
│ │ │ ├── 114.dat
│ │ │ ├── 115.dat
│ │ │ ├── 116.dat
│ │ │ ├── 117.dat
│ │ │ ├── 118.dat
│ │ │ ├── 119.dat
│ │ │ ├── 12.dat
│ │ │ ├── 120.dat
│ │ │ ├── 121.dat
│ │ │ ├── 122.dat
│ │ │ ├── 123.dat
│ │ │ ├── 124.dat
│ │ │ ├── 125.dat
│ │ │ ├── 126.dat
│ │ │ ├── 127.dat
│ │ │ ├── 128.dat
│ │ │ ├── 129.dat
│ │ │ ├── 13.dat
│ │ │ ├── 130.dat
│ │ │ ├── 131.dat
│ │ │ ├── 132.dat
│ │ │ ├── 133.dat
│ │ │ ├── 134.dat
│ │ │ ├── 135.dat
│ │ │ ├── 136.dat
│ │ │ ├── 137.dat
│ │ │ ├── 138.dat
│ │ │ ├── 139.dat
│ │ │ ├── 14.dat
│ │ │ ├── 140.dat
│ │ │ ├── 141.dat
│ │ │ ├── 142.dat
│ │ │ ├── 143.dat
│ │ │ ├── 144.dat
│ │ │ ├── 145.dat
│ │ │ ├── 146.dat
│ │ │ ├── 147.dat
│ │ │ ├── 148.dat
│ │ │ ├── 149.dat
│ │ │ ├── 15.dat
│ │ │ ├── 150.dat
│ │ │ ├── 151.dat
│ │ │ ├── 152.dat
│ │ │ ├── 153.dat
│ │ │ ├── 154.dat
│ │ │ ├── 155.dat
│ │ │ ├── 156.dat
│ │ │ ├── 157.dat
│ │ │ ├── 158.dat
│ │ │ ├── 159.dat
│ │ │ ├── 16.dat
│ │ │ ├── 160.dat
│ │ │ ├── 161.dat
│ │ │ ├── 162.dat
│ │ │ ├── 163.dat
│ │ │ ├── 164.dat
│ │ │ ├── 165.dat
│ │ │ ├── 166.dat
│ │ │ ├── 167.dat
│ │ │ ├── 168.dat
│ │ │ ├── 169.dat
│ │ │ ├── 17.dat
│ │ │ ├── 170.dat
│ │ │ ├── 171.dat
│ │ │ ├── 172.dat
│ │ │ ├── 173.dat
│ │ │ ├── 174.dat
│ │ │ ├── 175.dat
│ │ │ ├── 176.dat
│ │ │ ├── 177.dat
│ │ │ ├── 178.dat
│ │ │ ├── 179.dat
│ │ │ ├── 18.dat
│ │ │ ├── 180.dat
│ │ │ ├── 181.dat
│ │ │ ├── 182.dat
│ │ │ ├── 183.dat
│ │ │ ├── 184.dat
│ │ │ ├── 185.dat
│ │ │ ├── 186.dat
│ │ │ ├── 187.dat
│ │ │ ├── 188.dat
│ │ │ ├── 189.dat
│ │ │ ├── 19.dat
│ │ │ ├── 190.dat
│ │ │ ├── 191.dat
│ │ │ ├── 192.dat
│ │ │ ├── 193.dat
│ │ │ ├── 194.dat
│ │ │ ├── 195.dat
│ │ │ ├── 196.dat
│ │ │ ├── 197.dat
│ │ │ ├── 198.dat
│ │ │ ├── 199.dat
│ │ │ ├── 2.dat
│ │ │ ├── 20.dat
│ │ │ ├── 200.dat
│ │ │ ├── 21.dat
│ │ │ ├── 22.dat
│ │ │ ├── 23.dat
│ │ │ ├── 24.dat
│ │ │ ├── 25.dat
│ │ │ ├── 26.dat
│ │ │ ├── 27.dat
│ │ │ ├── 28.dat
│ │ │ ├── 29.dat
│ │ │ ├── 3.dat
│ │ │ ├── 30.dat
│ │ │ ├── 31.dat
│ │ │ ├── 32.dat
│ │ │ ├── 33.dat
│ │ │ ├── 34.dat
│ │ │ ├── 35.dat
│ │ │ ├── 36.dat
│ │ │ ├── 37.dat
│ │ │ ├── 38.dat
│ │ │ ├── 39.dat
│ │ │ ├── 4.dat
│ │ │ ├── 40.dat
│ │ │ ├── 41.dat
│ │ │ ├── 42.dat
│ │ │ ├── 43.dat
│ │ │ ├── 44.dat
│ │ │ ├── 45.dat
│ │ │ ├── 46.dat
│ │ │ ├── 47.dat
│ │ │ ├── 48.dat
│ │ │ ├── 49.dat
│ │ │ ├── 5.dat
│ │ │ ├── 50.dat
│ │ │ ├── 51.dat
│ │ │ ├── 52.dat
│ │ │ ├── 53.dat
│ │ │ ├── 54.dat
│ │ │ ├── 55.dat
│ │ │ ├── 56.dat
│ │ │ ├── 57.dat
│ │ │ ├── 58.dat
│ │ │ ├── 59.dat
│ │ │ ├── 6.dat
│ │ │ ├── 60.dat
│ │ │ ├── 61.dat
│ │ │ ├── 62.dat
│ │ │ ├── 63.dat
│ │ │ ├── 64.dat
│ │ │ ├── 65.dat
│ │ │ ├── 66.dat
│ │ │ ├── 67.dat
│ │ │ ├── 68.dat
│ │ │ ├── 69.dat
│ │ │ ├── 7.dat
│ │ │ ├── 70.dat
│ │ │ ├── 71.dat
│ │ │ ├── 72.dat
│ │ │ ├── 73.dat
│ │ │ ├── 74.dat
│ │ │ ├── 75.dat
│ │ │ ├── 76.dat
│ │ │ ├── 77.dat
│ │ │ ├── 78.dat
│ │ │ ├── 79.dat
│ │ │ ├── 8.dat
│ │ │ ├── 80.dat
│ │ │ ├── 81.dat
│ │ │ ├── 82.dat
│ │ │ ├── 83.dat
│ │ │ ├── 84.dat
│ │ │ ├── 85.dat
│ │ │ ├── 86.dat
│ │ │ ├── 87.dat
│ │ │ ├── 88.dat
│ │ │ ├── 89.dat
│ │ │ ├── 9.dat
│ │ │ ├── 90.dat
│ │ │ ├── 91.dat
│ │ │ ├── 92.dat
│ │ │ ├── 93.dat
│ │ │ ├── 94.dat
│ │ │ ├── 95.dat
│ │ │ ├── 96.dat
│ │ │ ├── 97.dat
│ │ │ ├── 98.dat
│ │ │ └── 99.dat
│ │ ├── plastic_strains
│ │ │ ├── 0
│ │ │ ├── 1
│ │ │ ├── 2
│ │ │ ├── 3
│ │ │ ├── 4
│ │ │ ├── 5
│ │ │ ├── 6
│ │ │ ├── 7
│ │ │ ├── 8
│ │ │ ├── 9
│ │ │ ├── 10
│ │ │ ├── 11
│ │ │ ├── 12
│ │ │ ├── 13
│ │ │ ├── 14
│ │ │ ├── 15
│ │ │ ├── 16
│ │ │ ├── 17
│ │ │ ├── 18
│ │ │ ├── 19
│ │ │ ├── 20
│ │ │ ├── 21
│ │ │ ├── 22
│ │ │ ├── 23
│ │ │ ├── 24
│ │ │ ├── 25
│ │ │ ├── 26
│ │ │ ├── 27
│ │ │ ├── 28
│ │ │ ├── 29
│ │ │ ├── 30
│ │ │ ├── 31
│ │ │ ├── 32
│ │ │ ├── 33
│ │ │ ├── 34
│ │ │ ├── 35
│ │ │ ├── 36
│ │ │ ├── 37
│ │ │ ├── 38
│ │ │ ├── 39
│ │ │ ├── 40
│ │ │ ├── 41
│ │ │ ├── 42
│ │ │ ├── 43
│ │ │ ├── 44
│ │ │ ├── 45
│ │ │ ├── 46
│ │ │ ├── 47
│ │ │ ├── 48
│ │ │ ├── 49
│ │ │ ├── 50
│ │ │ ├── 51
│ │ │ ├── 52
│ │ │ ├── 53
│ │ │ ├── 54
│ │ │ ├── 55
│ │ │ ├── 56
│ │ │ ├── 57
│ │ │ ├── 58
│ │ │ ├── 59
│ │ │ ├── 60
│ │ │ ├── 61
│ │ │ ├── 62
│ │ │ ├── 63
│ │ │ ├── 64
│ │ │ ├── 65
│ │ │ ├── 66
│ │ │ ├── 67
│ │ │ ├── 68
│ │ │ ├── 69
│ │ │ ├── 70
│ │ │ ├── 71
│ │ │ ├── 72
│ │ │ ├── 73
│ │ │ ├── 74
│ │ │ ├── 75
│ │ │ ├── 76
│ │ │ ├── 77
│ │ │ ├── 78
│ │ │ ├── 79
│ │ │ ├── 80
│ │ │ ├── 81
│ │ │ ├── 82
│ │ │ ├── 83
│ │ │ ├── 84
│ │ │ ├── 85
│ │ │ ├── 86
│ │ │ ├── 87
│ │ │ ├── 88
│ │ │ ├── 89
│ │ │ ├── 90
│ │ │ ├── 91
│ │ │ ├── 92
│ │ │ ├── 93
│ │ │ ├── 94
│ │ │ ├── 95
│ │ │ ├── 96
│ │ │ ├── 97
│ │ │ ├── 98
│ │ │ ├── 99
│ │ │ ├── 100
│ │ │ ├── 101
│ │ │ ├── 102
│ │ │ ├── 103
│ │ │ ├── 104
│ │ │ ├── 105
│ │ │ ├── 106
│ │ │ ├── 107
│ │ │ ├── 108
│ │ │ ├── 109
│ │ │ ├── 110
│ │ │ ├── 111
│ │ │ ├── 112
│ │ │ ├── 113
│ │ │ ├── 114
│ │ │ ├── 115
│ │ │ ├── 116
│ │ │ ├── 117
│ │ │ ├── 118
│ │ │ ├── 119
│ │ │ ├── 120
│ │ │ ├── 121
│ │ │ ├── 122
│ │ │ ├── 123
│ │ │ ├── 124
│ │ │ ├── 125
│ │ │ ├── 126
│ │ │ ├── 127
│ │ │ ├── 128
│ │ │ ├── 129
│ │ │ ├── 130
│ │ │ ├── 131
│ │ │ ├── 132
│ │ │ ├── 133
│ │ │ ├── 134
│ │ │ ├── 135
│ │ │ ├── 136
│ │ │ ├── 137
│ │ │ ├── 138
│ │ │ ├── 139
│ │ │ ├── 140
│ │ │ ├── 141
│ │ │ ├── 142
│ │ │ ├── 143
│ │ │ ├── 144
│ │ │ ├── 145
│ │ │ ├── 146
│ │ │ ├── 147
│ │ │ ├── 148
│ │ │ ├── 149
│ │ │ ├── 150
│ │ │ ├── 151
│ │ │ ├── 152
│ │ │ ├── 153
│ │ │ ├── 154
│ │ │ ├── 155
│ │ │ ├── 156
│ │ │ ├── 157
│ │ │ ├── 158
│ │ │ ├── 159
│ │ │ ├── 160
│ │ │ ├── 161
│ │ │ ├── 162
│ │ │ ├── 163
│ │ │ ├── 164
│ │ │ ├── 165
│ │ │ ├── 166
│ │ │ ├── 167
│ │ │ ├── 168
│ │ │ ├── 169
│ │ │ ├── 170
│ │ │ ├── 171
│ │ │ ├── 172
│ │ │ ├── 173
│ │ │ ├── 174
│ │ │ ├── 175
│ │ │ ├── 176
│ │ │ ├── 177
│ │ │ ├── 178
│ │ │ ├── 179
│ │ │ ├── 180
│ │ │ ├── 181
│ │ │ ├── 182
│ │ │ ├── 183
│ │ │ ├── 184
│ │ │ ├── 185
│ │ │ ├── 186
│ │ │ ├── 187
│ │ │ ├── 188
│ │ │ ├── 189
│ │ │ ├── 190
│ │ │ ├── 191
│ │ │ ├── 192
│ │ │ ├── 193
│ │ │ ├── 194
│ │ │ ├── 195
│ │ │ ├── 196
│ │ │ ├── 197
│ │ │ ├── 198
│ │ │ ├── 199
│ │ │ └── 200
│ │ ├── reactions
│ │ │ ├── 0.dat
│ │ │ ├── 1.dat
│ │ │ ├── 10.dat
│ │ │ ├── 100.dat
│ │ │ ├── 101.dat
│ │ │ ├── 102.dat
│ │ │ ├── 103.dat
│ │ │ ├── 104.dat
│ │ │ ├── 105.dat
│ │ │ ├── 106.dat
│ │ │ ├── 107.dat
│ │ │ ├── 108.dat
│ │ │ ├── 109.dat
│ │ │ ├── 11.dat
│ │ │ ├── 110.dat
│ │ │ ├── 111.dat
│ │ │ ├── 112.dat
│ │ │ ├── 113.dat
│ │ │ ├── 114.dat
│ │ │ ├── 115.dat
│ │ │ ├── 116.dat
│ │ │ ├── 117.dat
│ │ │ ├── 118.dat
│ │ │ ├── 119.dat
│ │ │ ├── 12.dat
│ │ │ ├── 120.dat
│ │ │ ├── 121.dat
│ │ │ ├── 122.dat
│ │ │ ├── 123.dat
│ │ │ ├── 124.dat
│ │ │ ├── 125.dat
│ │ │ ├── 126.dat
│ │ │ ├── 127.dat
│ │ │ ├── 128.dat
│ │ │ ├── 129.dat
│ │ │ ├── 13.dat
│ │ │ ├── 130.dat
│ │ │ ├── 131.dat
│ │ │ ├── 132.dat
│ │ │ ├── 133.dat
│ │ │ ├── 134.dat
│ │ │ ├── 135.dat
│ │ │ ├── 136.dat
│ │ │ ├── 137.dat
│ │ │ ├── 138.dat
│ │ │ ├── 139.dat
│ │ │ ├── 14.dat
│ │ │ ├── 140.dat
│ │ │ ├── 141.dat
│ │ │ ├── 142.dat
│ │ │ ├── 143.dat
│ │ │ ├── 144.dat
│ │ │ ├── 145.dat
│ │ │ ├── 146.dat
│ │ │ ├── 147.dat
│ │ │ ├── 148.dat
│ │ │ ├── 149.dat
│ │ │ ├── 15.dat
│ │ │ ├── 150.dat
│ │ │ ├── 151.dat
│ │ │ ├── 152.dat
│ │ │ ├── 153.dat
│ │ │ ├── 154.dat
│ │ │ ├── 155.dat
│ │ │ ├── 156.dat
│ │ │ ├── 157.dat
│ │ │ ├── 158.dat
│ │ │ ├── 159.dat
│ │ │ ├── 16.dat
│ │ │ ├── 160.dat
│ │ │ ├── 161.dat
│ │ │ ├── 162.dat
│ │ │ ├── 163.dat
│ │ │ ├── 164.dat
│ │ │ ├── 165.dat
│ │ │ ├── 166.dat
│ │ │ ├── 167.dat
│ │ │ ├── 168.dat
│ │ │ ├── 169.dat
│ │ │ ├── 17.dat
│ │ │ ├── 170.dat
│ │ │ ├── 171.dat
│ │ │ ├── 172.dat
│ │ │ ├── 173.dat
│ │ │ ├── 174.dat
│ │ │ ├── 175.dat
│ │ │ ├── 176.dat
│ │ │ ├── 177.dat
│ │ │ ├── 178.dat
│ │ │ ├── 179.dat
│ │ │ ├── 18.dat
│ │ │ ├── 180.dat
│ │ │ ├── 181.dat
│ │ │ ├── 182.dat
│ │ │ ├── 183.dat
│ │ │ ├── 184.dat
│ │ │ ├── 185.dat
│ │ │ ├── 186.dat
│ │ │ ├── 187.dat
│ │ │ ├── 188.dat
│ │ │ ├── 189.dat
│ │ │ ├── 19.dat
│ │ │ ├── 190.dat
│ │ │ ├── 191.dat
│ │ │ ├── 192.dat
│ │ │ ├── 193.dat
│ │ │ ├── 194.dat
│ │ │ ├── 195.dat
│ │ │ ├── 196.dat
│ │ │ ├── 197.dat
│ │ │ ├── 198.dat
│ │ │ ├── 199.dat
│ │ │ ├── 2.dat
│ │ │ ├── 20.dat
│ │ │ ├── 200.dat
│ │ │ ├── 21.dat
│ │ │ ├── 22.dat
│ │ │ ├── 23.dat
│ │ │ ├── 24.dat
│ │ │ ├── 25.dat
│ │ │ ├── 26.dat
│ │ │ ├── 27.dat
│ │ │ ├── 28.dat
│ │ │ ├── 29.dat
│ │ │ ├── 3.dat
│ │ │ ├── 30.dat
│ │ │ ├── 31.dat
│ │ │ ├── 32.dat
│ │ │ ├── 33.dat
│ │ │ ├── 34.dat
│ │ │ ├── 35.dat
│ │ │ ├── 36.dat
│ │ │ ├── 37.dat
│ │ │ ├── 38.dat
│ │ │ ├── 39.dat
│ │ │ ├── 4.dat
│ │ │ ├── 40.dat
│ │ │ ├── 41.dat
│ │ │ ├── 42.dat
│ │ │ ├── 43.dat
│ │ │ ├── 44.dat
│ │ │ ├── 45.dat
│ │ │ ├── 46.dat
│ │ │ ├── 47.dat
│ │ │ ├── 48.dat
│ │ │ ├── 49.dat
│ │ │ ├── 5.dat
│ │ │ ├── 50.dat
│ │ │ ├── 51.dat
│ │ │ ├── 52.dat
│ │ │ ├── 53.dat
│ │ │ ├── 54.dat
│ │ │ ├── 55.dat
│ │ │ ├── 56.dat
│ │ │ ├── 57.dat
│ │ │ ├── 58.dat
│ │ │ ├── 59.dat
│ │ │ ├── 6.dat
│ │ │ ├── 60.dat
│ │ │ ├── 61.dat
│ │ │ ├── 62.dat
│ │ │ ├── 63.dat
│ │ │ ├── 64.dat
│ │ │ ├── 65.dat
│ │ │ ├── 66.dat
│ │ │ ├── 67.dat
│ │ │ ├── 68.dat
│ │ │ ├── 69.dat
│ │ │ ├── 7.dat
│ │ │ ├── 70.dat
│ │ │ ├── 71.dat
│ │ │ ├── 72.dat
│ │ │ ├── 73.dat
│ │ │ ├── 74.dat
│ │ │ ├── 75.dat
│ │ │ ├── 76.dat
│ │ │ ├── 77.dat
│ │ │ ├── 78.dat
│ │ │ ├── 79.dat
│ │ │ ├── 8.dat
│ │ │ ├── 80.dat
│ │ │ ├── 81.dat
│ │ │ ├── 82.dat
│ │ │ ├── 83.dat
│ │ │ ├── 84.dat
│ │ │ ├── 85.dat
│ │ │ ├── 86.dat
│ │ │ ├── 87.dat
│ │ │ ├── 88.dat
│ │ │ ├── 89.dat
│ │ │ ├── 9.dat
│ │ │ ├── 90.dat
│ │ │ ├── 91.dat
│ │ │ ├── 92.dat
│ │ │ ├── 93.dat
│ │ │ ├── 94.dat
│ │ │ ├── 95.dat
│ │ │ ├── 96.dat
│ │ │ ├── 97.dat
│ │ │ ├── 98.dat
│ │ │ └── 99.dat
│ │ ├── specific_volume
│ │ │ ├── 0.dat
│ │ │ ├── 1.dat
│ │ │ ├── 10.dat
│ │ │ ├── 100.dat
│ │ │ ├── 101.dat
│ │ │ ├── 102.dat
│ │ │ ├── 103.dat
│ │ │ ├── 104.dat
│ │ │ ├── 105.dat
│ │ │ ├── 106.dat
│ │ │ ├── 107.dat
│ │ │ ├── 108.dat
│ │ │ ├── 109.dat
│ │ │ ├── 11.dat
│ │ │ ├── 110.dat
│ │ │ ├── 111.dat
│ │ │ ├── 112.dat
│ │ │ ├── 113.dat
│ │ │ ├── 114.dat
│ │ │ ├── 115.dat
│ │ │ ├── 116.dat
│ │ │ ├── 117.dat
│ │ │ ├── 118.dat
│ │ │ ├── 119.dat
│ │ │ ├── 12.dat
│ │ │ ├── 120.dat
│ │ │ ├── 121.dat
│ │ │ ├── 122.dat
│ │ │ ├── 123.dat
│ │ │ ├── 124.dat
│ │ │ ├── 125.dat
│ │ │ ├── 126.dat
│ │ │ ├── 127.dat
│ │ │ ├── 128.dat
│ │ │ ├── 129.dat
│ │ │ ├── 13.dat
│ │ │ ├── 130.dat
│ │ │ ├── 131.dat
│ │ │ ├── 132.dat
│ │ │ ├── 133.dat
│ │ │ ├── 134.dat
│ │ │ ├── 135.dat
│ │ │ ├── 136.dat
│ │ │ ├── 137.dat
│ │ │ ├── 138.dat
│ │ │ ├── 139.dat
│ │ │ ├── 14.dat
│ │ │ ├── 140.dat
│ │ │ ├── 141.dat
│ │ │ ├── 142.dat
│ │ │ ├── 143.dat
│ │ │ ├── 144.dat
│ │ │ ├── 145.dat
│ │ │ ├── 146.dat
│ │ │ ├── 147.dat
│ │ │ ├── 148.dat
│ │ │ ├── 149.dat
│ │ │ ├── 15.dat
│ │ │ ├── 150.dat
│ │ │ ├── 151.dat
│ │ │ ├── 152.dat
│ │ │ ├── 153.dat
│ │ │ ├── 154.dat
│ │ │ ├── 155.dat
│ │ │ ├── 156.dat
│ │ │ ├── 157.dat
│ │ │ ├── 158.dat
│ │ │ ├── 159.dat
│ │ │ ├── 16.dat
│ │ │ ├── 160.dat
│ │ │ ├── 161.dat
│ │ │ ├── 162.dat
│ │ │ ├── 163.dat
│ │ │ ├── 164.dat
│ │ │ ├── 165.dat
│ │ │ ├── 166.dat
│ │ │ ├── 167.dat
│ │ │ ├── 168.dat
│ │ │ ├── 169.dat
│ │ │ ├── 17.dat
│ │ │ ├── 170.dat
│ │ │ ├── 171.dat
│ │ │ ├── 172.dat
│ │ │ ├── 173.dat
│ │ │ ├── 174.dat
│ │ │ ├── 175.dat
│ │ │ ├── 176.dat
│ │ │ ├── 177.dat
│ │ │ ├── 178.dat
│ │ │ ├── 179.dat
│ │ │ ├── 18.dat
│ │ │ ├── 180.dat
│ │ │ ├── 181.dat
│ │ │ ├── 182.dat
│ │ │ ├── 183.dat
│ │ │ ├── 184.dat
│ │ │ ├── 185.dat
│ │ │ ├── 186.dat
│ │ │ ├── 187.dat
│ │ │ ├── 188.dat
│ │ │ ├── 189.dat
│ │ │ ├── 19.dat
│ │ │ ├── 190.dat
│ │ │ ├── 191.dat
│ │ │ ├── 192.dat
│ │ │ ├── 193.dat
│ │ │ ├── 194.dat
│ │ │ ├── 195.dat
│ │ │ ├── 196.dat
│ │ │ ├── 197.dat
│ │ │ ├── 198.dat
│ │ │ ├── 199.dat
│ │ │ ├── 2.dat
│ │ │ ├── 20.dat
│ │ │ ├── 200.dat
│ │ │ ├── 21.dat
│ │ │ ├── 22.dat
│ │ │ ├── 23.dat
│ │ │ ├── 24.dat
│ │ │ ├── 25.dat
│ │ │ ├── 26.dat
│ │ │ ├── 27.dat
│ │ │ ├── 28.dat
│ │ │ ├── 29.dat
│ │ │ ├── 3.dat
│ │ │ ├── 30.dat
│ │ │ ├── 31.dat
│ │ │ ├── 32.dat
│ │ │ ├── 33.dat
│ │ │ ├── 34.dat
│ │ │ ├── 35.dat
│ │ │ ├── 36.dat
│ │ │ ├── 37.dat
│ │ │ ├── 38.dat
│ │ │ ├── 39.dat
│ │ │ ├── 4.dat
│ │ │ ├── 40.dat
│ │ │ ├── 41.dat
│ │ │ ├── 42.dat
│ │ │ ├── 43.dat
│ │ │ ├── 44.dat
│ │ │ ├── 45.dat
│ │ │ ├── 46.dat
│ │ │ ├── 47.dat
│ │ │ ├── 48.dat
│ │ │ ├── 49.dat
│ │ │ ├── 5.dat
│ │ │ ├── 50.dat
│ │ │ ├── 51.dat
│ │ │ ├── 52.dat
│ │ │ ├── 53.dat
│ │ │ ├── 54.dat
│ │ │ ├── 55.dat
│ │ │ ├── 56.dat
│ │ │ ├── 57.dat
│ │ │ ├── 58.dat
│ │ │ ├── 59.dat
│ │ │ ├── 6.dat
│ │ │ ├── 60.dat
│ │ │ ├── 61.dat
│ │ │ ├── 62.dat
│ │ │ ├── 63.dat
│ │ │ ├── 64.dat
│ │ │ ├── 65.dat
│ │ │ ├── 66.dat
│ │ │ ├── 67.dat
│ │ │ ├── 68.dat
│ │ │ ├── 69.dat
│ │ │ ├── 7.dat
│ │ │ ├── 70.dat
│ │ │ ├── 71.dat
│ │ │ ├── 72.dat
│ │ │ ├── 73.dat
│ │ │ ├── 74.dat
│ │ │ ├── 75.dat
│ │ │ ├── 76.dat
│ │ │ ├── 77.dat
│ │ │ ├── 78.dat
│ │ │ ├── 79.dat
│ │ │ ├── 8.dat
│ │ │ ├── 80.dat
│ │ │ ├── 81.dat
│ │ │ ├── 82.dat
│ │ │ ├── 83.dat
│ │ │ ├── 84.dat
│ │ │ ├── 85.dat
│ │ │ ├── 86.dat
│ │ │ ├── 87.dat
│ │ │ ├── 88.dat
│ │ │ ├── 89.dat
│ │ │ ├── 9.dat
│ │ │ ├── 90.dat
│ │ │ ├── 91.dat
│ │ │ ├── 92.dat
│ │ │ ├── 93.dat
│ │ │ ├── 94.dat
│ │ │ ├── 95.dat
│ │ │ ├── 96.dat
│ │ │ ├── 97.dat
│ │ │ ├── 98.dat
│ │ │ └── 99.dat
│ │ ├── strains
│ │ │ ├── 0
│ │ │ ├── 1
│ │ │ ├── 2
│ │ │ ├── 3
│ │ │ ├── 4
│ │ │ ├── 5
│ │ │ ├── 6
│ │ │ ├── 7
│ │ │ ├── 8
│ │ │ ├── 9
│ │ │ ├── 10
│ │ │ ├── 11
│ │ │ ├── 12
│ │ │ ├── 13
│ │ │ ├── 14
│ │ │ ├── 15
│ │ │ ├── 16
│ │ │ ├── 17
│ │ │ ├── 18
│ │ │ ├── 19
│ │ │ ├── 20
│ │ │ ├── 21
│ │ │ ├── 22
│ │ │ ├── 23
│ │ │ ├── 24
│ │ │ ├── 25
│ │ │ ├── 26
│ │ │ ├── 27
│ │ │ ├── 28
│ │ │ ├── 29
│ │ │ ├── 30
│ │ │ ├── 31
│ │ │ ├── 32
│ │ │ ├── 33
│ │ │ ├── 34
│ │ │ ├── 35
│ │ │ ├── 36
│ │ │ ├── 37
│ │ │ ├── 38
│ │ │ ├── 39
│ │ │ ├── 40
│ │ │ ├── 41
│ │ │ ├── 42
│ │ │ ├── 43
│ │ │ ├── 44
│ │ │ ├── 45
│ │ │ ├── 46
│ │ │ ├── 47
│ │ │ ├── 48
│ │ │ ├── 49
│ │ │ ├── 50
│ │ │ ├── 51
│ │ │ ├── 52
│ │ │ ├── 53
│ │ │ ├── 54
│ │ │ ├── 55
│ │ │ ├── 56
│ │ │ ├── 57
│ │ │ ├── 58
│ │ │ ├── 59
│ │ │ ├── 60
│ │ │ ├── 61
│ │ │ ├── 62
│ │ │ ├── 63
│ │ │ ├── 64
│ │ │ ├── 65
│ │ │ ├── 66
│ │ │ ├── 67
│ │ │ ├── 68
│ │ │ ├── 69
│ │ │ ├── 70
│ │ │ ├── 71
│ │ │ ├── 72
│ │ │ ├── 73
│ │ │ ├── 74
│ │ │ ├── 75
│ │ │ ├── 76
│ │ │ ├── 77
│ │ │ ├── 78
│ │ │ ├── 79
│ │ │ ├── 80
│ │ │ ├── 81
│ │ │ ├── 82
│ │ │ ├── 83
│ │ │ ├── 84
│ │ │ ├── 85
│ │ │ ├── 86
│ │ │ ├── 87
│ │ │ ├── 88
│ │ │ ├── 89
│ │ │ ├── 90
│ │ │ ├── 91
│ │ │ ├── 92
│ │ │ ├── 93
│ │ │ ├── 94
│ │ │ ├── 95
│ │ │ ├── 96
│ │ │ ├── 97
│ │ │ ├── 98
│ │ │ ├── 99
│ │ │ ├── 100
│ │ │ ├── 101
│ │ │ ├── 102
│ │ │ ├── 103
│ │ │ ├── 104
│ │ │ ├── 105
│ │ │ ├── 106
│ │ │ ├── 107
│ │ │ ├── 108
│ │ │ ├── 109
│ │ │ ├── 110
│ │ │ ├── 111
│ │ │ ├── 112
│ │ │ ├── 113
│ │ │ ├── 114
│ │ │ ├── 115
│ │ │ ├── 116
│ │ │ ├── 117
│ │ │ ├── 118
│ │ │ ├── 119
│ │ │ ├── 120
│ │ │ ├── 121
│ │ │ ├── 122
│ │ │ ├── 123
│ │ │ ├── 124
│ │ │ ├── 125
│ │ │ ├── 126
│ │ │ ├── 127
│ │ │ ├── 128
│ │ │ ├── 129
│ │ │ ├── 130
│ │ │ ├── 131
│ │ │ ├── 132
│ │ │ ├── 133
│ │ │ ├── 134
│ │ │ ├── 135
│ │ │ ├── 136
│ │ │ ├── 137
│ │ │ ├── 138
│ │ │ ├── 139
│ │ │ ├── 140
│ │ │ ├── 141
│ │ │ ├── 142
│ │ │ ├── 143
│ │ │ ├── 144
│ │ │ ├── 145
│ │ │ ├── 146
│ │ │ ├── 147
│ │ │ ├── 148
│ │ │ ├── 149
│ │ │ ├── 150
│ │ │ ├── 151
│ │ │ ├── 152
│ │ │ ├── 153
│ │ │ ├── 154
│ │ │ ├── 155
│ │ │ ├── 156
│ │ │ ├── 157
│ │ │ ├── 158
│ │ │ ├── 159
│ │ │ ├── 160
│ │ │ ├── 161
│ │ │ ├── 162
│ │ │ ├── 163
│ │ │ ├── 164
│ │ │ ├── 165
│ │ │ ├── 166
│ │ │ ├── 167
│ │ │ ├── 168
│ │ │ ├── 169
│ │ │ ├── 170
│ │ │ ├── 171
│ │ │ ├── 172
│ │ │ ├── 173
│ │ │ ├── 174
│ │ │ ├── 175
│ │ │ ├── 176
│ │ │ ├── 177
│ │ │ ├── 178
│ │ │ ├── 179
│ │ │ ├── 180
│ │ │ ├── 181
│ │ │ ├── 182
│ │ │ ├── 183
│ │ │ ├── 184
│ │ │ ├── 185
│ │ │ ├── 186
│ │ │ ├── 187
│ │ │ ├── 188
│ │ │ ├── 189
│ │ │ ├── 190
│ │ │ ├── 191
│ │ │ ├── 192
│ │ │ ├── 193
│ │ │ ├── 194
│ │ │ ├── 195
│ │ │ ├── 196
│ │ │ ├── 197
│ │ │ ├── 198
│ │ │ ├── 199
│ │ │ └── 200
│ │ └── stresses
│ │ │ ├── 0
│ │ │ ├── 1
│ │ │ ├── 2
│ │ │ ├── 3
│ │ │ ├── 4
│ │ │ ├── 5
│ │ │ ├── 6
│ │ │ ├── 7
│ │ │ ├── 8
│ │ │ ├── 9
│ │ │ ├── 10
│ │ │ ├── 11
│ │ │ ├── 12
│ │ │ ├── 13
│ │ │ ├── 14
│ │ │ ├── 15
│ │ │ ├── 16
│ │ │ ├── 17
│ │ │ ├── 18
│ │ │ ├── 19
│ │ │ ├── 20
│ │ │ ├── 21
│ │ │ ├── 22
│ │ │ ├── 23
│ │ │ ├── 24
│ │ │ ├── 25
│ │ │ ├── 26
│ │ │ ├── 27
│ │ │ ├── 28
│ │ │ ├── 29
│ │ │ ├── 30
│ │ │ ├── 31
│ │ │ ├── 32
│ │ │ ├── 33
│ │ │ ├── 34
│ │ │ ├── 35
│ │ │ ├── 36
│ │ │ ├── 37
│ │ │ ├── 38
│ │ │ ├── 39
│ │ │ ├── 40
│ │ │ ├── 41
│ │ │ ├── 42
│ │ │ ├── 43
│ │ │ ├── 44
│ │ │ ├── 45
│ │ │ ├── 46
│ │ │ ├── 47
│ │ │ ├── 48
│ │ │ ├── 49
│ │ │ ├── 50
│ │ │ ├── 51
│ │ │ ├── 52
│ │ │ ├── 53
│ │ │ ├── 54
│ │ │ ├── 55
│ │ │ ├── 56
│ │ │ ├── 57
│ │ │ ├── 58
│ │ │ ├── 59
│ │ │ ├── 60
│ │ │ ├── 61
│ │ │ ├── 62
│ │ │ ├── 63
│ │ │ ├── 64
│ │ │ ├── 65
│ │ │ ├── 66
│ │ │ ├── 67
│ │ │ ├── 68
│ │ │ ├── 69
│ │ │ ├── 70
│ │ │ ├── 71
│ │ │ ├── 72
│ │ │ ├── 73
│ │ │ ├── 74
│ │ │ ├── 75
│ │ │ ├── 76
│ │ │ ├── 77
│ │ │ ├── 78
│ │ │ ├── 79
│ │ │ ├── 80
│ │ │ ├── 81
│ │ │ ├── 82
│ │ │ ├── 83
│ │ │ ├── 84
│ │ │ ├── 85
│ │ │ ├── 86
│ │ │ ├── 87
│ │ │ ├── 88
│ │ │ ├── 89
│ │ │ ├── 90
│ │ │ ├── 91
│ │ │ ├── 92
│ │ │ ├── 93
│ │ │ ├── 94
│ │ │ ├── 95
│ │ │ ├── 96
│ │ │ ├── 97
│ │ │ ├── 98
│ │ │ ├── 99
│ │ │ ├── 100
│ │ │ ├── 101
│ │ │ ├── 102
│ │ │ ├── 103
│ │ │ ├── 104
│ │ │ ├── 105
│ │ │ ├── 106
│ │ │ ├── 107
│ │ │ ├── 108
│ │ │ ├── 109
│ │ │ ├── 110
│ │ │ ├── 111
│ │ │ ├── 112
│ │ │ ├── 113
│ │ │ ├── 114
│ │ │ ├── 115
│ │ │ ├── 116
│ │ │ ├── 117
│ │ │ ├── 118
│ │ │ ├── 119
│ │ │ ├── 120
│ │ │ ├── 121
│ │ │ ├── 122
│ │ │ ├── 123
│ │ │ ├── 124
│ │ │ ├── 125
│ │ │ ├── 126
│ │ │ ├── 127
│ │ │ ├── 128
│ │ │ ├── 129
│ │ │ ├── 130
│ │ │ ├── 131
│ │ │ ├── 132
│ │ │ ├── 133
│ │ │ ├── 134
│ │ │ ├── 135
│ │ │ ├── 136
│ │ │ ├── 137
│ │ │ ├── 138
│ │ │ ├── 139
│ │ │ ├── 140
│ │ │ ├── 141
│ │ │ ├── 142
│ │ │ ├── 143
│ │ │ ├── 144
│ │ │ ├── 145
│ │ │ ├── 146
│ │ │ ├── 147
│ │ │ ├── 148
│ │ │ ├── 149
│ │ │ ├── 150
│ │ │ ├── 151
│ │ │ ├── 152
│ │ │ ├── 153
│ │ │ ├── 154
│ │ │ ├── 155
│ │ │ ├── 156
│ │ │ ├── 157
│ │ │ ├── 158
│ │ │ ├── 159
│ │ │ ├── 160
│ │ │ ├── 161
│ │ │ ├── 162
│ │ │ ├── 163
│ │ │ ├── 164
│ │ │ ├── 165
│ │ │ ├── 166
│ │ │ ├── 167
│ │ │ ├── 168
│ │ │ ├── 169
│ │ │ ├── 170
│ │ │ ├── 171
│ │ │ ├── 172
│ │ │ ├── 173
│ │ │ ├── 174
│ │ │ ├── 175
│ │ │ ├── 176
│ │ │ ├── 177
│ │ │ ├── 178
│ │ │ ├── 179
│ │ │ ├── 180
│ │ │ ├── 181
│ │ │ ├── 182
│ │ │ ├── 183
│ │ │ ├── 184
│ │ │ ├── 185
│ │ │ ├── 186
│ │ │ ├── 187
│ │ │ ├── 188
│ │ │ ├── 189
│ │ │ ├── 190
│ │ │ ├── 191
│ │ │ ├── 192
│ │ │ ├── 193
│ │ │ ├── 194
│ │ │ ├── 195
│ │ │ ├── 196
│ │ │ ├── 197
│ │ │ ├── 198
│ │ │ ├── 199
│ │ │ └── 200
│ ├── parameters.txt
│ ├── strains.txt
│ ├── strains.xlsx
│ └── stresses.txt
├── Purge_output
├── Purge_vtkmovie
├── output_vtk_python.py
├── testvtk.txt
├── testvtk.vtk
└── vtk_generator.py
├── PreProcessing
└── Triaxial.gid
│ ├── Triaxial 2.dat
│ ├── Triaxial 3.dat
│ ├── Triaxial copy 2.dat
│ ├── Triaxial copy 3.dat
│ ├── Triaxial.cnd
│ ├── Triaxial.dat
│ ├── Triaxial.dat~
│ ├── Triaxial.geo
│ ├── Triaxial.lin
│ ├── Triaxial.mat
│ ├── Triaxial.msh
│ ├── Triaxial.png
│ ├── Triaxial.prb
│ ├── Triaxial.uni
│ └── Triaxial.vv
├── README.md
├── figures
├── .DS_Store
├── MCC-DP-hybrid-1-01.png
└── PostProcessing-FieldDisp2-small.png
├── libblas.a
├── liblapack.a
├── main.f90
├── subroutines
├── FEM.f90
├── FEM_BackUP
├── GaussJordan.f90
├── GaussJordan2.f90
├── conj_grad.f90
├── control.f90
├── geometry.f90
├── input_bound_cond_GiD.f90
├── input_data_GiD.f90
├── input_examples.f90
├── interface.f90
├── numerical_analysis.f90
├── output.f90
├── output_deviator.f90
├── output_python.f90
├── output_vtk.f90
├── plasticity.f90
├── validation.f90
└── zonetest_sub.f90
├── variables.mod
└── workspace
├── Alloc.f90
├── Alloc2.f90
├── Alloc_CamClay.f90
└── Module.f90
/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viktorrobin/FEM/519c6811c065ae8d896444d976c00c9b7642b79b/.DS_Store
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.out
2 | .DS_Store
3 | .f90~
4 |
--------------------------------------------------------------------------------
/Examples/1Q4_Axi.txt:
--------------------------------------------------------------------------------
1 | 2-D ELASTO-PLASTIC EXAMPLE . SECTION 7.9 . FIG 7.12 P.542
2 | 04 01 03 3 4 1 2 2 2 10 4
3 | 4 0.9794 0.2950 1.288 1 1 1 1
4 | 3
5 | 2 1 100 10000 10
6 | 1 1 100 10000 10
7 | 1 1 100 10000 10
8 | 1 1 100 10000 10
9 | 1 1 1 2 3 4
10 | 1 000.0 0.0
11 | 2 001.0 0.0
12 | 3 001.0 1.0
13 | 4 000.0 1.0
14 | 1 11 0.000000 0.000000
15 | 2 01 0.000000 0.000000
16 | 4 11 0.000000 0.000000
17 | 1
18 | 72000000.0 0.2 0.0 0.0 24.0 0.0 0.0 0.0
19 | INTERNAL PRESSURE
20 | 1 0 0
21 | 3 0.0 -1.0
22 | 0.1 1.0 30 0 0
23 | 0.1 1.0 30 0 0
24 | 0.1 1.0 30 0 0
25 | 0.1 1.0 30 0 0
26 | 0.1 1.0 30 0 0
27 | 0.1 1.0 30 0 0
28 | 0.1 1.0 30 0 0
29 | 0.1 1.0 30 0 0
30 | 0.1 1.0 30 0 0
31 | 0.1 1.0 30 3 3
--------------------------------------------------------------------------------
/Examples/1Q4_CamClay copy.txt:
--------------------------------------------------------------------------------
1 | 2-D ELASTO-PLASTIC EXAMPLE 1 ELEMENT Q4 CAM CLAY
2 | 04 01 03 3 4 1 2 2 5 100 4
3 | 4 0.9794 0.2950 1.288 1 1 1 1
4 | 3
5 | 2 1 100 10000 10
6 | 1 1 100 10000 10
7 | 1 1 100 10000 10
8 | 1 1 100 10000 10
9 | 1 1 1 2 3 4
10 | 1 000.0 0.0
11 | 2 001.0 0.0
12 | 3 001.0 1.0
13 | 4 000.0 1.0
14 | 1 11 0.000000 0.000000
15 | 2 01 0.000000 0.000000
16 | 4 10 0.000000 0.000000
17 | 1
18 | 50000.0 0.2 0.0 0.0 170.0 0.0 30.0 1.602 0.075 0.005 1.13
19 | INTERNAL PRESSURE
20 | 0 0 1
21 | 2
22 | 1 2 3
23 | 300.0 0.0 300.0 0.0
24 | 1 3 4
25 | 300.0 0.0 300.0 0.0
26 |
27 | 1 0 0
28 | 3 0.0 -100.0
29 | 1.0 1.0 30 3 3
30 |
31 |
32 | 0.01 1.0 30 0 0
33 | 0.01 1.0 30 0 0
34 | 0.01 1.0 30 0 0
35 | 0.01 1.0 30 0 0
36 | 0.01 1.0 30 0 0
37 | 0.01 1.0 30 0 0
38 | 0.01 1.0 30 0 0
39 | 0.01 1.0 30 0 0
40 | 0.01 1.0 30 0 0
41 | 0.01 1.0 30 0 0
42 | 0.05 1.0 30 3 3
43 | 0.02 1.0 30 3 3
44 | 0.01 1.0 30 3 3
45 | 0.01 1.0 30 0 0
46 | 0.01 1.0 30 0 0
47 | 0.1 1.0 30 3 3
48 | 0.1 1.0 30 3 3
49 | 0.1 1.0 30 3 3
50 | 0.1 1.0 30 3 3
51 | 0.1 1.0 30 3 3
52 | 0.1 1.0 30 3 3
53 | 0.1 1.0 30 3 3
54 | 0.1 1.0 30 3 3
55 |
--------------------------------------------------------------------------------
/Examples/1Q4_CamClay.txt:
--------------------------------------------------------------------------------
1 | 2-D ELASTO-PLASTIC EXAMPLE 1 ELEMENT Q4 CAM CLAY
2 | 04 01 04 3 4 1 2 2 5 100 4
3 | 4 0.9794 0.2950 1.288 1 1 1 1
4 | 3
5 | 2 1 100 10000 10
6 | 1 1 100 10000 10
7 | 1 1 100 10000 10
8 | 1 1 100 10000 10
9 | 1 1 1 2 3 4
10 | 1 000.0 0.0
11 | 2 001.0 0.0
12 | 3 001.0 1.0
13 | 4 000.0 1.0
14 | 1 11 0.000000 0.000000
15 | 2 01 0.000000 0.000000
16 | 3 01 0.000000 -0.1
17 | 4 11 0.000000 -0.1
18 | 1
19 | 50000.0 0.2 0.0 0.0 170.0 0.0 30.0 1.602 0.075 0.005 1.13
20 | INTERNAL PRESSURE
21 | 0 0 1
22 | 2
23 | 1 2 3
24 | 300.0 0.0 300.0 0.0
25 | 1 3 4
26 | 300.0 0.0 300.0 0.0
27 |
28 | 1 0 0
29 | 3 0.0 -100.0
30 | 1.0 1.0 30 3 3
31 |
32 |
33 | 0.01 1.0 30 0 0
34 | 0.01 1.0 30 0 0
35 | 0.01 1.0 30 0 0
36 | 0.01 1.0 30 0 0
37 | 0.01 1.0 30 0 0
38 | 0.01 1.0 30 0 0
39 | 0.01 1.0 30 0 0
40 | 0.01 1.0 30 0 0
41 | 0.01 1.0 30 0 0
42 | 0.01 1.0 30 0 0
43 | 0.05 1.0 30 3 3
44 | 0.02 1.0 30 3 3
45 | 0.01 1.0 30 3 3
46 | 0.01 1.0 30 0 0
47 | 0.01 1.0 30 0 0
48 | 0.1 1.0 30 3 3
49 | 0.1 1.0 30 3 3
50 | 0.1 1.0 30 3 3
51 | 0.1 1.0 30 3 3
52 | 0.1 1.0 30 3 3
53 | 0.1 1.0 30 3 3
54 | 0.1 1.0 30 3 3
55 | 0.1 1.0 30 3 3
56 |
--------------------------------------------------------------------------------
/Examples/1Q4_Plast.txt:
--------------------------------------------------------------------------------
1 | 2-D ELASTO-PLASTIC EXAMPLE . 1 ELEMENT Q4 PLASTICITE PARFAITE
2 | 04 01 03 2 4 1 2 2 2 1000 3
3 | 4 0.9794 0.2950 1.288 1 1 1 1
4 | 3
5 | 2 1 100 10000 10
6 | 1 1 100 10000 10
7 | 1 1 100 10000 10
8 | 1 1 100 10000 10
9 | 1 1 1 2 3 4
10 | 1 000.0 0.0
11 | 2 001.0 0.0
12 | 3 001.0 1.0
13 | 4 000.0 1.0
14 | 1 11 0.000000 0.000000
15 | 2 01 0.000000 0.000000
16 | 4 11 0.000000 0.000000
17 | 1
18 | 72000.0 0.3 0.0 0.0 24.0 0.0 0.0 0.0
19 | INTERNAL PRESSURE
20 | 1 0 0
21 | 3 0.0 -115.837
22 | 0.1 1.0 30 3 3
23 | 0.1 1.0 30 3 3
24 | 0.1 1.0 30 0 0
25 | 0.1 1.0 30 0 0
26 | 0.1 1.0 30 0 0
27 | 0.1 1.0 30 0 0
28 | 0.1 1.0 30 0 0
29 | 0.1 1.0 30 0 0
30 | 0.1 1.0 30 0 0
31 | 0.1 1.0 30 3 3
32 |
33 |
34 |
35 | 3 0.0 -1.0
36 | 1.0 1.0 30 3 3
37 | 0.6 1.0 30 3 3
38 | 0.1 1.0 30 0 0
39 | 0.1 1.0 30 0 0
40 | 0.1 1.0 30 0 0
41 | 0.1 1.0 30 0 0
42 | 0.1 1.0 30 0 0
43 | 0.1 1.0 30 0 0
44 | 0.1 1.0 30 0 0
45 | 0.1 1.0 30 3 3
46 |
--------------------------------------------------------------------------------
/Examples/1Q4_Plast_DispImp.txt:
--------------------------------------------------------------------------------
1 | 2-D ELASTO-PLASTIC EXAMPLE . 1 ELEMENT Q4 PLASTICITE PARFAITE
2 | 04 01 04 2 4 1 2 2 2 10000 3
3 | 4 0.9794 0.2950 1.288 1 1 1 1
4 | 3
5 | 2 1 100 10000 10
6 | 1 1 100 10000 10
7 | 1 1 100 10000 10
8 | 1 1 100 10000 10
9 | 1 1 1 2 3 4
10 | 1 000.0 0.0
11 | 2 001.0 0.0
12 | 3 001.0 1.0
13 | 4 000.0 1.0
14 | 1 11 0.000000 0.000000
15 | 2 01 0.000000 0.000000
16 | 3 01 0.000000 -0.02
17 | 4 11 0.000000 0.000000
18 | 1
19 | 72000.0 0.3 0.0 0.0 24.0 0.0 0.0 0.0
20 | INTERNAL PRESSURE
21 | 0 0 0
22 | 0.1 1.0 30 3 3
23 | 0.1 1.0 30 3 3
24 | 0.1 1.0 30 0 0
25 | 0.1 1.0 30 0 0
26 | 0.1 1.0 30 0 0
27 | 0.1 1.0 30 0 0
28 | 0.1 1.0 30 0 0
29 | 0.1 1.0 30 0 0
30 | 0.1 1.0 30 0 0
31 | 0.1 1.0 30 3 3
32 |
33 |
34 |
35 | 3 0.0 -1.0
36 | 1.0 1.0 30 3 3
37 | 0.6 1.0 30 3 3
38 | 0.1 1.0 30 0 0
39 | 0.1 1.0 30 0 0
40 | 0.1 1.0 30 0 0
41 | 0.1 1.0 30 0 0
42 | 0.1 1.0 30 0 0
43 | 0.1 1.0 30 0 0
44 | 0.1 1.0 30 0 0
45 | 0.1 1.0 30 3 3
46 |
--------------------------------------------------------------------------------
/Examples/1elemQ4_DispImp.txt:
--------------------------------------------------------------------------------
1 | 2-D ELASTO-PLASTIC EXAMPLE . SECTION 7.9 . FIG 7.12 P.542
2 | 04 01 04 1 4 1 3 2 2 1 3
3 | 4 0.9794 0.2950 1.288 1 1 1 1
4 | 3
5 | 2 1 100 10000 10
6 | 1 1 100 10000 10
7 | 1 1 100 10000 10
8 | 1 1 100 10000 10
9 | 1 1 1 2 3 4
10 | 1 000.0 0.0
11 | 2 001.0 0.0
12 | 3 001.0 1.0
13 | 4 000.0 1.0
14 | 1 11 0.000000 0.000000
15 | 2 01 0.000000 0.000000
16 | 3 01 0.000000 -1.00000
17 | 4 11 0.000000 0.000000
18 | 1
19 | 72000000.0 0.2 0.0 0.0 24.0 0.0 0.0 0.0
20 | INTERNAL PRESSURE
21 | 0 0 0
22 | 1.0 1.0 30 3 3
23 |
--------------------------------------------------------------------------------
/Examples/1elemQ8.txt:
--------------------------------------------------------------------------------
1 | 2-D ELASTO-PLASTIC EXAMPLE . 1 ELEMENT Q8
2 | 08 01 05 2 8 1 3 2 2 1 3
3 | 4 0.9794 0.2950 1.288 1 1 1 1
4 | 3
5 | 2 1 100 10000 10
6 | 1 1 100 10000 10
7 | 1 1 100 10000 10
8 | 1 1 100 10000 10
9 | 1 1 1 2 3 4 5 6 7 8
10 | 1 000.0 0.0
11 | 2 000.5 0.0
12 | 3 001.0 0.0
13 | 4 001.0 0.5
14 | 5 001.0 1.0
15 | 6 000.5 1.0
16 | 7 000.0 1.0
17 | 8 000.0 0.5
18 | 1 11 0.000000 0.000000
19 | 2 11 0.000000 0.000000
20 | 3 11 0.000000 0.000000
21 | 7 11 0.000000 0.000000
22 | 8 11 0.000000 0.000000
23 | 1
24 | 21000.0 0. 0.0 0.0 24.0 0.0 0.0 0.0
25 | INTERNAL PRESSURE
26 | 1 0 0
27 | 5 -10.0 -10.0
28 | 1.0 1.0 30 3 3
29 |
--------------------------------------------------------------------------------
/Examples/1elemQ8_Axis.txt:
--------------------------------------------------------------------------------
1 | 2-D ELASTO-PLASTIC EXAMPLE . 1 ELEMENT Q8 AXIS
2 | 08 01 05 3 8 1 3 2 2 1 4
3 | 4 0.9794 0.2950 1.288 1 1 1 1
4 | 3
5 | 2 1 100 10000 10
6 | 1 1 100 10000 10
7 | 1 1 100 10000 10
8 | 1 1 100 10000 10
9 | 1 1 1 2 3 4 5 6 7 8
10 | 1 000.0 0.0
11 | 2 000.5 0.0
12 | 3 001.0 0.0
13 | 4 001.0 0.5
14 | 5 001.0 1.0
15 | 6 000.5 1.0
16 | 7 000.0 1.0
17 | 8 000.0 0.5
18 | 1 11 0.000000 0.000000
19 | 2 01 0.000000 0.000000
20 | 3 01 0.000000 0.000000
21 | 7 11 0.000000 0.000000
22 | 8 11 0.000000 0.000000
23 | 1
24 | 72000000.0 0.2 0.0 0.0 24.0 0.0 0.0 0.0
25 | INTERNAL PRESSURE
26 | 1 0 0
27 | 5 0.0 -100.0
28 | 1.0 1.0 30 3 3
29 |
--------------------------------------------------------------------------------
/Examples/2T3_DispImp.txt:
--------------------------------------------------------------------------------
1 | 2-D ELASTIC EXAMPLE EMAD
2 | 04 02 04 2 3 1 2 2 2 3 3
3 | 4 0.9794 0.2950 1.288 1 1 1 1
4 | 3
5 | 2 1 100 10000 10
6 | 1 1 100 10000 10
7 | 1 1 100 10000 10
8 | 1 1 100 10000 10
9 | 1 1 1 2 3
10 | 2 1 2 4 3
11 | 1 000.0 0.0
12 | 2 001.0 0.0
13 | 3 000.0 1.0
14 | 4 001.0 1.0
15 | 1 11 0.000000 0.000000
16 | 2 01 0.000000 0.000000
17 | 3 11 0.000000 0.000000
18 | 4 01 0.000000 -0.01000
19 | 1
20 | 00072.0 0.2 0.0 0.0 24.0 0.0 0.0 0.0
21 | INTERNAL PRESSURE
22 | 0 0 0
23 | 0.33 1.0 30 3 3
24 | 0.33 1.0 30 3 3
25 | 0.34 1.0 30 3 3
26 |
--------------------------------------------------------------------------------
/Examples/2elemQ8.txt:
--------------------------------------------------------------------------------
1 | 2-D ELASTO-PLASTIC EXAMPLE . 2 ELEMENT Q8
2 | 08 01 05 1 8 1 3 2 2 1 3
3 | 4 0.9794 0.2950 1.288 1 1 1 1
4 | 3
5 | 2 1 100 10000 10
6 | 1 1 100 10000 10
7 | 1 1 100 10000 10
8 | 1 1 100 10000 10
9 | 1 1 1 2 3 4 5 6 7 8
10 | 1 000.0 0.0
11 | 2 000.5 0.0
12 | 3 001.0 0.0
13 | 4 001.0 0.5
14 | 5 001.0 1.0
15 | 6 000.5 1.0
16 | 7 000.0 1.0
17 | 8 000.0 0.5
18 | 1 11 0.000000 0.000000
19 | 2 01 0.000000 0.000000
20 | 3 01 0.000000 0.000000
21 | 7 11 0.000000 0.000000
22 | 8 11 0.000000 0.000000
23 | 1
24 | 72000000.0 0.2 0.0 0.0 24.0 0.0 0.0 0.0
25 | INTERNAL PRESSURE
26 | 1 0 0
27 | 5 0.0 -100.0
28 | 1.0 1.0 30 3 3
29 |
30 | A FAIRE!!!!!
--------------------------------------------------------------------------------
/Examples/4Q4_Plast.txt:
--------------------------------------------------------------------------------
1 | 2-D ELASTO-PLASTIC EXAMPLE . 4 ELEMENT Q4 PLASTICITE PARFAITE
2 | 09 04 05 3 4 1 2 2 2 100 4
3 | 4 0.9794 0.2950 1.288 1 1 1 1
4 | 3
5 | 2 1 100 10000 10
6 | 1 1 100 10000 10
7 | 1 1 100 10000 10
8 | 1 1 100 10000 10
9 | 1 1 1 5 9 8
10 | 2 1 5 2 6 9
11 | 3 1 9 6 3 7
12 | 4 1 8 9 7 4
13 | 1 000.0 0.0
14 | 2 00400.0 0.0
15 | 3 00400.0 400.0
16 | 4 000.0 400.0
17 | 5 00200.0 0.0
18 | 6 00400.0 200.0
19 | 7 00200.0 400.0
20 | 8 000.0 200.0
21 | 9 00200.0 200.0
22 | 1 11 0.000000 0.000000
23 | 2 01 0.000000 0.000000
24 | 4 10 0.000000 0.000000
25 | 5 01 0.000000 0.000000
26 | 8 10 0.000000 0.000000
27 | 1
28 | 21000.0 0.3 0.0 0.0 15.0 10.0 0.0 0.0
29 | INTERNAL PRESSURE
30 | 0 0 1
31 | 2
32 | 3 3 7
33 | 16.0 0.0 16.0 0.0
34 | 4 7 4
35 | 16.0 0.0 16.0 0.0
36 | 0.1 1.0 30 3 3
37 | 0.1 1.0 30 3 3
38 | 0.1 1.0 30 0 0
39 | 0.1 1.0 30 0 0
40 | 0.1 1.0 30 0 0
41 | 0.1 1.0 30 0 0
42 | 0.1 1.0 30 0 0
43 | 0.1 1.0 30 0 0
44 | 0.1 1.0 30 0 0
45 | 0.1 1.0 30 3 3
46 |
47 |
48 |
49 | 3 0.0 -1.0
50 | 1.0 1.0 30 3 3
51 | 0.6 1.0 30 3 3
52 | 0.1 1.0 30 0 0
53 | 0.1 1.0 30 0 0
54 | 0.1 1.0 30 0 0
55 | 0.1 1.0 30 0 0
56 | 0.1 1.0 30 0 0
57 | 0.1 1.0 30 0 0
58 | 0.1 1.0 30 0 0
59 | 0.1 1.0 30 3 3
60 |
--------------------------------------------------------------------------------
/Examples/4Q4_Plast_PrescDisp.txt:
--------------------------------------------------------------------------------
1 | 2-D ELASTO-PLASTIC EXAMPLE . 4 ELEMENT Q4 PLASTICITE PARFAITE
2 | 09 04 07 3 4 1 2 2 2 1000 4
3 | 4 0.9794 0.2950 1.288 1 1 1 1
4 | 3
5 | 2 1 100 10000 10
6 | 1 1 100 10000 10
7 | 1 1 100 10000 10
8 | 1 1 100 10000 10
9 | 1 1 1 5 9 8
10 | 2 1 5 2 6 9
11 | 3 1 9 6 3 7
12 | 4 1 8 9 7 4
13 | 1 000.0 0.0
14 | 2 00400.0 0.0
15 | 3 00400.0 400.0
16 | 4 000.0 400.0
17 | 5 00200.0 0.0
18 | 6 00400.0 200.0
19 | 7 00200.0 400.0
20 | 8 000.0 200.0
21 | 9 00200.0 200.0
22 | 1 11 0.000000 0.000000
23 | 2 01 0.000000 0.000000
24 | 3 01 0.000000 -0.403048E+02
25 | 4 11 0.000000 -0.403048E+02
26 | 5 01 0.000000 0.000000
27 | 7 01 0.000000 -0.403048E+02
28 | 8 10 0.000000 0.000000
29 | 1
30 | 21000.0 0.3 0.0 0.0 14.0 10.0 0.0 0.0
31 | INTERNAL PRESSURE
32 | 0 0 0
33 | 2
34 | 3 3 7
35 | 20.0 0.0 20.0 0.0
36 | 4 7 4
37 | 20.0 0.0 20.0 0.0
38 | 0.1 1.0 30 3 3
39 | 0.1 1.0 30 3 3
40 | 0.1 1.0 30 0 0
41 | 0.1 1.0 30 0 0
42 | 0.1 1.0 30 0 0
43 | 0.1 1.0 30 0 0
44 | 0.1 1.0 30 0 0
45 | 0.1 1.0 30 0 0
46 | 0.1 1.0 30 0 0
47 | 0.1 1.0 30 3 3
48 |
49 |
50 |
51 | 3 0.0 -1.0
52 | 1.0 1.0 30 3 3
53 | 0.6 1.0 30 3 3
54 | 0.1 1.0 30 0 0
55 | 0.1 1.0 30 0 0
56 | 0.1 1.0 30 0 0
57 | 0.1 1.0 30 0 0
58 | 0.1 1.0 30 0 0
59 | 0.1 1.0 30 0 0
60 | 0.1 1.0 30 0 0
61 | 0.1 1.0 30 3 3
62 |
--------------------------------------------------------------------------------
/Examples/4elemQ8.txt:
--------------------------------------------------------------------------------
1 | 2-D ELASTO-PLASTIC EXAMPLE . 4 ELEMENTS Q8
2 | 21 04 09 1 8 1 3 2 2 300 3
3 | 4 0.9794 0.2950 1.288 1 1 1 1
4 | 3
5 | 2 1 100 10000 10
6 | 1 1 100 10000 10
7 | 1 1 100 10000 10
8 | 1 1 100 10000 10
9 | 1 1 1 2 3 4 5 6 7 8
10 | 2 1 3 9 10 11 12 13 5 4
11 | 3 1 5 13 12 14 15 16 17 18
12 | 4 1 7 6 5 18 17 19 20 21
13 | 1 000.0 0.0
14 | 2 001.0 0.0
15 | 3 002.0 0.0
16 | 4 002.0 1.0
17 | 5 002.0 2.0
18 | 6 001.0 2.0
19 | 7 000.0 2.0
20 | 8 000.0 1.0
21 | 9 003.0 0.0
22 | 10 004.0 0.0
23 | 11 004.0 1.0
24 | 12 004.0 2.0
25 | 13 003.0 2.0
26 | 14 004.0 3.0
27 | 15 004.0 4.0
28 | 16 003.0 4.0
29 | 17 002.0 4.0
30 | 18 002.0 3.0
31 | 19 001.0 4.0
32 | 20 000.0 4.0
33 | 21 000.0 3.0
34 | 1 11 0.000000 0.000000
35 | 2 01 0.000000 0.000000
36 | 3 01 0.000000 0.000000
37 | 7 11 0.000000 0.000000
38 | 8 11 0.000000 0.000000
39 | 9 01 0.000000 0.000000
40 | 10 01 0.000000 0.000000
41 | 20 11 0.000000 0.000000
42 | 21 11 0.000000 0.000000
43 | 1
44 | 72000.0 0.3 0.0 0.0 24.0 0.0 0.0 0.0
45 | INTERNAL PRESSURE
46 | 1 0 0
47 | 15 0.0 -20.0
48 | 1.0 1.0 30 3 3
49 |
--------------------------------------------------------------------------------
/Examples/4elemQ8_DispImp.txt:
--------------------------------------------------------------------------------
1 | 2-D ELASTO-PLASTIC EXAMPLE . 4 ELEMENTS Q8
2 | 21 04 13 1 8 1 3 2 2 500 3
3 | 4 0.9794 0.2950 1.288 1 1 1 1
4 | 3
5 | 2 1 100 10000 10
6 | 1 1 100 10000 10
7 | 1 1 100 10000 10
8 | 1 1 100 10000 10
9 | 1 1 1 2 3 4 5 6 7 8
10 | 2 1 3 9 10 11 12 13 5 4
11 | 3 1 5 13 12 14 15 16 17 18
12 | 4 1 7 6 5 18 17 19 20 21
13 | 1 000.0 0.0
14 | 2 001.0 0.0
15 | 3 002.0 0.0
16 | 4 002.0 1.0
17 | 5 002.0 2.0
18 | 6 001.0 2.0
19 | 7 000.0 2.0
20 | 8 000.0 1.0
21 | 9 003.0 0.0
22 | 10 004.0 0.0
23 | 11 004.0 1.0
24 | 12 004.0 2.0
25 | 13 003.0 2.0
26 | 14 004.0 3.0
27 | 15 004.0 4.0
28 | 16 003.0 4.0
29 | 17 002.0 4.0
30 | 18 002.0 3.0
31 | 19 001.0 4.0
32 | 20 000.0 4.0
33 | 21 000.0 3.0
34 | 1 11 0.000000 0.000000
35 | 2 01 0.000000 0.000000
36 | 3 01 0.000000 0.000000
37 | 7 11 0.000000 0.000000
38 | 8 11 0.000000 0.000000
39 | 9 01 0.000000 0.000000
40 | 10 01 0.000000 0.000000
41 | 15 01 0.00000 -0.0319604
42 | 16 01 0.00000 -0.0319604
43 | 17 01 0.00000 -0.0319604
44 | 19 01 0.00000 -0.0319604
45 | 20 11 0.000000 -0.0319604
46 | 21 11 0.000000 0.000000
47 | 1
48 | 72000.0 0.2 0.0 0.0 24.0 0.0 0.0 0.0
49 | INTERNAL PRESSURE
50 | 0 0 0
51 |
--------------------------------------------------------------------------------
/Examples/4elemQ8_DistLoading.txt:
--------------------------------------------------------------------------------
1 | 2-D ELASTO-PLASTIC EXAMPLE . 4 ELEMENTS Q8
2 | 21 04 09 2 8 1 3 2 2 10 3
3 | 4 0.9794 0.2950 1.288 1 1 1 1
4 | 3
5 | 2 1 100 10000 10
6 | 1 1 100 10000 10
7 | 1 1 100 10000 10
8 | 1 1 100 10000 10
9 | 1 1 1 2 3 4 5 6 7 8
10 | 2 1 3 9 10 11 12 13 5 4
11 | 3 1 5 13 12 14 15 16 17 18
12 | 4 1 7 6 5 18 17 19 20 21
13 | 1 000.0 0.0
14 | 2 001.0 0.0
15 | 3 002.0 0.0
16 | 4 002.0 1.0
17 | 5 002.0 2.0
18 | 6 001.0 2.0
19 | 7 000.0 2.0
20 | 8 000.0 1.0
21 | 9 003.0 0.0
22 | 10 004.0 0.0
23 | 11 004.0 1.0
24 | 12 004.0 2.0
25 | 13 003.0 2.0
26 | 14 004.0 3.0
27 | 15 004.0 4.0
28 | 16 003.0 4.0
29 | 17 002.0 4.0
30 | 18 002.0 3.0
31 | 19 001.0 4.0
32 | 20 000.0 4.0
33 | 21 000.0 3.0
34 | 1 11 0.000000 0.000000
35 | 2 01 0.000000 0.000000
36 | 3 01 0.000000 0.000000
37 | 7 11 0.000000 0.000000
38 | 8 11 0.000000 0.000000
39 | 9 01 0.000000 0.000000
40 | 10 01 0.000000 0.000000
41 | 20 11 0.000000 0.000000
42 | 21 11 0.000000 0.000000
43 | 1
44 | 72000.0 0.2 0.0 0.0 24.0 0.0 0.0 0.0
45 | INTERNAL PRESSURE
46 | 0 0 1
47 | 2
48 | 2 10 11 12
49 | 25.0 0.0 25.0 0.0 25.0 0.0
50 | 3 12 14 15
51 | 25.0 0.0 25.0 0.0 25.0 0.0
52 | 0.5 1.0 30 3 3
53 | 0.5 1.0 30 3 3
54 |
55 |
--------------------------------------------------------------------------------
/Examples/4elemQ8_DistLoading_Axisym.txt:
--------------------------------------------------------------------------------
1 | 2-D ELASTO-PLASTIC EXAMPLE . 4 ELEMENTS Q8 en Axysymetrie
2 | 21 04 09 3 8 1 3 2 2 2 4
3 | 4 0.9794 0.2950 1.288 1 1 1 1
4 | 3
5 | 2 1 100 10000 10
6 | 1 1 100 10000 10
7 | 1 1 100 10000 10
8 | 1 1 100 10000 10
9 | 1 1 1 2 3 4 5 6 7 8
10 | 2 1 3 9 10 11 12 13 5 4
11 | 3 1 5 13 12 14 15 16 17 18
12 | 4 1 7 6 5 18 17 19 20 21
13 | 1 000.0 0.0
14 | 2 001.0 0.0
15 | 3 002.0 0.0
16 | 4 002.0 1.0
17 | 5 002.0 2.0
18 | 6 001.0 2.0
19 | 7 000.0 2.0
20 | 8 000.0 1.0
21 | 9 003.0 0.0
22 | 10 004.0 0.0
23 | 11 004.0 1.0
24 | 12 004.0 2.0
25 | 13 003.0 2.0
26 | 14 004.0 3.0
27 | 15 004.0 4.0
28 | 16 003.0 4.0
29 | 17 002.0 4.0
30 | 18 002.0 3.0
31 | 19 001.0 4.0
32 | 20 000.0 4.0
33 | 21 000.0 3.0
34 | 1 11 0.000000 0.000000
35 | 2 01 0.000000 0.000000
36 | 3 01 0.000000 0.000000
37 | 7 11 0.000000 0.000000
38 | 8 11 0.000000 0.000000
39 | 9 01 0.000000 0.000000
40 | 10 01 0.000000 0.000000
41 | 20 11 0.000000 0.000000
42 | 21 11 0.000000 0.000000
43 | 1
44 | 72000000.0 0.2 0.0 0.0 24.0 0.0 0.0 0.0
45 | INTERNAL PRESSURE
46 | 0 0 1
47 | 2
48 | 2 10 11 12
49 | 10.0 0.0 10.0 0.0 10.0 0.0
50 | 3 12 14 15
51 | 100.0 0.0 10.0 0.0 10.0 0.0
52 | 0.5 1.0 30 3 3
53 | 0.5 1.0 30 3 3
54 |
--------------------------------------------------------------------------------
/Examples/E1Q4_Axi.txt:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viktorrobin/FEM/519c6811c065ae8d896444d976c00c9b7642b79b/Examples/E1Q4_Axi.txt
--------------------------------------------------------------------------------
/Examples/Example_2D_p542.txt:
--------------------------------------------------------------------------------
1 | 2-D ELASTO-PLASTIC EXAMPLE . SECTION 7.9 . FIG 7.12 P.542
2 | 51 12 18 2 8 1 3 2 2 10 3
3 | 4 0.9794 0.2950 1.288 1 1 1 1
4 | 3
5 | 2 1 100 10000 10
6 | 1 1 100 10000 10
7 | 1 1 100 10000 10
8 | 1 1 100 10000 10
9 | 1 1 1 8 12 13 14 9 3 2
10 | 2 1 3 9 14 15 16 10 5 4
11 | 3 1 5 10 16 17 18 11 7 6
12 | 4 1 12 19 23 24 25 20 14 13
13 | 5 1 14 20 25 26 27 21 16 15
14 | 6 1 16 21 27 28 29 22 18 17
15 | 7 1 23 30 34 35 36 31 25 24
16 | 8 1 25 31 36 37 38 32 27 26
17 | 9 1 27 32 38 39 40 33 29 28
18 | 10 1 34 41 45 46 47 42 36 35
19 | 11 1 36 42 47 48 49 43 38 37
20 | 12 1 38 43 49 50 51 44 40 39
21 | 1 100.0 0.0
22 | 2 96.592 25.882
23 | 3 86.602 50.0
24 | 4 70.710 70.710
25 | 5 50.0 86.602
26 | 6 25.882 96.592
27 | 7 0.0 100.0
28 | 8 110.0 0.0
29 | 9 95.263 55.0
30 | 10 55.0 95.263
31 | 11 0.0 110.0
32 | 12 120.0 0.0
33 | 13 115.911 31.058
34 | 14 103.923 60.0
35 | 15 84.853 84.853
36 | 16 60.0 103.923
37 | 17 31.058 115.911
38 | 18 0.0 120.0
39 | 19 130.0 0.0
40 | 20 112.583 65.0
41 | 21 65.0 112.583
42 | 22 0.0 130.0
43 | 23 140.0 0.0
44 | 24 135.230 36.234
45 | 25 121.243 70.0
46 | 26 98.995 98.995
47 | 27 70.0 121.243
48 | 28 36.234 135.230
49 | 29 0.0 140.0
50 | 30 155.0 0.0
51 | 31 134.234 77.5
52 | 32 77.5 134.234
53 | 33 0.0 155.0
54 | 34 170.0 0.0
55 | 35 164.207 43.999
56 | 36 147.224 85.0
57 | 37 120.208 120.208
58 | 38 85.0 147.224
59 | 39 43.999 164.207
60 | 40 0.0 170.0
61 | 41 185.0 0.0
62 | 42 160.215 92.5
63 | 43 92.5 160.215
64 | 44 0.0 185.0
65 | 45 200.0 0.0
66 | 46 193.185 51.764
67 | 47 173.205 100.0
68 | 48 141.421 141.421
69 | 49 100.0 173.205
70 | 50 51.764 193.185
71 | 51 0.0 200.0
72 | 1 01 0.000000 0.000000
73 | 7 10 0.000000 0.000000
74 | 8 01 0.000000 0.000000
75 | 11 10 0.000000 0.000000
76 | 12 01 0.000000 0.000000
77 | 18 10 0.000000 0.000000
78 | 19 01 0.000000 0.000000
79 | 22 10 0.000000 0.000000
80 | 23 01 0.000000 0.000000
81 | 29 10 0.000000 0.000000
82 | 30 01 0.000000 0.000000
83 | 33 10 0.000000 0.000000
84 | 34 01 0.000000 0.000000
85 | 40 10 0.000000 0.000000
86 | 41 01 0.000000 0.000000
87 | 44 10 0.000000 0.000000
88 | 45 01 0.000000 0.000000
89 | 51 10 0.000000 0.000000
90 | 1
91 | 21000.0 0.3 0.0 0.0 24.0 0.0 0.0 0.0
92 | INTERNAL PRESSURE
93 | 0 0 1
94 | 3
95 | 1 3 2 1
96 | 14.0 0.0 14.0 0.0 14.0 0.0
97 | 2 5 4 3
98 | 14.0 0.0 14.0 0.0 14.0 0.0
99 | 3 7 6 5
100 | 14.0 0.0 14.0 0.0 14.0 0.0
101 | 0.7 1.0 30 3 3
102 | 0.1 1.0 30 0 0
103 | 0.1 1.0 30 0 0
104 | 0.1 1.0 30 0 0
105 | 0.1 1.0 30 0 0
106 | 0.1 1.0 30 0 0
107 | 0.1 1.0 30 0 0
108 | 0.1 1.0 30 0 0
109 | 0.1 1.0 30 0 0
110 | 0.1 1.0 30 3 3
111 |
112 | 2.0 0.0 2.0 0.0 2.0 0.0
113 | 2 5 4 3
114 | 2.0 0.0 2.0 0.0 2.0 0.0
115 | 3 7 6 5
116 | 2.0 0.0 2.0 0.0 2.0 0.0
117 | 0.7 1.0 30 3 3
118 |
119 |
120 |
--------------------------------------------------------------------------------
/Examples/Example_2D_p542_Original.txt:
--------------------------------------------------------------------------------
1 | 2-D ELASTO-PLASTIC EXAMPLE . SECTION 7.9 . FIG 7.12 P.542
2 | 51 12 18 2 8 1 2 2 2 1 3
3 | 4 0.9794 0.2950 1.288 1 1 1 1
4 | 3
5 | 2 1 100 10000 10
6 | 1 1 100 10000 10
7 | 1 1 100 10000 10
8 | 1 1 100 10000 10
9 | 1 1 1 8 12 13 14 9 3 2
10 | 2 1 3 9 14 15 16 10 5 4
11 | 3 1 5 10 16 17 18 11 7 6
12 | 4 1 12 19 23 24 25 20 14 13
13 | 5 1 14 20 25 26 27 21 16 15
14 | 6 1 16 21 27 28 29 22 18 17
15 | 7 1 23 30 34 35 36 31 25 24
16 | 8 1 25 31 36 37 38 32 27 26
17 | 9 1 27 32 38 39 40 33 29 28
18 | 10 1 34 41 45 46 47 42 36 35
19 | 11 1 36 42 47 48 49 43 38 37
20 | 12 1 38 43 49 50 51 44 40 39
21 | 1 100.0 0.0 27 70.0 121.243
22 | 2 96.592 25.882 28 36.234 135.230
23 | 3 86.602 50.5 29 0.0 140.0
24 | 4 70.710 70.710 30 155.0 0.0
25 | 5 50.0 86.602 31 134.234 7.5
26 | 6 25.882 96.592 32 77.5 134.234
27 | 7 0.0 100.0 33 0.0 155.0
28 | 8 110.0 0.0 34 170.0 0.0
29 | 9 95.263 55.0 35 164.207 43.999
30 | 10 55.0 95.263 36 147.224 85.0
31 | 11 0.0 110.0 37 120.208 120.208
32 | 12 120.0 0.0 38 85.0 147.224
33 | 13 115.911 31.058 39 43.999 146.207
34 | 14 103.923 60.0 40 0.0 170.0
35 | 15 84.853 84.853 41 185.0 0.0
36 | 16 60.0 103.923 42 160.215 92.5
37 | 17 31.058 115.911 43 92.5 160.215
38 | 18 0.0 120.0 44 0.0 185.0
39 | 19 130.0 0.0 45 200.0 0.0
40 | 20 112.583 65.0 46 193.185 51.764
41 | 21 65.0 112.583 47 173.205 100.0
42 | 22 0.0 130.0 48 141.421 141.421
43 | 23 140.0 0.0 49 100.0 173.205
44 | 24 135.230 36.234 50 51.764 193.185
45 | 25 121.243 70.0 51 0.0 200.0
46 | 26 98.995 98.995
47 | 1 01 0.0 0.0
48 | 7 10 0.0 0.0
49 | 8 01 0.0 0.0
50 | 11 10 0.0 0.0
51 | 12 01 0.0 0.0
52 | 18 10 0.0 0.0
53 | 19 01 0.0 0.0
54 | 22 10 0.0 0.0
55 | 23 01 0.0 0.0
56 | 29 10 0.0 0.0
57 | 30 01 0.0 0.0
58 | 33 10 0.0 0.0
59 | 34 01 0.0 0.0
60 | 40 10 0.0 0.0
61 | 41 01 0.0 0.0
62 | 44 10 0.0 0.0
63 | 45 01 0.0 0.0
64 | 51 10 0.0 0.0
65 | 1
66 | 21000.0 0.3 0.0 0.0 24.0 0.0 0.0 0.0
67 | 1 0 0 0 0 0
68 | 2 0 0 0 0 0
69 | 3 0 0 0 0 0
70 | 4 0 0 0 0 0
71 | 5 0 0 0 0 0
72 | 6 0 0 0 0 0
73 | 7 0 0 0 0 0
74 | 8 0 0 0 0 0
75 | INTERNAL PRESSURE
76 | 0 0 1
77 | 3
78 | 1 3 2 1
79 | 20.0 0.0 20.0 0.0 20.0 0.0
80 | 2 5 4 3
81 | 20.0 0.0 20.0 0.0 20.0 0.0
82 | 3 7 6 5
83 | 20.0 0.0 20.0 0.0 20.0 0.0
84 | 0.7 1.0 30 3 3
85 |
86 |
87 |
88 |
--------------------------------------------------------------------------------
/Examples/Example_2D_p542_ext.txt:
--------------------------------------------------------------------------------
1 | 2-D ELASTO-PLASTIC EXAMPLE . SECTION 7.9 . FIG 7.12 P.542
2 | 51 12 18 2 8 1 3 2 2 10 3
3 | 4 0.9794 0.2950 1.288 1 1 1 1
4 | 3
5 | 2 1 100 10000 10
6 | 1 1 100 10000 10
7 | 1 1 100 10000 10
8 | 1 1 100 10000 10
9 | 1 1 1 8 12 13 14 9 3 2
10 | 2 1 3 9 14 15 16 10 5 4
11 | 3 1 5 10 16 17 18 11 7 6
12 | 4 1 12 19 23 24 25 20 14 13
13 | 5 1 14 20 25 26 27 21 16 15
14 | 6 1 16 21 27 28 29 22 18 17
15 | 7 1 23 30 34 35 36 31 25 24
16 | 8 1 25 31 36 37 38 32 27 26
17 | 9 1 27 32 38 39 40 33 29 28
18 | 10 1 34 41 45 46 47 42 36 35
19 | 11 1 36 42 47 48 49 43 38 37
20 | 12 1 38 43 49 50 51 44 40 39
21 | 1 100.0 0.0
22 | 2 96.592 25.882
23 | 3 86.602 50.0
24 | 4 70.710 70.710
25 | 5 50.0 86.602
26 | 6 25.882 96.592
27 | 7 0.0 100.0
28 | 8 110.0 0.0
29 | 9 95.263 55.0
30 | 10 55.0 95.263
31 | 11 0.0 110.0
32 | 12 120.0 0.0
33 | 13 115.911 31.058
34 | 14 103.923 60.0
35 | 15 84.853 84.853
36 | 16 60.0 103.923
37 | 17 31.058 115.911
38 | 18 0.0 120.0
39 | 19 130.0 0.0
40 | 20 112.583 65.0
41 | 21 65.0 112.583
42 | 22 0.0 130.0
43 | 23 140.0 0.0
44 | 24 135.230 36.234
45 | 25 121.243 70.0
46 | 26 98.995 98.995
47 | 27 70.0 121.243
48 | 28 36.234 135.230
49 | 29 0.0 140.0
50 | 30 155.0 0.0
51 | 31 134.234 77.5
52 | 32 77.5 134.234
53 | 33 0.0 155.0
54 | 34 170.0 0.0
55 | 35 164.207 43.999
56 | 36 147.224 85.0
57 | 37 120.208 120.208
58 | 38 85.0 147.224
59 | 39 43.999 164.207
60 | 40 0.0 170.0
61 | 41 185.0 0.0
62 | 42 160.215 92.5
63 | 43 92.5 160.215
64 | 44 0.0 185.0
65 | 45 200.0 0.0
66 | 46 193.185 51.764
67 | 47 173.205 100.0
68 | 48 141.421 141.421
69 | 49 100.0 173.205
70 | 50 51.764 193.185
71 | 51 0.0 200.0
72 | 1 01 0.000000 0.000000
73 | 7 10 0.000000 0.000000
74 | 8 01 0.000000 0.000000
75 | 11 10 0.000000 0.000000
76 | 12 01 0.000000 0.000000
77 | 18 10 0.000000 0.000000
78 | 19 01 0.000000 0.000000
79 | 22 10 0.000000 0.000000
80 | 23 01 0.000000 0.000000
81 | 29 10 0.000000 0.000000
82 | 30 01 0.000000 0.000000
83 | 33 10 0.000000 0.000000
84 | 34 01 0.000000 0.000000
85 | 40 10 0.000000 0.000000
86 | 41 01 0.000000 0.000000
87 | 44 10 0.000000 0.000000
88 | 45 01 0.000000 0.000000
89 | 51 10 0.000000 0.000000
90 | 1
91 | 21000.0 0.3 0.0 0.0 24.0 0.0 0.0 0.0
92 | INTERNAL PRESSURE
93 | 0 0 1
94 | 3
95 | 1 3 2 1
96 | -14.0 0.0 -14.0 0.0 -14.0 0.0
97 | 2 5 4 3
98 | -14.0 0.0 -14.0 0.0 -14.0 0.0
99 | 3 7 6 5
100 | -14.0 0.0 -14.0 0.0 -14.0 0.0
101 | 0.7 1.0 30 3 3
102 | 0.1 1.0 30 0 0
103 | 0.1 1.0 30 0 0
104 | 0.1 1.0 30 0 0
105 | 0.1 1.0 30 0 0
106 | 0.1 1.0 30 0 0
107 | 0.1 1.0 30 0 0
108 | 0.1 1.0 30 0 0
109 | 0.1 1.0 30 0 0
110 | 0.1 1.0 30 3 3
111 |
112 | 2.0 0.0 2.0 0.0 2.0 0.0
113 | 2 5 4 3
114 | 2.0 0.0 2.0 0.0 2.0 0.0
115 | 3 7 6 5
116 | 2.0 0.0 2.0 0.0 2.0 0.0
117 | 0.7 1.0 30 3 3
118 |
119 |
120 |
--------------------------------------------------------------------------------
/Examples/Example_one_elem_4d.txt:
--------------------------------------------------------------------------------
1 | 2-D ELASTO-PLASTIC EXAMPLE . 1 ELEMENT Q4
2 | 04 01 03 2 4 1 2 2 2 1 3
3 | 4 0.9794 0.2950 1.288 1 1 1 1
4 | 3
5 | 2 1 100 10000 10
6 | 1 1 100 10000 10
7 | 1 1 100 10000 10
8 | 1 1 100 10000 10
9 | 1 1 1 2 3 4
10 | 1 000.0 0.0
11 | 2 001.0 0.0
12 | 3 001.0 1.0
13 | 4 000.0 1.0
14 | 1 11 0.000000 0.000000
15 | 2 01 0.000000 0.000000
16 | 4 11 0.000000 0.000000
17 | 1
18 | 21000.0 0.2 0.0 0.0 24.0 0.0 0.0 0.0
19 | INTERNAL PRESSURE
20 | 1 0 0
21 | 3 0.0 -1.0
22 | 1.0 1.0 30 3 3
23 |
--------------------------------------------------------------------------------
/Examples/Example_two_elem.4d.txt:
--------------------------------------------------------------------------------
1 | 2-D ELASTO-PLASTIC EXAMPLE . SECTION 7.9 . FIG 7.12 P.542
2 | 06 02 04 2 4 1 3 2 2 1 3
3 | 4 0.9794 0.2950 1.288 1 1 1 1
4 | 3
5 | 2 1 100 10000 10
6 | 1 1 100 10000 10
7 | 1 1 100 10000 10
8 | 1 1 100 10000 10
9 | 1 1 1 2 3 4
10 | 2 1 2 5 6 3
11 | 1 000.0 0.0
12 | 2 001.0 0.0
13 | 3 001.0 1.0
14 | 4 000.0 1.0
15 | 5 002.0 0.0
16 | 6 002.0 1.0
17 | 1 11 0.000000 0.000000
18 | 2 01 0.000000 0.000000
19 | 4 11 0.000000 0.000000
20 | 5 01 0.000000 0.000000
21 | 1
22 | 72000000.0 0.2 0.0 0.0 24.0 0.0 0.0 0.0
23 | INTERNAL PRESSURE
24 | 1 0 0
25 | 6 0.0 -100.0
26 | 1.0 1.0 10 3 3
27 |
28 |
29 |
--------------------------------------------------------------------------------
/Examples/Example_two_elem.txt:
--------------------------------------------------------------------------------
1 | 2-D ELASTIC EXAMPLE EMAD
2 | 04 02 03 2 3 1 2 2 2 3 3
3 | 4 0.9794 0.2950 1.288 1 1 1 1
4 | 3
5 | 2 1 100 10000 10
6 | 1 1 100 10000 10
7 | 1 1 100 10000 10
8 | 1 1 100 10000 10
9 | 1 1 1 2 3
10 | 2 1 2 4 3
11 | 1 000.0 0.0
12 | 2 001.0 0.0
13 | 3 000.0 1.0
14 | 4 001.0 1.0
15 | 1 11 0.000000 0.000000
16 | 2 01 0.000000 0.000000
17 | 3 11 0.000000 0.000000
18 | 1
19 | 00072.0 0.2 0.0 0.0 24.0 0.0 0.0 0.0
20 | INTERNAL PRESSURE
21 | 1 0 0
22 | 4 0.0 -1.0
23 | 0.33 1.0 30 3 3
24 | 0.33 1.0 30 3 3
25 | 0.34 1.0 30 3 3
26 |
--------------------------------------------------------------------------------
/Examples/Example_two_elem_dispImp.txt:
--------------------------------------------------------------------------------
1 | 2-D ELASTIC EXAMPLE EMAD
2 | 04 02 04 2 3 1 2 2 2 3 3
3 | 4 0.9794 0.2950 1.288 1 1 1 1
4 | 3
5 | 2 1 100 10000 10
6 | 1 1 100 10000 10
7 | 1 1 100 10000 10
8 | 1 1 100 10000 10
9 | 1 1 1 2 3
10 | 2 1 2 4 3
11 | 1 000.0 0.0
12 | 2 001.0 0.0
13 | 3 000.0 1.0
14 | 4 001.0 1.0
15 | 1 11 0.000000 0.000000
16 | 2 01 0.000000 0.000000
17 | 3 11 0.000000 0.000000
18 | 4 01 0.000000 0.0118143
19 | 1
20 | 00072.0 0.2 0.0 0.0 24.0 0.0 0.0 0.0
21 | INTERNAL PRESSURE
22 | 0 0 0
23 | 0.33 1.0 30 3 3
24 | 0.33 1.0 30 3 3
25 | 0.34 1.0 30 3 3
26 |
27 |
--------------------------------------------------------------------------------
/Examples/LimeTreatedSoils.txt:
--------------------------------------------------------------------------------
1 | 2-D ELASTO-PLASTIC EXAMPLE 1 ELEMENT Q4 CAM CLAY LIME TREATED SOILS
2 | 04 01 03 3 4 1 2 2 6 3500 4
3 | 4 0.9794 0.2950 1.288 1 1 1 1
4 | 3
5 | 2 1 100 10000 10
6 | 1 1 100 10000 10
7 | 1 1 100 10000 10
8 | 1 1 100 10000 10
9 | 1 1 1 2 3 4
10 | 1 000.0 0.0
11 | 2 001.0 0.0
12 | 3 001.0 1.0
13 | 4 000.0 1.0
14 | 1 11 0.000000 0.000000
15 | 2 01 0.000000 0.000000
16 | 4 10 0.000000 0.000000
17 | 1
18 | 45000.0 0.2 0.0 0.0 170.0 0.0 30.0 1.99 0.08 0.032 1.15 400.0 0.035 0.065 0.046 -41.8
19 | INTERNAL PRESSURE
20 | 0 0 1
21 | 2
22 | 1 2 3
23 | 600.0 0.0 600.0 0.0
24 | 1 3 4
25 | 600.0 0.0 600.0 0.0
26 |
27 | 1 0 0
28 | 3 0.0 -100.0
29 | 1.0 1.0 30 3 3
30 |
31 |
32 | 0.01 1.0 30 0 0
33 | 0.01 1.0 30 0 0
34 | 0.01 1.0 30 0 0
35 | 0.01 1.0 30 0 0
36 | 0.01 1.0 30 0 0
37 | 0.01 1.0 30 0 0
38 | 0.01 1.0 30 0 0
39 | 0.01 1.0 30 0 0
40 | 0.01 1.0 30 0 0
41 | 0.01 1.0 30 0 0
42 | 0.05 1.0 30 3 3
43 | 0.02 1.0 30 3 3
44 | 0.01 1.0 30 3 3
45 | 0.01 1.0 30 0 0
46 | 0.01 1.0 30 0 0
47 | 0.1 1.0 30 3 3
48 | 0.1 1.0 30 3 3
49 | 0.1 1.0 30 3 3
50 | 0.1 1.0 30 3 3
51 | 0.1 1.0 30 3 3
52 | 0.1 1.0 30 3 3
53 | 0.1 1.0 30 3 3
54 | 0.1 1.0 30 3 3
55 |
--------------------------------------------------------------------------------
/Examples/Oudin_Exemple_plast.nb:
--------------------------------------------------------------------------------
1 | (* Content-type: application/vnd.wolfram.mathematica *)
2 |
3 | (*** Wolfram Notebook File ***)
4 | (* http://www.wolfram.com/nb *)
5 |
6 | (* CreatedBy='Mathematica 8.0' *)
7 |
8 | (*CacheID: 234*)
9 | (* Internal cache information:
10 | NotebookFileLineBreakTest
11 | NotebookFileLineBreakTest
12 | NotebookDataPosition[ 157, 7]
13 | NotebookDataLength[ 6965, 257]
14 | NotebookOptionsPosition[ 5800, 210]
15 | NotebookOutlinePosition[ 6157, 226]
16 | CellTagsIndexPosition[ 6114, 223]
17 | WindowFrame->Normal*)
18 |
19 | (* Beginning of Notebook Content *)
20 | Notebook[{
21 |
22 | Cell[CellGroupData[{
23 | Cell[BoxData[{
24 | RowBox[{
25 | RowBox[{"B", "=",
26 | RowBox[{"{",
27 | RowBox[{"0", ",",
28 | RowBox[{
29 | RowBox[{"-", "1.9"}], "*", "\[Sigma]", "*", "S"}]}], "}"}]}],
30 | ";"}], "\[IndentingNewLine]",
31 | RowBox[{
32 | RowBox[{"A", "=",
33 | RowBox[{
34 | RowBox[{"(",
35 | RowBox[{"Ee", "*",
36 | RowBox[{"S", "/", "h"}]}], ")"}], "*",
37 | RowBox[{"{",
38 | RowBox[{
39 | RowBox[{"{",
40 | RowBox[{
41 | RowBox[{"1", "/",
42 | RowBox[{"Sqrt", "[", "2", "]"}]}], ",", "0"}], "}"}], ",",
43 | RowBox[{"{",
44 | RowBox[{"0", ",",
45 | RowBox[{"1", "+",
46 | RowBox[{"1", "/",
47 | RowBox[{"Sqrt", "[", "2", "]"}]}]}]}], "}"}]}], "}"}]}]}],
48 | ";"}], "\[IndentingNewLine]",
49 | RowBox[{"MatrixForm", "[", "B", "]"}]}], "Input",
50 | CellChangeTimes->{{3.57976259165917*^9, 3.579762732671659*^9}, {
51 | 3.579762815881371*^9, 3.579762819888269*^9}, {3.5797628537338257`*^9,
52 | 3.579762864428011*^9}, {3.579762929821948*^9, 3.579762932083448*^9}}],
53 |
54 | Cell[BoxData[
55 | TagBox[
56 | RowBox[{"(", "\[NoBreak]",
57 | TagBox[GridBox[{
58 | {"0"},
59 | {
60 | RowBox[{
61 | RowBox[{"-", "1.9`"}], " ", "S", " ", "\[Sigma]"}]}
62 | },
63 | GridBoxAlignment->{
64 | "Columns" -> {{Center}}, "ColumnsIndexed" -> {}, "Rows" -> {{Baseline}},
65 | "RowsIndexed" -> {}},
66 | GridBoxSpacings->{"Columns" -> {
67 | Offset[0.27999999999999997`], {
68 | Offset[0.5599999999999999]},
69 | Offset[0.27999999999999997`]}, "ColumnsIndexed" -> {}, "Rows" -> {
70 | Offset[0.2], {
71 | Offset[0.4]},
72 | Offset[0.2]}, "RowsIndexed" -> {}}],
73 | Column], "\[NoBreak]", ")"}],
74 | Function[BoxForm`e$,
75 | MatrixForm[BoxForm`e$]]]], "Output",
76 | CellChangeTimes->{{3.579762725566903*^9, 3.57976273322862*^9},
77 | 3.579762817281817*^9, {3.579762855093053*^9, 3.5797628647758913`*^9},
78 | 3.579762932904929*^9}]
79 | }, Open ]],
80 |
81 | Cell[CellGroupData[{
82 |
83 | Cell[BoxData[
84 | RowBox[{"LinearSolve", "[",
85 | RowBox[{"A", ",", "B"}], "]"}]], "Input",
86 | CellChangeTimes->{{3.57976287611169*^9, 3.579762881322028*^9}}],
87 |
88 | Cell[BoxData[
89 | RowBox[{"{",
90 | RowBox[{"0.`", ",",
91 | RowBox[{"-",
92 | FractionBox[
93 | RowBox[{"1.1129942314911194`", " ", "h", " ", "\[Sigma]"}], "Ee"]}]}],
94 | "}"}]], "Output",
95 | CellChangeTimes->{3.5797628822973948`*^9, 3.579762934336816*^9}]
96 | }, Open ]],
97 |
98 | Cell[CellGroupData[{
99 |
100 | Cell[BoxData[
101 | RowBox[{"B", "=",
102 | RowBox[{"-",
103 | RowBox[{"{",
104 | RowBox[{"0", ",",
105 | RowBox[{"0.0967", "*", "\[Sigma]", "*", "S"}]}], "}"}]}]}]], "Input",
106 | CellChangeTimes->{{3.579762982250825*^9, 3.579762998071175*^9}}],
107 |
108 | Cell[BoxData[
109 | RowBox[{"{",
110 | RowBox[{"0", ",",
111 | RowBox[{
112 | RowBox[{"-", "0.0967`"}], " ", "S", " ", "\[Sigma]"}]}], "}"}]], "Output",\
113 |
114 | CellChangeTimes->{3.579763002099893*^9}]
115 | }, Open ]],
116 |
117 | Cell[CellGroupData[{
118 |
119 | Cell[BoxData[
120 | RowBox[{"LinearSolve", "[",
121 | RowBox[{"A", ",", "B"}], "]"}]], "Input"],
122 |
123 | Cell[BoxData[
124 | RowBox[{"{",
125 | RowBox[{"0.`", ",",
126 | RowBox[{"-",
127 | FractionBox[
128 | RowBox[{"0.05664554851852171`", " ", "h", " ", "\[Sigma]"}], "Ee"]}]}],
129 | "}"}]], "Output",
130 | CellChangeTimes->{3.5797630105297127`*^9}]
131 | }, Open ]],
132 |
133 | Cell[BoxData[""], "Input",
134 | CellChangeTimes->{{3.579763435588161*^9, 3.579763436978356*^9}}],
135 |
136 | Cell[CellGroupData[{
137 |
138 | Cell[BoxData[
139 | RowBox[{"1.803", "+", "0.0967"}]], "Input",
140 | CellChangeTimes->{{3.579763489941498*^9, 3.579763504328773*^9}}],
141 |
142 | Cell[BoxData["1.8997`"], "Output",
143 | CellChangeTimes->{3.5797635047652683`*^9}]
144 | }, Open ]],
145 |
146 | Cell[CellGroupData[{
147 |
148 | Cell[BoxData[
149 | RowBox[{"1.113", "+",
150 | RowBox[{"2", "*",
151 | RowBox[{"0.56", "/",
152 | RowBox[{"Sqrt", "[", "2", "]"}]}]}]}]], "Input",
153 | CellChangeTimes->{{3.5797636347767143`*^9, 3.579763658740831*^9}}],
154 |
155 | Cell[BoxData["1.904959594928933`"], "Output",
156 | CellChangeTimes->{3.5797636597669783`*^9}]
157 | }, Open ]],
158 |
159 | Cell[CellGroupData[{
160 |
161 | Cell[BoxData[
162 | RowBox[{"1.1129942314911194", "+", "0.05664554851852171"}]], "Input",
163 | CellChangeTimes->{{3.5797640623044653`*^9, 3.579764068718923*^9}}],
164 |
165 | Cell[BoxData["1.1696397800096412`"], "Output",
166 | CellChangeTimes->{3.579764069913422*^9}]
167 | }, Open ]],
168 |
169 | Cell[BoxData[{
170 | RowBox[{
171 | RowBox[{"A", "=",
172 | RowBox[{"{",
173 | RowBox[{
174 | RowBox[{"{",
175 | RowBox[{"110", ",",
176 | RowBox[{"-", "30"}], ",",
177 | RowBox[{"-", "30"}]}], "}"}], ",",
178 | RowBox[{"{",
179 | RowBox[{
180 | RowBox[{"-", "30"}], ",", "110", ",", "50"}], "}"}], ",",
181 | RowBox[{"{",
182 | RowBox[{
183 | RowBox[{"-", "30"}], ",", "50", ",", "110"}], "}"}]}], "}"}]}],
184 | ";"}], "\[IndentingNewLine]",
185 | RowBox[{
186 | RowBox[{
187 | RowBox[{"B", "=",
188 | RowBox[{"{",
189 | RowBox[{"0", ",", "0", ",", "0.7"}], "}"}]}], ";"}],
190 | "\[IndentingNewLine]"}], "\[IndentingNewLine]",
191 | RowBox[{
192 | RowBox[{"MatrixForm", "[", "B", "]"}],
193 | ";"}], "\[IndentingNewLine]"}], "Input",
194 | CellChangeTimes->{{3.579848678009409*^9, 3.579848755864863*^9}}],
195 |
196 | Cell[CellGroupData[{
197 |
198 | Cell[BoxData[
199 | RowBox[{"LinearSolve", "[",
200 | RowBox[{"A", ",", "B"}], "]"}]], "Input",
201 | CellChangeTimes->{{3.5798487589068947`*^9, 3.5798487630235853`*^9}}],
202 |
203 | Cell[BoxData[
204 | RowBox[{"{",
205 | RowBox[{"0.001329113924050633`", ",",
206 | RowBox[{"-", "0.00339662447257384`"}], ",", "0.008270042194092827`"}],
207 | "}"}]], "Output",
208 | CellChangeTimes->{3.5798487643004227`*^9}]
209 | }, Open ]]
210 | },
211 | WindowSize->{740, 665},
212 | WindowMargins->{{Automatic, -14}, {Automatic, 4}},
213 | FrontEndVersion->"8.0 for Mac OS X x86 (32-bit, 64-bit Kernel) (November 13, \
214 | 2010)",
215 | StyleDefinitions->"Default.nb"
216 | ]
217 | (* End of Notebook Content *)
218 |
219 | (* Internal cache information *)
220 | (*CellTagsOutline
221 | CellTagsIndex->{}
222 | *)
223 | (*CellTagsIndex
224 | CellTagsIndex->{}
225 | *)
226 | (*NotebookFileOutline
227 | Notebook[{
228 | Cell[CellGroupData[{
229 | Cell[579, 22, 963, 29, 58, "Input"],
230 | Cell[1545, 53, 864, 24, 57, "Output"]
231 | }, Open ]],
232 | Cell[CellGroupData[{
233 | Cell[2446, 82, 152, 3, 27, "Input"],
234 | Cell[2601, 87, 248, 7, 46, "Output"]
235 | }, Open ]],
236 | Cell[CellGroupData[{
237 | Cell[2886, 99, 230, 6, 27, "Input"],
238 | Cell[3119, 107, 184, 6, 27, "Output"]
239 | }, Open ]],
240 | Cell[CellGroupData[{
241 | Cell[3340, 118, 87, 2, 27, "Input"],
242 | Cell[3430, 122, 227, 7, 46, "Output"]
243 | }, Open ]],
244 | Cell[3672, 132, 92, 1, 27, "Input"],
245 | Cell[CellGroupData[{
246 | Cell[3789, 137, 124, 2, 27, "Input"],
247 | Cell[3916, 141, 78, 1, 27, "Output"]
248 | }, Open ]],
249 | Cell[CellGroupData[{
250 | Cell[4031, 147, 204, 5, 27, "Input"],
251 | Cell[4238, 154, 89, 1, 27, "Output"]
252 | }, Open ]],
253 | Cell[CellGroupData[{
254 | Cell[4364, 160, 152, 2, 27, "Input"],
255 | Cell[4519, 164, 88, 1, 27, "Output"]
256 | }, Open ]],
257 | Cell[4622, 168, 769, 25, 88, "Input"],
258 | Cell[CellGroupData[{
259 | Cell[5416, 197, 157, 3, 27, "Input"],
260 | Cell[5576, 202, 208, 5, 27, "Output"]
261 | }, Open ]]
262 | }
263 | ]
264 | *)
265 |
266 | (* End of internal cache information *)
267 |
268 |
--------------------------------------------------------------------------------
/PostProcessing/.idea/.name:
--------------------------------------------------------------------------------
1 | Postprocessing
--------------------------------------------------------------------------------
/PostProcessing/.idea/Postprocessing.iml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/PostProcessing/.idea/dictionaries/viktor.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/PostProcessing/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/PostProcessing/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/PostProcessing/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/PostProcessing/.idea/other.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/PostProcessing/.idea/scopes/scope_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/PostProcessing/.idea/testrunner.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/PostProcessing/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/PostProcessing/Output/Deviatoric/deviatoric (Victors-MacBook-Pro's conflicted copy 2014-04-07 (1)).txt:
--------------------------------------------------------------------------------
1 | Increment eps_a varj2 sqrt(varj2)
2 | 1 -9.9999999999999308E-003 149.99999999999855 12.247448713915832
3 | 2 -1.9999999999999862E-002 599.99999999999420 24.494897427831663
4 | 3 -2.9999999999999798E-002 1349.9999999999870 36.742346141747497
5 | 4 -3.9999999999999723E-002 2399.9999999999768 48.989794855663327
6 | 5 -4.9999999999999656E-002 3749.9999999999636 61.237243569579157
7 | 6 -5.9999999999999581E-002 5399.9999999999472 73.484692283494979
8 | 7 -6.9999999999999507E-002 7349.9999999999291 85.732140997410824
9 | 8 -7.9999999999999447E-002 9599.9999999999072 97.979589711326653
10 | 9 -8.9999999999999372E-002 12149.999999999884 110.22703842524248
11 | 10 -9.9999999999999312E-002 14999.999999999856 122.47448713915831
12 | 11 -0.10999999999999925 18149.999999999825 134.72193585307414
13 | 12 -0.11999999999999919 21599.999999999789 146.96938456698996
14 | 13 -0.12999999999999912 25349.999999999760 159.21683328090583
15 | 14 -0.13999999999999907 29399.999999999716 171.46428199482165
16 | 15 -0.14999999999999900 33749.999999999680 183.71173070873749
17 | 16 -0.15999999999999895 38399.999999999636 195.95917942265331
18 | 17 -0.16999999999999887 43349.999999999585 208.20662813656915
19 | 18 -0.17999999999999883 48599.999999999534 220.45407685048497
20 | 19 -0.18999999999999875 54149.999999999483 232.70152556440081
21 | 20 -0.19999999999999871 59999.999999999425 244.94897427831663
22 | Increment eps_a varj2 sqrt(varj2)
23 | 1 -0.15513634465478943 73445.481618326361 271.00826854235714
24 | 2 -0.11029331772825482 90376.395595761875 300.62667146439600
25 | 3 -6.6368746383553348E-002 110348.80981936486 332.18791341553180
26 | 4 -2.7339685940885938E-002 111124.79804822624 333.35386310679860
27 | 5 1.3202542857143775E-002 112654.20184679986 335.63998845012475
28 | 6 5.5055367980555450E-002 114015.86534179471 337.66235404882599
29 | 7 9.7934606902069316E-002 115220.13328013312 339.44091279651769
30 | 8 0.14164561402961576 116330.99700095711 341.07330150710584
31 | 9 0.18607320221709156 117386.27779915513 342.61680898513305
32 | 10 0.23113753645903931 118395.77354010775 344.08686917711310
33 | 11 0.27677417591753967 119355.34665047504 345.47843152717223
34 | 12 0.32294249921421592 120257.77855550167 346.78203320746258
35 | 13 0.36963061717574286 121089.83823419451 347.97965204045266
36 | 14 0.41688465368335093 121850.69223788117 349.07118505812133
37 | 15 0.46476882051798041 122548.08574436135 350.06868718061793
38 | 16 0.51335775397659167 123186.58612804030 350.97946681827460
39 | 17 0.56276182802879005 123740.47952119749 351.76764990714747
40 | 18 0.61321737430702683 124335.09847080079 352.61182406550233
41 | 19 0.66477929699855520 124942.17767842392 353.47160802308287
42 | 20 0.71744619629560080 125571.35257589196 354.36048393675605
43 | 21 0.77121989917048628 126210.48699135413 355.26115322584053
44 | 22 0.82609656737163917 126847.18904048711 356.15613014587734
45 | 23 0.88205392974541241 127491.55423040396 357.05959478832654
46 | 24 0.93911490072938997 128138.03705853003 357.96373707196938
47 | 25 0.99728212058789589 128763.19117481982 358.83588334337441
48 | 26 1.0565831415185754 129380.32396618098 359.69476499690813
49 | 27 1.1171034186281770 130021.23558909382 360.58457480748370
50 | 28 1.1788579565048649 130683.96818250483 361.50237645485100
51 | 29 1.2418244690708595 131360.36712597113 362.43670775181027
52 | 30 1.3059760537365632 132036.98519812294 363.36893813054928
53 | 31 1.3713230797890943 132697.03321062992 364.27603985251341
54 | 32 1.4379235192275810 133368.60499112683 365.19666618293058
55 | 33 1.5057655221224182 134064.56370769851 366.14828103884156
56 | 34 1.5748521299750029 134750.73720156890 367.08410099263205
57 | 35 1.6451865032798445 135444.19153345429 368.02743312619276
58 | 36 1.7168065655119202 136147.48902962563 368.98169199788981
59 | 37 1.7897219275964988 136859.47378749002 369.94523079435692
60 | 38 1.8639562314778617 137589.18699685441 370.93016458203340
61 | 39 1.9393743874743736 138300.03929061428 371.88713246173802
62 | 40 2.0161249850865226 139028.25050332199 372.86492259707398
63 | 41 2.0941589826460101 139742.18347175233 373.82105809030116
64 | 42 2.1734192155357821 140471.16730570764 374.79483361661704
65 | 43 2.2540556948961328 141215.33068760269 375.78628326164687
66 | 44 2.3360698297923252 142005.08111325320 376.83561550529322
67 | 45 2.4199874099277063 142861.52906311498 377.97027536979016
68 | 46 2.5043764625869014 143749.39947690061 379.14298025533930
69 | 47 2.5899335615896386 144480.66145584607 380.10611867720053
70 | 48 2.6767161465248144 145192.87600523280 381.04182973163563
71 | 49 2.7646296508680455 145980.40866760505 382.07382620065073
72 | 50 2.8539039964601347 146741.05877925220 383.06795582409683
73 | 51 2.9443515320480675 147491.29828328863 384.04595855611944
74 | 52 3.0360808115383211 148267.57928309473 385.05529379959802
75 | 53 3.1290355006390138 149050.29161921295 386.07031952639528
76 | 54 3.2229033077295126 149706.73063837198 386.91954026434485
77 | 55 3.3180247720319653 150455.90453396598 387.88645830186698
78 | 56 3.4143171415082691 151185.64792057048 388.82598668372265
79 | 57 3.5118025248880453 151964.72357056741 389.82653010097636
80 | 58 3.6104491423884557 152749.94220371591 390.83237097727192
81 | 59 3.7102207350264718 153532.89014216186 391.83273235165268
82 | 60 3.8111170794618747 154322.47571596137 392.83899464788544
83 | 61 3.9131274442621837 155117.19542032547 393.84920390972667
84 | 62 4.0162330768501855 155914.44732297858 394.86003510481862
85 | 63 4.1204151613141571 156712.42209449245 395.86919821387016
86 | 64 4.2256574722689813 157511.09031436295 396.87666889647591
87 | 65 4.3319414917900572 158308.39920987320 397.87988037832878
88 | 66 4.4392506503994582 159105.64026323534 398.88048368306431
89 | 67 4.5475660907706574 159902.36222949775 399.87793416178613
90 | 68 4.6568686160707760 160697.07982884030 400.87040278479066
91 | 69 4.7671413375958860 161490.46907470399 401.85876757227032
92 | 70 4.8783646345083600 162281.32914433925 402.84156829247308
93 | 71 4.9905249549638935 163071.30308682320 403.82087995400042
94 | 72 5.1036019849853771 163861.08612768669 404.79758661297217
95 | 73 5.2175777938388883 164648.17233590025 405.76861921038233
96 | 74 5.3324327069199633 165431.96627108002 406.73328640655910
97 | 75 5.4481484600410477 166212.00882832980 407.69107033185043
98 | 76 5.5647077105996567 166989.87161859471 408.64394234907570
99 | 77 5.6820948859521438 167763.50123402299 409.58943008093235
100 | 78 5.8002918216469173 168532.84487151922 410.52752023648696
101 | 79 5.9192765122438278 169298.25245562574 411.45868863790656
102 | 80 6.0390359738514983 170059.36154560494 412.38254272653802
103 | 81 6.1595522374587146 170818.02944629866 413.30137847132647
104 | 82 6.2808276742566935 171563.35173537361 414.20206630987923
105 | 83 6.4028313823157736 172304.07107607409 415.09525542467247
106 | 84 6.5255381491976294 173037.04566543415 415.97721772404094
107 | 85 6.6489297374456839 173762.49759980055 416.84829086827324
108 | 86 6.7729859874445353 174480.51296630228 417.70864602770945
109 | 87 6.8976904022804177 175191.17475088392 418.55844842851269
110 | 88 7.0230245689568500 175894.47635538279 419.39775435185965
111 | 89 7.1489690279985005 176590.07046272254 420.22621344071638
112 | 90 7.2755075853304634 177278.21223522138 421.04419273423235
113 | 91 7.4026228715356801 177958.78466636967 421.85161451198650
114 | 92 7.5302276068660374 178642.44819014423 422.66115055697304
115 | 93 7.6583875732075075 179313.04362104993 423.45370894709367
116 | 94 7.7870953047580391 179970.61866211356 424.22944106003951
117 | 95 7.9162125557534466 180605.08928181845 424.97657498010221
118 | 96 8.0458536165895325 181236.51243673186 425.71881851373666
119 | 97 8.1759533740576380 181865.65700284528 426.45709866626123
120 | 98 8.3065223862678295 182482.33146978234 427.17950731487849
121 | 99 8.4378684784770215 183135.90243843544 427.94380757108223
122 | 100 8.5696387529916773 183764.04976175603 428.67709264871621
123 |
--------------------------------------------------------------------------------
/PostProcessing/Output/Deviatoric/deviatoric (Victors-MacBook-Pro's conflicted copy 2014-04-07).txt:
--------------------------------------------------------------------------------
1 | Increment eps_a varj2 sqrt(varj2)
2 | 1 -5.0000000000000669E-003 37.500000000000831 6.1237243569580135
3 | 2 -1.0000000000000134E-002 150.00000000000333 12.247448713916027
4 | 3 -1.5000000000000202E-002 337.50000000000745 18.371173070874040
5 | 4 -2.0000000000000268E-002 600.00000000001330 24.494897427832054
6 | 5 -2.5000000000000338E-002 937.50000000002092 30.618621784790069
7 | 6 -3.0000000000000405E-002 1350.0000000000300 36.742346141748079
8 | 7 -3.5000000000000468E-002 1837.5000000000409 42.866070498706094
9 | 8 -4.0000000000000535E-002 2400.0000000000532 48.989794855664108
10 | 9 -4.5000000000000609E-002 3037.5000000000673 55.113519212622116
11 | 10 -5.0000000000000676E-002 3750.0000000000828 61.237243569580130
12 | 11 -5.5000000000000743E-002 4537.5000000001000 67.360967926538137
13 | 12 -6.0000000000000810E-002 5400.0000000001191 73.484692283496159
14 | 13 -6.5000000000000877E-002 6337.5000000001392 79.608416640454166
15 | 14 -7.0000000000000936E-002 7350.0000000001619 85.732140997412174
16 | 15 -7.5000000000001010E-002 8437.5000000001837 91.855865354370181
17 | 16 -8.0000000000001070E-002 9600.0000000002092 97.979589711328188
18 | 17 -8.5000000000001144E-002 10837.500000000235 104.10331406828620
19 | 18 -9.0000000000001218E-002 12150.000000000264 110.22703842524422
20 | 19 -9.5000000000001278E-002 13537.500000000293 116.35076278220222
21 | 20 -0.10000000000000135 15000.000000000324 122.47448713916023
22 | Increment eps_a varj2 sqrt(varj2)
23 | 1 7.2617956783692192E-002 13712.534368926024 117.10053103605476
24 | 2 0.29314787994810065 26053.682601347075 161.41153181029873
25 | 3 0.50038970456605469 23129.006271410926 152.08223522624505
26 | 4 0.72558354321536334 28582.379475148315 169.06324105241896
27 | 5 0.96430269835497184 33094.288077480451 181.91835552653959
28 | 6 1.2158425780405979 38710.510750347174 196.74986848876716
29 | 7 1.4726168103709245 39224.364479487078 198.05141877675877
30 | 8 1.7414302806094124 39116.553189242426 197.77905144186133
31 | 9 2.0206056800478613 38827.086088604054 197.04589843131487
32 | 10 2.3134517146346902 38440.921613550548 196.06356523727337
33 | 11 2.6202827438828078 38056.175517062249 195.07992084543773
34 | 12 2.9415045488360181 37593.267587318041 193.88983363579959
35 | 13 3.2784580369896843 37213.491870191363 192.90798809326523
36 | 14 3.6324361713517987 37005.439756620821 192.36798007106282
37 | 15 4.0051115956835108 36970.561803705903 192.27730444258341
38 | 16 4.3983118300935073 37191.146345945752 192.85006182510222
39 | 17 4.8136290683874252 37716.044796352886 194.20619144701047
40 | 18 5.2505339022876507 38242.862528451151 195.55782400213792
41 | 19 5.7074065687140330 38799.412186055466 196.97566394368485
42 | 20 6.1831801849613965 39309.898006381001 198.26723886305825
43 |
--------------------------------------------------------------------------------
/PostProcessing/Output/Deviatoric/deviatoric.txt:
--------------------------------------------------------------------------------
1 | Increment eps_a varj2 sqrt(varj2)
2 |
--------------------------------------------------------------------------------
/PostProcessing/Output/conntable.txt:
--------------------------------------------------------------------------------
1 | 1 316 301 283 280 279 300 314 315
2 | 2 318 302 285 284 283 301 316 317
3 | 3 321 305 288 287 285 302 318 320
4 | 4 325 307 292 289 288 305 321 323
5 | 5 328 309 295 293 292 307 325 326
6 | 6 331 313 299 297 295 309 328 330
7 | 7 334 322 306 303 299 313 331 333
8 | 8 337 329 310 308 306 322 334 335
9 | 9 339 332 319 312 310 329 337 338
10 | 10 341 336 327 324 319 332 339 340
11 | 11 283 267 248 247 246 266 279 280
12 | 12 285 269 250 249 248 267 283 284
13 | 13 288 271 254 253 250 269 285 287
14 | 14 292 273 258 255 254 271 288 289
15 | 15 295 277 262 260 258 273 292 293
16 | 16 299 281 268 264 262 277 295 297
17 | 17 306 291 274 272 268 281 299 303
18 | 18 310 296 278 276 274 291 306 308
19 | 19 319 304 290 286 278 296 310 312
20 | 20 327 311 298 294 290 304 319 324
21 | 21 248 232 213 212 211 231 246 247
22 | 22 250 234 215 214 213 232 248 249
23 | 23 254 237 220 219 215 234 250 253
24 | 24 258 240 224 223 220 237 254 255
25 | 25 262 244 229 226 224 240 258 260
26 | 26 268 252 235 233 229 244 262 264
27 | 27 274 259 242 239 235 252 268 272
28 | 28 278 265 251 245 242 259 274 276
29 | 29 290 275 261 256 251 265 278 286
30 | 30 298 282 270 263 261 275 290 294
31 | 31 213 197 176 174 173 194 211 212
32 | 32 215 199 180 179 176 197 213 214
33 | 33 220 201 184 183 180 199 215 219
34 | 34 224 205 189 186 184 201 220 223
35 | 35 229 210 195 193 189 205 224 226
36 | 36 235 221 202 200 195 210 229 233
37 | 37 242 227 209 207 202 221 235 239
38 | 38 251 236 222 217 209 227 242 245
39 | 39 261 243 230 225 222 236 251 256
40 | 40 270 257 241 238 230 243 261 263
41 | 41 176 158 135 134 132 157 173 174
42 | 42 180 159 139 137 135 158 176 179
43 | 43 184 166 147 142 139 159 180 183
44 | 44 189 171 151 148 147 166 184 186
45 | 45 195 178 161 155 151 171 189 193
46 | 46 202 188 169 167 161 178 195 200
47 | 47 209 196 181 172 169 188 202 207
48 | 48 222 206 192 187 181 196 209 217
49 | 49 230 218 203 198 192 206 222 225
50 | 50 241 228 216 208 203 218 230 238
51 | 51 135 112 91 87 85 109 132 134
52 | 52 139 114 95 93 91 112 135 137
53 | 53 147 122 101 96 95 114 139 142
54 | 54 151 127 108 104 101 122 147 148
55 | 55 161 140 120 113 108 127 151 155
56 | 56 169 153 133 125 120 140 161 167
57 | 57 181 164 150 143 133 153 169 172
58 | 58 192 175 163 156 150 164 181 187
59 | 59 203 190 177 170 163 175 192 198
60 | 60 216 204 191 185 177 190 203 208
61 | 61 91 71 54 53 51 68 85 87
62 | 62 95 75 57 56 54 71 91 93
63 | 63 101 79 64 62 57 75 95 96
64 | 64 108 89 73 67 64 79 101 104
65 | 65 120 102 84 77 73 89 108 113
66 | 66 133 115 97 92 84 102 120 125
67 | 67 150 129 117 106 97 115 133 143
68 | 68 163 149 130 124 117 129 150 156
69 | 69 177 165 154 145 130 149 163 170
70 | 70 191 182 168 162 154 165 177 185
71 | 71 54 41 28 26 23 37 51 53
72 | 72 57 44 32 30 28 41 54 56
73 | 73 64 48 39 34 32 44 57 62
74 | 74 73 60 46 42 39 48 64 67
75 | 75 84 72 59 52 46 60 73 77
76 | 76 97 83 74 66 59 72 84 92
77 | 77 117 103 90 81 74 83 97 106
78 | 78 130 119 107 98 90 103 117 124
79 | 79 154 141 128 118 107 119 130 145
80 | 80 168 160 152 144 128 141 154 162
81 | 81 28 17 11 9 7 15 23 26
82 | 82 32 21 14 12 11 17 28 30
83 | 83 39 29 22 19 14 21 32 34
84 | 84 46 38 31 25 22 29 39 42
85 | 85 59 47 43 35 31 38 46 52
86 | 86 74 63 58 49 43 47 59 66
87 | 87 90 80 76 65 58 63 74 81
88 | 88 107 100 94 82 76 80 90 98
89 | 89 128 121 116 105 94 100 107 118
90 | 90 152 146 138 126 116 121 128 144
91 | 91 11 5 4 2 1 3 7 9
92 | 92 14 10 8 6 4 5 11 12
93 | 93 22 18 16 13 8 10 14 19
94 | 94 31 27 24 20 16 18 22 25
95 | 95 43 40 36 33 24 27 31 35
96 | 96 58 55 50 45 36 40 43 49
97 | 97 76 70 69 61 50 55 58 65
98 | 98 94 88 86 78 69 70 76 82
99 | 99 116 111 110 99 86 88 94 105
100 | 100 138 136 131 123 110 111 116 126
101 |
--------------------------------------------------------------------------------
/PostProcessing/Output/parameters.txt:
--------------------------------------------------------------------------------
1 | 100 8 341 200 3 5
2 |
--------------------------------------------------------------------------------
/PostProcessing/Output/strains.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viktorrobin/FEM/519c6811c065ae8d896444d976c00c9b7642b79b/PostProcessing/Output/strains.xlsx
--------------------------------------------------------------------------------
/PostProcessing/Purge_output:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # http://forums.macrumors.com/showthread.php?t=475143
4 | # chmod 755 Run
5 |
6 | #Concatenate the three files
7 | #cd $f
8 |
9 | #cd PostProcessing/Output/output_increm
10 |
11 | #echo "The script you are running has basename `basename $0`, dirname `dirname $0`"
12 | #echo "The present working directory is `pwd`"
13 |
14 | cd "`dirname $0`"
15 | cd Output/output_increm
16 | rm -rfv displacements/* plastic_strains/* reactions/* specific_volume/* strains/* stresses/*
17 |
18 | #Erase useless files
19 | exit 0
--------------------------------------------------------------------------------
/PostProcessing/Purge_vtkmovie:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # http://forums.macrumors.com/showthread.php?t=475143
4 | # chmod 755 Run
5 |
6 | #Concatenate the three files
7 | #cd $f
8 |
9 | #cd PostProcessing/Output/output_increm
10 |
11 | #echo "The script you are running has basename `basename $0`, dirname `dirname $0`"
12 | #echo "The present working directory is `pwd`"
13 |
14 | cd "`dirname $0`"
15 | rm -rfv vtkmovie/*
16 |
17 | #Erase useless files
18 | exit 0
--------------------------------------------------------------------------------
/PostProcessing/output_vtk_python.py:
--------------------------------------------------------------------------------
1 | from __future__ import print_function
2 | import os
3 | import platform
4 | import numpy as np
5 | import random
6 | import shutil
7 |
8 | #http://dunne.uni-hd.de/VisuSimple/documents/vtkfileformat.html
9 | #http://people.sc.fsu.edu/~jburkardt/data/vtk/vtk.html
10 |
11 | syst = platform.system()
12 | base=os.path.dirname(os.path.abspath(__file__))
13 |
14 |
15 | ## Import parameters
16 | File=base+'/Output/parameters.txt'
17 | data=np.loadtxt(File,skiprows=0)
18 |
19 | nelem=int(data[0])
20 | nnode=int(data[1])
21 | npoint=int(data[2])
22 | nincs=int(data[3])+1
23 | ntype=int(data[4])
24 | ncrit=int(data[5])
25 |
26 | #num_files=print(len([name for name in os.listdir('.') if os.path.isfile("/vtkmovie")]))
27 | #path, dirs, files = os.walk("vtkmovie/").next()
28 |
29 | #Name of the model
30 | if ncrit==1:
31 | name_crit='Tresca'
32 | elif ncrit==2:
33 | name_crit='Von Mises'
34 | elif ncrit==3:
35 | name_crit='Mohr-Coulomb'
36 | elif ncrit==4:
37 | name_crit='Drucker-Prager'
38 | elif ncrit==5:
39 | name_crit='Modified Cam Clay'
40 | elif ncrit==6:
41 | name_crit='Lime Treated Soil Model'
42 |
43 |
44 | import sys
45 | for iincs in range(0,nincs):
46 |
47 | sys.stdout.write("\r{0} %".format((float(iincs)/float(nincs+1.0))*100))
48 | sys.stdout.flush()
49 |
50 | f = open('vtkmovie/vtk_'+str(iincs)+'.vtk','w')
51 |
52 | print("# vtk DataFile Version 1.0", file=f)
53 | print("2D Unstructured Grid of Linear Triangles", file=f)
54 | print("ASCII", file=f)
55 | print("", file=f)
56 | print("DATASET UNSTRUCTURED_GRID", file=f)
57 | print("POINTS "+str(npoint)+" float", file=f)
58 |
59 | #Write coordinates
60 |
61 |
62 | # Import coordinates
63 | #File=base+'/Output/coordinates.txt'
64 | File=base+'/Output/output_increm/displacements/'+str(iincs)+'.dat'
65 |
66 | #data=np.loadtxt(File,skiprows=1)
67 | data=np.loadtxt(File,skiprows=0)
68 | #dat2=np.loadtxt(File2,skiprows=1)
69 |
70 | coord=[]
71 | xmin=9999.0
72 | xmax=-9999.0
73 | ymin=9999.0
74 | ymax=-9999.0
75 |
76 | for i in range(0,len(data)):
77 | coord.append([])
78 | #coord[i].append((float(data[i,0])))
79 | #coord[i].append(float(data[i,1]))
80 |
81 | coord[i].append( float(data[i,0])+float(data[i,2]) )
82 | coord[i].append( float(data[i,1])+float(data[i,3]) )
83 |
84 | #if (float(data[i,0]) < xmin):
85 | # xmin = float(data[i,0])
86 | #
87 | #if (float(data[i,0]) > xmax):
88 | # xmax = float(data[i,0])
89 | #
90 | #if (float(data[i,1]) < ymin):
91 | # ymin = float(data[i,1])
92 | #
93 | #if (float(data[i,1]) > ymax):
94 | # ymax = float(data[i,1])
95 |
96 | for i in range(0,len(coord)):
97 | print(str(coord[i][0])+" "+str(coord[i][1])+" "+"0.0", file=f)
98 |
99 |
100 | print("", file=f)
101 |
102 | #Connectivity table
103 | # Import connectivity table
104 | File=base+'/Output/conntable.txt'
105 | data=np.loadtxt(File,skiprows=0)
106 | lnods=[]
107 |
108 | if (nelem>1):
109 | for i in range(0,len(data)):
110 | lnods.append([])
111 | for j in range(0,nnode):
112 | lnods[i].append((int(data[i,j+1])-1))
113 |
114 |
115 | if (nelem==1):
116 | for i in range(0,nelem+1):
117 | lnods.append([])
118 | for j in range(0,nnode):
119 | lnods[i].append((int(data[j+1])-1))
120 |
121 | print("CELLS "+str(nelem)+" "+str(nelem*(nnode+1)), file=f)
122 |
123 | #Re-order nodes
124 | for i in range(0,len(lnods)):
125 | myorder=[0,2,4,6,1,3,5,7]
126 | lnods_temp = [ lnods[i][j] for j in myorder]
127 | lnods[i]=lnods_temp
128 |
129 |
130 |
131 | for i in lnods:
132 | var=str(i)
133 | var=var[0:-1]
134 | var = var.replace("[",str(nnode)+" ")
135 | newstr = var.replace(",", " ")
136 | print(newstr, file=f)
137 |
138 | print("", file=f)
139 |
140 | print("CELL_TYPES "+str(nelem), file=f)
141 | if (nnode==8):
142 | type=23
143 | elif (nnode==4):
144 | type=9
145 | elif (nnode==4):
146 | type=28
147 |
148 |
149 | for i in range(0,nelem):
150 | print(type, file=f)
151 |
152 |
153 | #START PLOTING THE RESULTS: POINTS
154 | print("", file=f)
155 | print("POINT_DATA "+str(npoint), file=f)
156 |
157 | #-------------------------
158 | # STRAINS
159 | #-------------------------
160 |
161 | File=base+'/Output/output_increm/strains/'+str(iincs)
162 |
163 | x=[]
164 | y=[]
165 | eps_xx=[]
166 | eps_yy=[]
167 | eps_xy=[]
168 | eps_zz=[]
169 | ps_max=[]
170 | epstn=[]
171 |
172 | data=np.loadtxt(File,skiprows=1)
173 | for i in range(0,len(data)):
174 | if data[i,0]==0:
175 | x.append((float(data[i,3])))
176 | y.append(float(data[i,4]))
177 | eps_xx.append(float(data[i,5]))
178 | eps_yy.append(float(data[i,6]))
179 | eps_xy.append(float(data[i,7]))
180 | eps_zz.append(float(data[i,8]))
181 | ps_max.append(float(data[i,9]))
182 | epstn.append(float(data[i,12]))
183 |
184 | strains=[eps_xx,eps_yy,eps_xy,eps_zz,ps_max,epstn]
185 |
186 | if ntype==3:
187 | names=['eps_rr','eps_zz','eps_rz','eps_tt','eps_max_principal','eps_p']
188 | else:
189 | names=['eps_xx','eps_yy','eps_xy','eps_zz','eps_max_principal','eps_p']
190 | compt=-1
191 |
192 | for res in strains:
193 | compt += 1
194 | print("SCALARS " +names[compt]+ " float", file=f)
195 | print("LOOKUP_TABLE default", file=f)
196 | for i in res:
197 | print(i, file=f)
198 | print("", file=f)
199 |
200 | #-------------------------
201 | # STRESSES
202 | #-------------------------
203 |
204 | File=base+'/Output/output_increm/stresses/'+str(iincs)
205 |
206 | x=[]
207 | y=[]
208 | s_xx=[]
209 | s_yy=[]
210 | s_xy=[]
211 | s_zz=[]
212 | s_max=[]
213 |
214 | data=np.loadtxt(File,skiprows=1)
215 | for i in range(0,len(data)):
216 | if data[i,0]==0:
217 | x.append((float(data[i,3])))
218 | y.append(float(data[i,4]))
219 | s_xx.append(float(data[i,5]))
220 | s_yy.append(float(data[i,6]))
221 | s_xy.append(float(data[i,7]))
222 | s_zz.append(float(data[i,8]))
223 | s_max.append(float(data[i,9]))
224 |
225 |
226 | stresses=[s_xx,s_yy,s_xy,s_zz,s_max]
227 | if ntype==3:
228 | names=['s_rr','s_zz','s_rz','s_tt','s_max_principal']
229 | else:
230 | names=['s_xx','s_yy','s_xy','s_zz','s_max_principal']
231 |
232 | compt=-1
233 |
234 | for res in stresses:
235 | compt += 1
236 | print("SCALARS " +names[compt]+ " float", file=f)
237 | print("LOOKUP_TABLE default", file=f)
238 | for i in res:
239 | print(i, file=f)
240 | print("", file=f)
241 |
242 | #------------------------------
243 | # DEVIATORIC STRESS SXX-SYY
244 | #------------------------------
245 |
246 |
247 | print("SCALARS " +names[compt]+ " float", file=f)
248 | print("LOOKUP_TABLE default", file=f)
249 | for i,j in zip(s_xx,s_yy):
250 | print(i, file=f)
251 | print("", file=f)
252 |
253 |
254 | #NODAL DISPLACEMENTS
255 | File=base+'/Output/output_increm/displacements/'+str(iincs)+'.dat'
256 | data=np.loadtxt(File,skiprows=0)
257 |
258 | ux=[]
259 | uy=[]
260 | u_norme=[]
261 |
262 | for i in range(0,len(data)):
263 | ux.append((float(data[i,2])))
264 | uy.append(float(data[i,3]))
265 | u_norme.append( np.sqrt( (float(data[i,2]))**2 + (float(data[i,3]))**2 ) )
266 |
267 | strains=[ux,uy,u_norme]
268 | names=["ux","uy","u_norme"]
269 |
270 | compt=-1
271 |
272 | for res in strains:
273 | compt += 1
274 | print("SCALARS " +names[compt]+ " float", file=f)
275 | print("LOOKUP_TABLE default", file=f)
276 | for i in res:
277 | print(i, file=f)
278 |
279 | print("", file=f)
280 |
281 | #NODAL FORCES
282 | File=base+'/Output/output_increm/reactions/'+str(iincs)+'.dat'
283 | data=np.loadtxt(File,skiprows=0)
284 |
285 | fx=[]
286 | fy=[]
287 | f_norme=[]
288 |
289 | for i in range(0,len(data)):
290 | fx.append((float(data[i,1])))
291 | fy.append(float(data[i,2]))
292 | f_norme.append( np.sqrt( (float(data[i,1]))**2 + (float(data[i,2]))**2 ) )
293 |
294 | strains=[fx,fy,f_norme]
295 | names=["Fx","Fy","F_norme"]
296 |
297 | compt=-1
298 |
299 | for res in strains:
300 | compt += 1
301 | print("SCALARS " +names[compt]+ " float", file=f)
302 | print("LOOKUP_TABLE default", file=f)
303 | for i in res:
304 | print(i, file=f)
305 |
306 | print("", file=f)
307 |
308 | if ncrit==5 or ncrit==6:
309 | #YIELD STRESS AT NODAL POINTS
310 | File=base+'/Output/output_increm/plastic_strains/'+str(iincs)
311 | data=np.loadtxt(File,skiprows=0)
312 |
313 | yield_node=[]
314 | epstnp=[]
315 | deviatoric_stress=[]
316 | effective_mean_stress=[]
317 |
318 | for i in range(0,len(data)):
319 | yield_node.append((float(data[i,5])))
320 | epstnp.append((float(data[i,6])))
321 | deviatoric_stress.append((float(data[i,7])))
322 | effective_mean_stress.append((float(data[i,8])))
323 |
324 | print("SCALARS yield_stress float", file=f)
325 | print("LOOKUP_TABLE default", file=f)
326 | for i in yield_node:
327 | print(i, file=f)
328 |
329 | print("", file=f)
330 |
331 | #Plastic volumetric deformations AT NODAL POINTS
332 | print("SCALARS epstn_p float", file=f)
333 | print("LOOKUP_TABLE default", file=f)
334 | for i in epstnp:
335 | print(i, file=f)
336 |
337 | print("", file=f)
338 |
339 | #Deviatoric stress AT NODAL POINTS
340 | print("SCALARS deviatoric_stress float", file=f)
341 | print("LOOKUP_TABLE default", file=f)
342 | for i in deviatoric_stress:
343 | print(i, file=f)
344 |
345 | print("", file=f)
346 |
347 | #effective mean stress AT NODAL POINTS
348 | print("SCALARS eff_mean_stress float", file=f)
349 | print("LOOKUP_TABLE default", file=f)
350 | for i in effective_mean_stress:
351 | print(i, file=f)
352 |
353 | print("", file=f)
354 |
355 | #SPECIFIC VOLUME AT NODAL POINTS
356 | File=base+'/Output/output_increm/specific_volume/'+str(iincs)+'.dat'
357 | data=np.loadtxt(File,skiprows=0)
358 |
359 | spe_vol=[]
360 |
361 |
362 | for i in range(0,len(data)):
363 | spe_vol.append((float(data[i,5])))
364 |
365 | print("SCALARS specific_volume float", file=f)
366 | print("LOOKUP_TABLE default", file=f)
367 | for i in spe_vol:
368 | print(i, file=f)
369 |
370 | print("", file=f)
371 |
372 |
373 | #START PLOTING THE RESULTS: VECTORS
374 | #DISPLACEMENTS VECTORS
375 | print("VECTORS displacements_vec float", file=f)
376 | #print("LOOKUP_TABLE default", file=f)
377 |
378 | for i,j in zip(ux,uy):
379 | alpha=np.sqrt( (i*i + j*j)*1.5)
380 |
381 | if alpha==0.0:
382 | alpha=1.0
383 |
384 | alpha=1.0
385 |
386 | print(str(i/alpha)+' '+str(j/alpha)+' '+'0.0',file=f)
387 | # print(str(ux[i])+" "+str(uy[i])+" "+"0.0", file=f)
388 |
389 |
390 | f.close()
391 |
392 | print("")
393 | print("VTK FILES GENERATED")
394 | #shutil.copy2('vtkmovie/vtk_'+str(iincs)+'.txt', 'vtkmovie/vtk_'+str(iincs)+'.vtk')
395 |
396 | #f = open('myfile.txt','w')
397 | #
398 | #
399 | #f.write('hi there\n') # python will convert \n to os.linesep
400 | #f.close() # you
401 |
402 | #f = open('testvtk2.txt','w')
403 | #
404 | #print("# vtk DataFile Version 1.0", file=f)
405 | #print("2D Unstructured Grid of Linear Triangles", file=f)
406 | #print("ASCII", file=f)
407 | #print("", file=f)
408 | #print("DATASET UNSTRUCTURED_GRID", file=f)
409 | #print("POINTS "+str(npoint+1)+" float", file=f)
410 | #
411 | ##Write coordinates
412 | #
413 | #
414 | ## Import coordinates
415 | #File=base+'/Output/coordinates.txt'
416 | #data=np.loadtxt(File,skiprows=1)
417 | #
418 | #coord=[]
419 | #xmin=9999.0
420 | #xmax=-9999.0
421 | #ymin=9999.0
422 | #ymax=-9999.0
423 | #
424 | #for i in range(0,len(data)):
425 | # coord.append([])
426 | # coord[i].append((float(data[i,0])))
427 | # coord[i].append(float(data[i,1]))
428 | #
429 | # if (float(data[i,0]) < xmin):
430 | # xmin = float(data[i,0])
431 | #
432 | # if (float(data[i,0]) > xmax):
433 | # xmax = float(data[i,0])
434 | #
435 | # if (float(data[i,1]) < ymin):
436 | # ymin = float(data[i,1])
437 | #
438 | # if (float(data[i,1]) > ymax):
439 | # ymax = float(data[i,1])
440 | #
441 | #for i in range(0,len(coord)):
442 | # print(str(coord[i][0])+" "+str(coord[i][1])+" "+"0.0", file=f)
443 | #
444 | #print(str(1.0)+" "+str(1.0)+" "+"0.0", file=f)
445 | #
446 | #
447 | #print("", file=f)
448 | #
449 | ##Connectivity table
450 | ## Import connectivity table
451 | #File=base+'/Output/conntable.txt'
452 | #data=np.loadtxt(File,skiprows=0)
453 | #lnods=[]
454 | #
455 | #if (nelem>1):
456 | # for i in range(0,len(data)):
457 | # lnods.append([])
458 | # for j in range(0,nnode):
459 | # lnods[i].append((int(data[i,j+1])-1))
460 | #
461 | #
462 | #if (nelem==1):
463 | # for i in range(0,nelem+1):
464 | # lnods.append([])
465 | # for j in range(0,nnode):
466 | # lnods[i].append((int(data[j+1])-1))
467 | #
468 | #print("CELLS "+str(nelem+1)+" "+str(nelem*(nnode+1)+2), file=f)
469 | #
470 | ##Re-order nodes
471 | #for i in range(0,len(lnods)):
472 | # myorder=[0,2,4,6,1,3,5,7]
473 | # lnods_temp = [ lnods[i][j] for j in myorder]
474 | # lnods[i]=lnods_temp
475 | #
476 | #
477 | #
478 | #for i in lnods:
479 | # var=str(i)
480 | # var=var[0:-1]
481 | # var = var.replace("[",str(nnode)+" ")
482 | # newstr = var.replace(",", " ")
483 | # print(newstr, file=f)
484 | #
485 | #print("1 21", file=f)
486 | #
487 | #print("", file=f)
488 | #
489 | #print("CELL_TYPES "+str(nelem+1), file=f)
490 | #if (nnode==8):
491 | # type=23
492 | #elif (nnode==4):
493 | # type=9
494 | #for i in range(0,nelem):
495 | # print(type, file=f)
496 | #
497 | #print("1", file=f)
498 | #print("", file=f)
499 | #
500 | ##Write strains
501 | #print("POINT_DATA "+str(npoint+1), file=f)
502 | #print("SCALARS pressure float", file=f)
503 | #print("LOOKUP_TABLE default", file=f)
504 | #
505 | ##Plot strains
506 | #File=base+'/Output/strains.txt'
507 | #
508 | #x=[]
509 | #y=[]
510 | #eps_xx=[]
511 | #eps_yy=[]
512 | #eps_xy=[]
513 | #eps_zz=[]
514 | #ps_max=[]
515 | #
516 | #uy=[]
517 | #u_norme=[]
518 | #
519 | #data=np.loadtxt(File,skiprows=1)
520 | #for i in range(0,len(data)):
521 | # x.append((float(data[i,3])))
522 | # y.append(float(data[i,4]))
523 | # eps_xx.append(float(data[i,5]))
524 | # eps_yy.append(float(data[i,6]))
525 | # eps_xy.append(float(data[i,7]))
526 | # eps_zz.append(float(data[i,8]))
527 | # ps_max.append(float(data[i,9]))
528 | #
529 | #
530 | #for i in range(0,npoint):
531 | # print(random.random()*10, file=f)
532 | #print(1000.0, file=f)
533 | #
534 | #f.close()
535 | #
536 | #
537 | #import shutil
538 | #shutil.copy2('testvtk2.txt', 'testvtk2.vtk')
539 | #
540 | ##f = open('myfile.txt','w')
541 | ##
542 | ##
543 | ##f.write('hi there\n') # python will convert \n to os.linesep
544 | ##f.close() # you
545 | #
546 |
--------------------------------------------------------------------------------
/PreProcessing/Triaxial.gid/Triaxial.cnd:
--------------------------------------------------------------------------------
1 | BOOK:Stage 1
2 | NUMBER: 1 CONDITION: Prescribed_Displacements
3 | CONDTYPE: over points
4 | CONDMESHTYPE: over nodes
5 | QUESTION: Type#CB#(01,10,11)
6 | VALUE: 01
7 | help: 10=X, 01=Y, 11=X+Y
8 | QUESTION: X-Value
9 | VALUE: 0.0
10 | QUESTION: Y-Value
11 | VALUE: 0.0
12 | END CONDITION
13 | NUMBER: 2 CONDITION: Point_Load
14 | CONDTYPE: over points
15 | CONDMESHTYPE: over nodes
16 | QUESTION: FX-Value#UNITS#
17 | VALUE: 0.0N
18 | QUESTION: FY-Value#UNITS#
19 | VALUE: 0.0N
20 | END CONDITION
21 | NUMBER: 3 CONDITION: Distributed_Loading
22 | CONDTYPE: over lines
23 | CONDMESHTYPE: over face elements
24 | QUESTION: Normal-Pressure#UNITS#
25 | VALUE: 0kPa
26 | QUESTION: Tangent-Pressure#UNITS#
27 | VALUE: 0kPa
28 | END CONDITION
29 | BOOK:Stage 2
30 | NUMBER: 4 CONDITION: Prescribed_Displacements_S2
31 | CONDTYPE: over points
32 | CONDMESHTYPE: over nodes
33 | QUESTION: Type_S2#CB#(01,10,11)
34 | VALUE: 01
35 | help: 01=X, 10=Y, 11=X+Y
36 | QUESTION: X-Value_S2
37 | VALUE: 0.0
38 | QUESTION: Y-Value_S2
39 | VALUE: 0.0
40 | END CONDITION
41 | NUMBER: 5 CONDITION: Point_Load_S2
42 | CONDTYPE: over points
43 | CONDMESHTYPE: over nodes
44 | QUESTION: FX-Value_S2#UNITS#
45 | VALUE: 0.0N
46 | QUESTION: FY-Value_S2#UNITS#
47 | VALUE: 0.0N
48 | END CONDITION
49 | NUMBER: 6 CONDITION: Distributed_Loading_S2
50 | CONDTYPE: over lines
51 | CONDMESHTYPE: over face elements
52 | QUESTION: Normal-Pressure_S2#UNITS#
53 | VALUE: 0Pa
54 | QUESTION: Tangent-Pressure_S2#UNITS#
55 | VALUE: 0Pa
56 | END CONDITION
57 |
--------------------------------------------------------------------------------
/PreProcessing/Triaxial.gid/Triaxial.geo:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viktorrobin/FEM/519c6811c065ae8d896444d976c00c9b7642b79b/PreProcessing/Triaxial.gid/Triaxial.geo
--------------------------------------------------------------------------------
/PreProcessing/Triaxial.gid/Triaxial.lin:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viktorrobin/FEM/519c6811c065ae8d896444d976c00c9b7642b79b/PreProcessing/Triaxial.gid/Triaxial.lin
--------------------------------------------------------------------------------
/PreProcessing/Triaxial.gid/Triaxial.mat:
--------------------------------------------------------------------------------
1 | NUMBER: 1 MATERIAL: Soil_1
2 | QUESTION: Simga_y/Cohesion#UNITS#
3 | VALUE: 500Pa
4 | QUESTION: Friction_angle
5 | VALUE: 25
6 | QUESTION: Hardening_Parameter
7 | VALUE: 0.1
8 | QUESTION: E#UNITS#
9 | VALUE: 40000Pa
10 | QUESTION: Poisson
11 | VALUE: 0.25
12 | QUESTION: Mass_Density
13 | VALUE: 0
14 | help: Mg/m^3
15 | QUESTION: Thickness#UNITS#
16 | VALUE: 0m
17 | END MATERIAL
18 | NUMBER: 2 MATERIAL: Soil_2
19 | QUESTION: Simga_y/Cohesion#UNITS#
20 | VALUE: 500Pa
21 | QUESTION: Friction_angle
22 | VALUE: 25
23 | QUESTION: Hardening_Parameter
24 | VALUE: 0.1
25 | QUESTION: E#UNITS#
26 | VALUE: 40000Pa
27 | QUESTION: Poisson
28 | VALUE: 0.25
29 | QUESTION: Mass_Density
30 | VALUE: 2.66
31 | help: Mg/m^3
32 | QUESTION: Thickness#UNITS#
33 | VALUE: 0m
34 | END MATERIAL
35 | NUMBER: 3 MATERIAL: Cam-Clay
36 | QUESTION: Yield_Stress_pyI#UNITS#
37 | VALUE: 170kPa
38 | QUESTION: lambda
39 | VALUE: 0.075
40 | QUESTION: kappa
41 | VALUE: 0.005
42 | QUESTION: v0_Nlambda
43 | VALUE: 1.99
44 | help: initial specific volume on ncl at 1 Pa
45 | QUESTION: M
46 | VALUE: 1.0
47 | QUESTION: E#UNITS#
48 | VALUE: 50000kPa
49 | QUESTION: Poisson
50 | VALUE: 0.25
51 | QUESTION: Mass_Density#UNITS#
52 | VALUE: 0kg/m^3
53 | QUESTION: Thickness#UNITS#
54 | VALUE: 0m
55 | END MATERIAL
56 | NUMBER: 4 MATERIAL: Lime_Treated_Soil_1
57 | QUESTION: Lime_Content
58 | VALUE: 1
59 | help: (%)
60 | QUESTION: Yield_Stress_pyI#UNITS#
61 | VALUE: 500Pa
62 | QUESTION: Degradation_Stress_pyII#UNITS#
63 | VALUE: 1000Pa
64 | QUESTION: lambda
65 | VALUE: 0.1
66 | QUESTION: kappa
67 | VALUE: 0.05
68 | QUESTION: Dei
69 | VALUE: 0.2
70 | QUESTION: Dec
71 | VALUE: 0.1
72 | QUESTION: beta
73 | VALUE: 0.05
74 | QUESTION: v0_Nlambda
75 | VALUE: 2.1
76 | help: initial specific volume on ncl at 1 Pa
77 | QUESTION: pb#UNITS#
78 | VALUE: -50Pa
79 | help: tensile strength=-c/M
80 | QUESTION: M
81 | VALUE: 1.0
82 | QUESTION: E#UNITS#
83 | VALUE: 40000Pa
84 | QUESTION: Poisson
85 | VALUE: 0.25
86 | QUESTION: Mass_Density
87 | VALUE: 2.66
88 | help: Mg/m^3
89 | END MATERIAL
90 | NUMBER: 5 MATERIAL: Lime_Treated_Soil_2
91 | QUESTION: Lime_Content
92 | VALUE: 1
93 | help: (%)
94 | QUESTION: Yield_Stress_pyI#UNITS#
95 | VALUE: 750Pa
96 | QUESTION: Degradation_Stress_pyII#UNITS#
97 | VALUE: 1000Pa
98 | QUESTION: lambda
99 | VALUE: 0.1
100 | QUESTION: kappa
101 | VALUE: 0.05
102 | QUESTION: Dei
103 | VALUE: 0.2
104 | QUESTION: Dec
105 | VALUE: 0.1
106 | QUESTION: beta
107 | VALUE: 0.05
108 | QUESTION: v0_Nlambda
109 | VALUE: 2.1
110 | help: initial specific volume on ncl at 1 Pa
111 | QUESTION: pb#UNITS#
112 | VALUE: -50Pa
113 | help: tensile strength=-c/M
114 | QUESTION: M
115 | VALUE: 1.0
116 | QUESTION: E#UNITS#
117 | VALUE: 40000Pa
118 | QUESTION: Poisson
119 | VALUE: 0.25
120 | QUESTION: Mass_Density
121 | VALUE: 2.66
122 | help: Mg/m^3
123 | END MATERIAL
124 |
--------------------------------------------------------------------------------
/PreProcessing/Triaxial.gid/Triaxial.msh:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viktorrobin/FEM/519c6811c065ae8d896444d976c00c9b7642b79b/PreProcessing/Triaxial.gid/Triaxial.msh
--------------------------------------------------------------------------------
/PreProcessing/Triaxial.gid/Triaxial.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viktorrobin/FEM/519c6811c065ae8d896444d976c00c9b7642b79b/PreProcessing/Triaxial.gid/Triaxial.png
--------------------------------------------------------------------------------
/PreProcessing/Triaxial.gid/Triaxial.prb:
--------------------------------------------------------------------------------
1 | PROBLEM DATA
2 | title: General Data
3 | QUESTION: Problem_name
4 | VALUE: Test mega
5 | QUESTION: Yield_Criterion#CB#(Tresca,Von_Mises,Mohr-Coulomb,Drucker-Prager,Modified_Cam_Clay,Lime_Treated_Soils)
6 | VALUE: Modified_Cam_Clay
7 | QUESTION: No_Gauss#CB#(2,3)
8 | VALUE: 3
9 | QUESTION: Type_of_problem#CB#(Plane-Stress,Plane-Strain,Axisymmetric)
10 | VALUE: Axisymmetric
11 | QUESTION: Tolerance
12 | VALUE: 1e-6
13 | QUESTION: Solver_type#CB#(Conjugate_gradient)
14 | VALUE: Conjugate_gradient
15 | QUESTION: Algorithm#CB#(Initial_Stiffness_Method)
16 | VALUE: Initial_Stiffness_Method
17 | TITLE: Stage 1
18 | QUESTION: Number_of_increments_S1
19 | VALUE: 20
20 | QUESTION: Prescribed_Disp#CB#(0,1)
21 | VALUE: 1
22 | QUESTION: Point_Load#CB#(0,1)
23 | VALUE:
24 | QUESTION: Distributed_Loading#CB#(0,1)
25 | VALUE: 1
26 | QUESTION: Gravity_Loading#CB#(0,1)
27 | VALUE: 0
28 | DEPENDENCIES: (0,HIDE,theta,#current#,HIDE,g_force,#current#)
29 | DEPENDENCIES: (1,RESTORE,theta,#current#,RESTORE,g_force,#current#)
30 | QUESTION: theta
31 | VALUE: 0.0
32 | help: Angle between gravity axis and positive y-axis. Anticlockwise. Degrees.
33 | QUESTION: g_force#UNITS#
34 | VALUE: 9.81m/s^2
35 | TITLE: Stage 2
36 | QUESTION: Stage_2#CB#(0,1)
37 | VALUE: 1
38 | DEPENDENCIES: (0,HIDE,Number_of_increments_S2,#current#,HIDE,Prescribed_Disp_S2,#current#,HIDE,Point_Load_S2,#current#,HIDE,Distributed_Loading_S2,#current#,HIDE,theta_S2,#current#,HIDE,g_force_S2,#current#,HIDE,Gravity_Loading_S2,#current#)
39 | DEPENDENCIES: (1,RESTORE,Number_of_increments_S2,#current#,RESTORE,Prescribed_Disp_S2,#current#,RESTORE,Point_Load_S2,#current#,RESTORE,Distributed_Loading_S2,#current#,RESTORE,Gravity_Loading_S2,#current#)
40 | QUESTION: Number_of_increments_S2
41 | VALUE: 20
42 | QUESTION: Prescribed_Disp_S2#CB#(0,1)
43 | VALUE: 1
44 | QUESTION: Point_Load_S2#CB#(0,1)
45 | VALUE:
46 | QUESTION: Distributed_Loading_S2#CB#(0,1)
47 | VALUE:
48 | QUESTION: Gravity_Loading_S2#CB#(0,1)
49 | VALUE: 0
50 | DEPENDENCIES: (0,HIDE,theta_S2,#current#,HIDE,g_force_S2,#current#)
51 | DEPENDENCIES: (1,RESTORE,theta_S2,#current#,RESTORE,g_force_S2,#current#)
52 | QUESTION: theta_S2
53 | VALUE: 0.0
54 | help: Angle between gravity axis and positive y-axis. Anticlockwise. Degrees.
55 | QUESTION: g_force_S2#UNITS#
56 | VALUE: 9.81m/s^2
57 | END PROBLEM DATA
58 | INTERVAL DATA
59 | END INTERVAL DATA
60 |
--------------------------------------------------------------------------------
/PreProcessing/Triaxial.gid/Triaxial.uni:
--------------------------------------------------------------------------------
1 | model: m
2 | problem: INTERNATIONAL
3 |
--------------------------------------------------------------------------------
/PreProcessing/Triaxial.gid/Triaxial.vv:
--------------------------------------------------------------------------------
1 | BeginZE C:\Users\vpmr201\Dropbox\These\Numerical_modelling\FEM_CamClay_PostProc\PreProcessing\Triaxial.gid\Triaxial.vv
2 | x -33.968654632568359 51.468654632568359
3 | y 37.916667938232422 -2.9166684150695801
4 | z -61.25 61.25
5 | e 20.416666030883789
6 | v 0 0 0
7 | r 1
8 | m 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1
9 | c 8.75 17.5 0
10 | pd 0
11 | pno 0
12 | pfo 0
13 | pf 4
14 | pv 0
15 | NowUse 1
16 | DrawingType 0
17 | LightVector 90 90 150 0
18 | OGLShadow(UseShadows) 0
19 | OGLShadow(RenderMode) RenderNice
20 | OGLShadow(ShadowBias) -0.002
21 | OGLShadow(AmbientShadows) 1
22 | OGLShadow(UseFBO) 1
23 | OGLShadow(FBOSize) 2048
24 | OGLShadow(DimmedLightFactor) 0.02
25 | OGLStereo(UseStereo) 0
26 | OGLStereo(RelativeEyeDistance) 1
27 | OGLStereo(FlipEyes) 0
28 | OGLStereo(StereoMode) AnaglyphColors
29 | OGLStereo(EyeDistance) 0.075
30 | OGLStereo(LeftEyeDistance) 1 0 0 1
31 | OGLStereo(RightEyeDistance) 0 1 1 1
32 | EndZE C:\Users\vpmr201\Dropbox\These\Numerical_modelling\FEM_CamClay_PostProc\PreProcessing\Triaxial.gid\Triaxial.vv
33 |
34 | BeginMirror
35 | Mirror 0 Angle 0.0 AngleFake -15.0 SizeFactor 2.0 HeightOffset 0.25 Color #d9e5f24d Backlight Off EdgeStyle No Type Scene DrawMode Mirror
36 | EndMirror
37 |
38 | BeginInfo
39 | eJzNU8tu2zAQvOsr9hgDiiE7TmoIRQG7VgyhfgS28ujJoKW1Q4QiBZKK5Qb59y4pGz206KFogV6k1T5mOTNUloth97rb60H2QsFF+9EJgkztBfS6H2Jg5gUL2CkNDPYoUfMcNMoCNeowGPnqHW9QUEvJLBRocs0ry5WEC+gPOnEAANPTJC8rgSVKy1xD2E7etpP9QehaJ6reChzXux3qGI5ofHZtaaFqsz6xmo5HIXxWZaUM99tQMhos4OKBG8s6IUw0O4BV8MhloQ4hLCuU0xmYuqqUtiE4mHvD5Z5WE5IgjltuTQxDYliE9NprROmCragRmCwgAiaqZxb+mI1glOd1WQtP6YQQtQjRGSH6HcJVHyZY2Wc/63uGjq/MuRhTxjXSkrrhgjN9hK0XoU1HUDsrBDuS2FFzuWs6HkC9npNNdNnsOlAJJtEEU2UJ+B8bBrmqjn/fJJLpj026GfzKpd5Ni0HvEwhF/4dRgddBeC8eksVkuYrhbc5zrYzaWRJCkzyey7sXmlqSVeKappP07N57O71ap8sFse32upE3LF3fzUZfIV3cLlfzUearb54TyQHDsFXDBV4MenslIArptjj+V/0QTEvcVY3/OUGqrt/48fETJK3UJNqtVtJCez1cdZbO02xNC93HnDWQYWNrjbDm35BOGfUH50rSXj0DqSx4juRYPxoMf6o+oLan8vWNq45eGRfunsErL+hgJZaK/DB+QQTz8dGiOcHwsi7hoPSLO6usyy1qUDvAE3gM1+Tdl8ATS56yZOHE9MefzjaU2Gz3mp3jigmkH6zY2JaTyz+mi405sGrzzKUlnOnsKfa2rpMVeRMHS3qSHXSyc0jOwDxZ3LvUd+v6wOs=
40 |
41 | EndInfo
42 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # FEM
2 | Finite Element Modelling in Fortran for structural problems, solid mechanics, geotechnic and artificially structured soil
3 |
4 | 
5 |
6 | Based on *Based on Finite Elements in Plasticity: Theory and Practice* by Owen & Hinton
7 |
8 | ## Yield criterion implemented
9 |
10 | - Von Mises
11 | - Mohr-Coulomb
12 | - Tresca
13 | - Drucker-Prager
14 | - Cam-Clay modified
15 | - [MAAS (Robin et al., 2015)](https://ore.exeter.ac.uk/repository/bitstream/handle/10871/20697/An%20Efective%20Constitutive%20Model%20for%20Lime%20Treated%20Soils.pdf?sequence=2&isAllowed=y)
16 |
17 | ## Model MASS
18 |
19 | 
20 |
21 | - [MAAS (Robin et al., 2015)](https://ore.exeter.ac.uk/repository/bitstream/handle/10871/20697/An%20Efective%20Constitutive%20Model%20for%20Lime%20Treated%20Soils.pdf?sequence=2&isAllowed=y)
22 | - [Robin, 2014](https://core.ac.uk/download/pdf/43094182.pdf)
23 |
24 | ## Code FEMASS: Instructions
25 | This code includes the pre-processing, processing, and post-processing of geotechnical problems.
26 |
27 | ### Requirements
28 |
29 | - gfortran. Works on Mac and Linux. Windows not tested.
30 | - Python
31 | - GiD
32 | - Paraview
33 |
34 |
35 | ## Pre-processing : GID
36 |
37 | Import the Problem_Type (folder ProblemType_GiD) into GiD. The procedure is the same as the one to import Code_Bright.
38 |
39 | To plot the mesh, give the values of the parameters, etc… follow the procedure given in the pdf ProblemType_GiD > Tutorial_II_Shallow_Foundation.pdf (source from Code_Bright).
40 |
41 | When everything is ready, save the project Proj_FEMASS.gid in the folder `FEMASS > PreProcessing`.
42 |
43 | Run the calculations: this will generate an output file Proj_FEMASS.dat that contains all the informations required for the FEM simulations, the format being based on the approach given in Owen and Hinton.
44 |
45 | ## Processing: Fortran
46 |
47 | Open FEMASS > subroutines > input_data_GiD.f90 and change l.28 to change the path to your GiD Project.
48 |
49 | From a termina:
50 |
51 | ```basH
52 | cd /path/to/folder/FEMASS
53 | gfortran –llapack –lblas main.f90
54 | ./a.out
55 | ```
56 |
57 | This will start the calculations.
58 |
59 | All the global variables are described in `▸ FEMASS ▸ workspace ▸ Module.f90`
60 |
61 | ## Post-Processing: Paraview
62 |
63 | During processing stage, the results at each increment are saved in the folder:
64 | `FEMASS ▸ PostProcessing ▸ Output ▸ output_increm`
65 |
66 | Before a simulation, it can be good to erase all the files already present by running the python scripts `Purge_output.py` and `Purge_vtkmovie.py`.
67 |
68 | Run the Python script `output_vtk_python.py`.
69 | This will create as many number of vtk files as increments performed during the simulation in the folder vtk_movie.
70 |
71 | Open this folder with Paraview; it will automatically load all the increments, and allow the visualisation of the complete simulation.
72 | Numerous parameters can be visualised: stresses, strains, etc..
73 |
74 |
75 |
76 |
77 |
78 |
--------------------------------------------------------------------------------
/figures/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viktorrobin/FEM/519c6811c065ae8d896444d976c00c9b7642b79b/figures/.DS_Store
--------------------------------------------------------------------------------
/figures/MCC-DP-hybrid-1-01.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viktorrobin/FEM/519c6811c065ae8d896444d976c00c9b7642b79b/figures/MCC-DP-hybrid-1-01.png
--------------------------------------------------------------------------------
/figures/PostProcessing-FieldDisp2-small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viktorrobin/FEM/519c6811c065ae8d896444d976c00c9b7642b79b/figures/PostProcessing-FieldDisp2-small.png
--------------------------------------------------------------------------------
/libblas.a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viktorrobin/FEM/519c6811c065ae8d896444d976c00c9b7642b79b/libblas.a
--------------------------------------------------------------------------------
/liblapack.a:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/viktorrobin/FEM/519c6811c065ae8d896444d976c00c9b7642b79b/liblapack.a
--------------------------------------------------------------------------------
/main.f90:
--------------------------------------------------------------------------------
1 |
2 | !******************************************************************
3 | ! PROGRAM FOR THE ELASTO PLASTIC ANALYSIS OF PLANE STRESSES,
4 | ! PLAN STRAN,AND AXISYMETRIC SOLIDS (FOR SATURATED SOILS)
5 | !******************************************************************
6 |
7 | ! Based on Finite Elements in Plasticity: "Theory and Practice by Owen & Hinton"
8 | ! Fortran 90 version by Victor ROBIN - 22.09.12, Nancy
9 |
10 | ! Number of degrees of freedom per node: 2
11 | ! 1-X-DISPLACENETS
12 | ! 2-Y-DISPLACEMENTS
13 |
14 | ! Version 2 for ELASTIC & PLASTIC behaviour: Von Mises, Mohr-Coulomb, Tresca, Drucker-Prager
15 | ! Started: 10.08.2013, Exeter
16 | ! Finished: 18.08.2013
17 | ! By: Victor ROBIN
18 | !******************************************************************
19 |
20 | include 'workspace/Module.f90' !Compile global variables
21 |
22 | program elast
23 |
24 | use variables ! Use gobal variables
25 |
26 | implicit none
27 |
28 | ! Declare variables
29 | integer :: i, j, loca, itotv, rep_a, rep_c
30 | double precision :: prev_res
31 |
32 | include 'subroutines/interface.f90'
33 |
34 | real, dimension(2) :: tarray
35 | real :: e
36 | INTEGER :: clock_start,clock_end,clock_rate, ielapsed,ielapsed1,ielapsed2,ielapsed3,ielapsed4
37 | double precision:: elapsed_time,cstart,cend,crate, ave1,ave2,ave3,ave4
38 | integer :: info,n
39 |
40 | ! To deactivate the ouput in terminal (time optimization), uncomment this line:
41 | ! open(unit=6,file='temp/output_terminal.txt')
42 |
43 |
44 | CALL SYSTEM_CLOCK(COUNT_RATE=clock_rate) ! Find the rate
45 | CALL SYSTEM_CLOCK(COUNT=clock_start) ! Start timing
46 |
47 | e=ETIME(tarray)
48 |
49 | ! Timer
50 | call cpu_time(start)
51 |
52 | !***************************************
53 | ! Version without GID:
54 |
55 | ! Preset variables associated with dynamic dimensioning
56 | ! call dimen( )
57 |
58 | ! ! Call the subroutine which reads most of the problem data
59 | ! call input( )
60 |
61 | ! ! Call the subroutine which calculates the consistent load vector for each element after reading the relevant input data
62 | ! call loadps( )
63 | !***************************************
64 |
65 | call input_data_GiD( )
66 | call Read_Bound_Cond_Gid( )
67 |
68 | ! Initialise certain arrays
69 | call zero( )
70 |
71 | ! Output initial state
72 | iincs=0
73 | count_file=0
74 |
75 | call output_increm( )
76 |
77 | do istage=1,nstage
78 |
79 | ! In case there are more than one stage, read the boundaries conditions for the second stage
80 | if (istage == 2) then
81 | call Read_Bound_Cond_Gid_S2()
82 | end if
83 |
84 | ! Loop over each increment
85 | do iincs=1,nincs
86 |
87 | count_file=count_file+1
88 | ! Start Timer
89 | call cpu_time(start_inc)
90 |
91 | ! Read data for current increment
92 | call increm( )
93 |
94 | ! Evaluation of the element stiffness matrices Ke
95 | call stiffp( )
96 |
97 | ! Assembly global stiffness matrix [K] and global load vector
98 | call assemb( )
99 |
100 | ! If required, correct global stiffness matrix [K] and global load vector to account for prescribed displacements
101 | ! if (drap_pres==1) then
102 | ! call greduc( )
103 | ! end if
104 |
105 | ! Reduction of the global stiffness matrix and global load vector using boundary conditions
106 | call reduc( )
107 |
108 |
109 | ! Initialization of the residual vector
110 | do i=1,size(rgload,1)
111 | vec_residu(i)=rgload(i)
112 | end do
113 |
114 | iiter=0
115 | norme=epsilon+1
116 | prev_res=10000
117 |
118 | gload_backup=gload
119 |
120 | ! Display Reduced Stiffness Matrix
121 | ! call disp_rgstif( )
122 | ! stop
123 |
124 | ! Start iteration process to solve [K].{Un}={F}
125 | do while (norme > epsilon)
126 |
127 |
128 | ! Counter for number of iterations
129 | iiter=iiter+1
130 |
131 | ! If prescribed displacements, modify load vectors for first iteration
132 | if (drap_pres ==1 .and. iiter==1) then
133 |
134 | ! ! Add prescribe displacements to load vectors
135 | call prescdisp()
136 |
137 | ! Solve linear system A.X=B using conjugate gradient: [K].{Un}={F}
138 | n=size(rgstif,1)
139 | rgstif_lapack=rgstif
140 | rasdis_lapack=vec_residu_pd
141 |
142 | CALL DGESV(n,1,rgstif_lapack,n,ipiv,rasdis_lapack,n,info)
143 | ! CALL dposv('Upper',n,1,rgstif_lapack,n,rasdis_lapack,n,info)
144 |
145 |
146 | rasdis=rasdis_lapack
147 |
148 | else
149 | ! No prescribed displacements:
150 | ! Solve linear system A.X=B using conjugate gradient: [K].{Un}={F}
151 | n=size(rgstif,1)
152 |
153 | rgstif_lapack=rgstif
154 | rasdis_lapack=vec_residu
155 |
156 | CALL DGESV(n,1,rgstif_lapack,n,ipiv,rasdis_lapack,n,info)
157 |
158 | rasdis=rasdis_lapack
159 |
160 | end if
161 |
162 | asdis=0.d0
163 |
164 | ! Inject displacement values in asdis(ntotv) (global vector)
165 | do i=1,nvlib
166 | loca=gcoord(i)
167 | asdis(loca)=rasdis(i)
168 | end do
169 |
170 |
171 | ! Only for the first iteration, add prescribed displacements
172 | if (drap_pres==1 .and. iiter==1) then
173 | do i=1,ntotv
174 | if (iffix(i)==1 .and. fixed(i)/=0.d0) then
175 | asdis(i)=fixed(i)
176 | end if
177 | end do
178 | end if
179 |
180 | ! Add displacement to previous total displacements values
181 | do itotv=1,ntotv
182 | tdisp(itotv)=tdisp(itotv)+asdis(itotv)
183 | end do
184 |
185 | ! Calculate strain tensor, stress tensor, and global load forces
186 | call residu( )
187 |
188 | ! Check for convergence using load forces vector previously calculated
189 | call conver( )
190 |
191 |
192 | end do
193 |
194 | !Calculate average
195 | ave1=0.d0
196 | ave2=0.d0
197 | ave3=0.d0
198 |
199 | ! output results Owen & Hilton Style
200 | call output( )
201 |
202 | ! output results Owen & Hilton Style
203 | call output_increm( )
204 |
205 | call output_deviator( )
206 |
207 | end do !nincs
208 |
209 | end do !nstage
210 |
211 | ! Output results of this increment in vtk files
212 | print *,' '
213 | print *,'-----------------------------------'
214 | print *,'Exporting results...'
215 | print *,'-----------------------------------'
216 | print *,' '
217 | call output_python( )
218 |
219 |
220 | close(5)
221 | close(1)
222 | close(55)
223 | close(56)
224 | close(132)
225 |
226 | print *, " " !Mise en page de la sortie console
227 | print *, "FINITE ELEMENT ANALYSIS COMPLETED"
228 |
229 | e=ETIME(tarray)
230 | print *, 'elapsed:',e
231 | print *, 'user:',tarray(1)
232 | print *, 'sys:',tarray(2)
233 |
234 |
235 | print *, ''
236 | print *,'Total time execution:'
237 |
238 | CALL SYSTEM_CLOCK(COUNT=clock_end) ! Stop timing
239 | ! Calculate the elapsed time in seconds:
240 | cstart=clock_start
241 | cend=clock_end
242 | crate=clock_rate
243 | ! elapsed_time=((clock_end-clock_start)/clock_rate)
244 | elapsed_time=(cend-cstart)/crate
245 |
246 | if (elapsed_time < 60) then
247 | !Seconds
248 |
249 | write(6,222) elapsed_time
250 | 222 format(f5.2,1x,3hsec)
251 |
252 | else if (elapsed_time > 60 .and. elapsed_time < 3600) then
253 | !Min - Sec
254 | ielapsed=elapsed_time/60
255 | ielapsed2=(elapsed_time/60 - ielapsed)*60
256 |
257 | write(6,223) ielapsed, ielapsed2
258 | 223 format(i2,1x,3hmin,1x,i2,1x,3hsec)
259 |
260 | else if (elapsed_time >= 3600 .and. elapsed_time < 86400) then
261 | !Hours-Min-Seconds
262 | ielapsed3=elapsed_time/3600
263 | ielapsed=(elapsed_time/3600 - ielapsed3)*60
264 | ielapsed2=(elapsed_time - ielapsed3*3600-ielapsed*60)
265 |
266 | write(6,224) ielapsed3,ielapsed, ielapsed2
267 | 224 format(i2,1x,5hhours,1x,i2,1x,3hmin,1x,i2,1x,3hsec)
268 |
269 | else if (elapsed_time >= 86400) then
270 | !Days-Hours-Min-Seconds
271 | ielapsed1=elapsed_time/86400
272 | ielapsed2=elapsed_time/3600 - ielapsed1*24
273 | ielapsed3=elapsed_time/60 - ielapsed1*1440-ielapsed2*60
274 | ielapsed4=elapsed_time - ielapsed1*86400-ielapsed2*60*60-ielapsed3*60
275 | write(6,225) ielapsed1,ielapsed2, ielapsed3,ielapsed4
276 | 225 format(i2,1x,4hDays,1x,i2,1x,5hhours,1x,i2,1x,3hmin,1x,i2,1x,3hsec)
277 |
278 |
279 | end if
280 |
281 | end program elast
282 |
283 | ! Load subroutines files
284 | include 'subroutines/geometry.f90' ! Import mesh, geometry (nnode, convectivity table), and boundary conditions
285 | include 'subroutines/input_examples.f90' ! Different simulations
286 | include 'subroutines/FEM.f90' ! Subroutines inherent to FEM analysis: shape functions, element stiffness matrix, assembling, etc...
287 | include 'subroutines/numerical_analysis.f90' ! Classic numerical methods: conjugate gradient, jacobian matrix, etc...
288 | include 'subroutines/control.f90' ! Procedures to check geometry is consistent
289 | include 'subroutines/output.f90' ! Subroutines to print output on the terminal
290 | include 'subroutines/output_vtk.f90' ! Subroutines to generate .vtk file for Paraview
291 | include 'subroutines/plasticity.f90'
292 | include 'subroutines/GaussJordan2.f90'
293 | include 'subroutines/output_python.f90'
294 | include 'subroutines/output_deviator.f90'
295 | include 'subroutines/input_bound_cond_GiD.f90'
296 | include 'subroutines/input_data_GiD.f90'
297 | include 'subroutines/validation.f90'
298 |
299 |
300 |
--------------------------------------------------------------------------------
/subroutines/GaussJordan.f90:
--------------------------------------------------------------------------------
1 | ! Pivot de Gauss
2 |
3 | subroutine GaussJordan()
4 | use variables
5 |
6 | implicit none
7 | double precision, dimension(nvlib) :: fresv
8 | integer :: i, j, kount, ieqns, icols, ieqn1, irows, jevab
9 |
10 | double precision :: factr, pivot
11 |
12 | integer :: nback,nbac1, ipoin, idofn, neqn1
13 |
14 | double precision, dimension(nvlib) :: xdisp, react
15 | double precision, dimension(nvlib,2) :: gtdisp, gtreac
16 | double precision, dimension(nvlib,nvlib) :: grgstif
17 | double precision :: resid, k1, k2, k3, k4
18 |
19 | !Gaussian Reduction
20 | kount=0
21 |
22 | do i=1,nvlib
23 | do j=1,nvlib
24 | grgstif(i,j)=rgstif(i,j)
25 | end do
26 | end do
27 |
28 | call disp_rgstif()
29 |
30 | print *,'gload=',rgload
31 | print *,'rfixed=',rfixed
32 | print *,'riffix=',riffix
33 | ! stop
34 |
35 | react=0.d0
36 | xdisp=0.d0
37 |
38 | do i=1,size(rgload,1)
39 | rgload(i)=vec_residu(i)
40 | end do
41 |
42 |
43 | do 70 ieqns=1,nvlib
44 | if (riffix(ieqns) == 1) go to 40
45 |
46 | ! Get the pivot
47 | pivot=rgstif(ieqns,ieqns)
48 | print *,'pivot=',pivot
49 |
50 | if (abs(pivot) < 1.0d-9) then
51 | write(6,*) 'Incorrect pivot=',pivot,'line=',ieqns
52 | stop
53 | end if
54 |
55 | if (ieqns==nvlib) go to 70
56 |
57 | ieqn1=ieqns+1
58 |
59 | do 30 irows=ieqn1,nvlib
60 | kount=kount+1
61 | ! if (rgstif(irows,ieqns) /= 0.d0) then
62 | factr=rgstif(irows,ieqns)/pivot
63 | fresv(kount)=factr
64 |
65 | if (factr==0.d0) go to 30
66 |
67 | ! Modify matrix [K]=rgstif
68 | do icols=ieqns,nvlib
69 | rgstif(irows,icols)=rgstif(irows,icols) - factr*rgstif(ieqns,icols)
70 | end do
71 |
72 | ! Modify rgload
73 | rgload(irows)=rgload(irows) - factr*rgload(ieqns)
74 | 30 continue
75 | ! end if
76 |
77 | go to 70
78 |
79 | ! if (riffix(ieqns) == 1) then
80 |
81 | !Displacement is prescribed; we substitute the prescribed value into the remaining equations
82 | 40 continue
83 | do irows=ieqns,nvlib
84 | ! if (rgstif(irows,ieqns) /= 0.d0) then
85 | rgload(irows)=rgload(irows)-rgstif(irows,ieqns)*rfixed(ieqns)
86 | ! rgstif(irows,ieqns)=0.d0
87 | ! end if
88 | end do
89 | ! end if
90 | 70 continue
91 |
92 |
93 | ! print *,'rgload=',rgload
94 |
95 | ! do ieqns=1,nvlib
96 | ! print *,(rgstif(ieqns,jevab),jevab=1,nvlib)
97 | ! end do
98 |
99 |
100 | !Back-substitution routine
101 |
102 | do 100 ieqns=1,nvlib
103 | react(ieqns)=0.d0
104 | 100 continue
105 |
106 | neqn1=nvlib+1
107 |
108 | do 400 ieqns=1,nvlib
109 | nback=neqn1-ieqns
110 |
111 | pivot=rgstif(nback,nback)
112 | resid=rgload(nback)
113 |
114 | if (nback == nvlib) go to 300
115 |
116 | nbac1=nback+1
117 |
118 | do 200 icols=nbac1,nvlib
119 | resid=resid - rgstif(nback,icols)*xdisp(icols)
120 | 200 continue
121 |
122 | 300 if (riffix(nback) == 0) xdisp(nback)=resid/pivot
123 | if (riffix(nback) == 1) xdisp(nback)=rfixed(nback)
124 | if (riffix(nback) == 1) react(nback) = -resid
125 |
126 |
127 |
128 | 400 continue
129 |
130 | kount=0
131 | do ipoin=1,npoin
132 | do idofn=1,ndofn
133 | kount=kount+1
134 | gtdisp(ipoin,idofn)=xdisp(kount)
135 | gtreac(ipoin,idofn)=react(kount)
136 | end do
137 | end do
138 |
139 | print *, 'react=',react
140 | print *, 'disp=',xdisp
141 |
142 | do i=1,nvlib
143 | do j=1,nvlib
144 | rgstif(i,j)=grgstif(i,j)
145 | end do
146 | end do
147 |
148 | ! asdis=xdisp
149 | ! vec_residu_big=rgload
150 | rasdis=xdisp
151 | print *,vec_residu
152 | ! stop
153 | end subroutine
154 |
155 |
--------------------------------------------------------------------------------
/subroutines/GaussJordan2.f90:
--------------------------------------------------------------------------------
1 | ! Pivot de Gauss
2 |
3 | subroutine GaussJordan2()
4 | use variables
5 |
6 | implicit none
7 | double precision, dimension(ntotv) :: fresv
8 | integer :: i, j, kount, ieqns, icols, ieqn1, irows, jevab
9 |
10 | double precision :: factr, pivot
11 |
12 | integer :: nback,nbac1, ipoin, idofn, neqn1
13 |
14 | double precision, dimension(ntotv) :: xdisp, react
15 | double precision, dimension(ntotv,2) :: gtdisp, gtreac
16 |
17 | double precision :: resid, k1, k2, k3, k4
18 |
19 | !Gaussian Reduction
20 | kount=0
21 |
22 | ! call disp_gstif()
23 |
24 | print *,'gload=',gload
25 | print *,'fixed=',fixed
26 | print *,'iffix=',iffix
27 | ! stop
28 |
29 | react=0.d0
30 | xdisp=0.d0
31 |
32 | ! do i=1,size(gload,1)
33 | ! gload(i)=vec_residu(i)
34 | ! end do
35 |
36 | ! if (iiter>1) then
37 | ! gload=vec_residu
38 | ! end if
39 |
40 | do 70 ieqns=1,ntotv
41 | if (iffix(ieqns) == 1) go to 40
42 |
43 | ! Get the pivot
44 | pivot=gstif(ieqns,ieqns)
45 | print *,'pivot=',pivot
46 |
47 | if (abs(pivot) < 1.0d-9) then
48 | write(6,*) 'Incorrect pivot=',pivot,'line=',ieqns
49 | stop
50 | end if
51 |
52 | if (ieqns==ntotv) go to 70
53 |
54 | ieqn1=ieqns+1
55 |
56 | do 30 irows=ieqn1,ntotv
57 | kount=kount+1
58 | ! if (gstif(irows,ieqns) /= 0.d0) then
59 | factr=gstif(irows,ieqns)/pivot
60 | fresv(kount)=factr
61 |
62 | if (factr==0.d0) go to 30
63 |
64 | ! Modify matrix [K]=gstif
65 | do icols=ieqns,ntotv
66 | gstif(irows,icols)=gstif(irows,icols) - factr*gstif(ieqns,icols)
67 | end do
68 |
69 | ! Modify gload
70 | gload(irows)=gload(irows) - factr*gload(ieqns)
71 | 30 continue
72 | ! end if
73 |
74 | go to 70
75 |
76 | ! if (iffix(ieqns) == 1) then
77 |
78 | !Displacement is prescribed; we substitute the prescribed value into the remaining equations
79 | 40 continue
80 | do irows=ieqns,ntotv
81 | ! if (gstif(irows,ieqns) /= 0.d0) then
82 | gload(irows)=gload(irows)-gstif(irows,ieqns)*fixed(ieqns)
83 | ! gstif(irows,ieqns)=0.d0
84 | ! end if
85 | end do
86 | ! end if
87 | 70 continue
88 |
89 |
90 | ! print *,'gload=',gload
91 |
92 | ! do ieqns=1,ntotv
93 | ! print *,(gstif(ieqns,jevab),jevab=1,ntotv)
94 | ! end do
95 |
96 |
97 | !Back-substitution routine
98 |
99 | do 100 ieqns=1,ntotv
100 | react(ieqns)=0.d0
101 | 100 continue
102 |
103 | neqn1=ntotv+1
104 |
105 | do 400 ieqns=1,ntotv
106 | nback=neqn1-ieqns
107 |
108 | pivot=gstif(nback,nback)
109 | resid=gload(nback)
110 |
111 | if (nback == ntotv) go to 300
112 |
113 | nbac1=nback+1
114 |
115 | do 200 icols=nbac1,ntotv
116 | resid=resid - gstif(nback,icols)*xdisp(icols)
117 | 200 continue
118 |
119 | 300 if (iffix(nback) == 0) xdisp(nback)=resid/pivot
120 | if (iffix(nback) == 1) xdisp(nback)=fixed(nback)
121 | if (iffix(nback) == 1) react(nback) = -resid
122 |
123 |
124 |
125 | 400 continue
126 |
127 | kount=0
128 | do ipoin=1,npoin
129 | do idofn=1,ndofn
130 | kount=kount+1
131 | gtdisp(ipoin,idofn)=xdisp(kount)
132 | gtreac(ipoin,idofn)=react(kount)
133 | end do
134 | end do
135 |
136 | print *, 'react=',react
137 | print *, 'disp=',xdisp
138 |
139 |
140 |
141 | ! asdis=xdisp
142 | gload=react
143 | asdis=xdisp
144 | ! print *,vec_residu
145 | ! stop
146 | end subroutine
--------------------------------------------------------------------------------
/subroutines/conj_grad.f90:
--------------------------------------------------------------------------------
1 | program cong_grad
2 |
3 | double precision, dimension(:,:), allocatable :: A
4 | double precision, dimension(:), allocatable :: B, X
5 |
6 | integer :: i, j, n
7 |
8 | interface
9 | subroutine cg_method(A,B,X,n)
10 | double precision, dimension(:,:), allocatable :: A
11 | double precision, dimension(:), allocatable :: B, X
12 | end subroutine
13 | end interface
14 |
15 | n=3
16 | allocate(A(n,n))
17 | allocate(B(n))
18 | allocate(X(n))
19 |
20 | do i=1,n
21 | X(i)=0.d0
22 | end do
23 |
24 | !do i=1,3
25 | !write(6,*) xx(i)
26 | !end do
27 |
28 | ! A(0,0)=110.d0
29 | ! A(0,1)=-30.d0
30 | ! A(0,2)=-30.d0
31 | ! A(1,1)=110.d0
32 | ! A(1,2)=50.d0
33 | ! A(2,2)=110.d0
34 |
35 | ! A(1,0)=a(0,1)
36 | ! A(2,0)=a(0,2)
37 | ! A(2,1)=a(1,2)
38 |
39 | ! B(0)=0.d0
40 | ! B(1)=0.d0
41 | ! B(2)=0.7d0
42 |
43 |
44 | A(1,1)=110.d0
45 | A(1,2)=-30.d0
46 | A(1,3)=-30.d0
47 | A(2,2)=110.d0
48 | A(2,3)=50.d0
49 | A(3,3)=110.d0
50 |
51 | A(2,1)=a(0,1)
52 | A(3,1)=a(0,2)
53 | A(3,2)=a(1,2)
54 |
55 | B(1)=0.d0
56 | B(2)=0.d0
57 | B(3)=0.7d0
58 |
59 |
60 | do i=1,3
61 | write(6,*) (A(i,j),j=1,3)
62 | end do
63 |
64 | do i=1,3
65 | write(6,*) (B(i))
66 | end do
67 |
68 | call cg_method(A,B,X,n)
69 |
70 | print *,X
71 | end program
72 |
73 |
74 | ! -------------------------- MODULE cg.f90 ----------------------------
75 |
76 | !************************************************************************
77 | !* *
78 | !* Conjugate Gradient Method (CG Method) *
79 | !* ------------------------------------- *
80 | !* *
81 | !* Programming language: ANSI C *
82 | !* Compiler: Turbo C 2.0 *
83 | !* Computer: IBM PS/2 70 with 80387 *
84 | !* Sources: [BUNS85], [SCHW], [MAES84] *
85 | !* Author: Juergen Dietel, Computer Center, RWTH Aachen *
86 | !* Date: 7.31.1992 *
87 | !* *
88 | !* F90 version by J-P Moreau (without dynamic allocations). *
89 | !************************************************************************
90 | Subroutine cg_method (A,B,X,nvlib)! & ! Conjugate Gradient Method
91 | !n, & ! Size of the linear system
92 | !a, & ! System matrix
93 | !y, & ! right hand side
94 | !x, & ! solution vector
95 | !fehler & ! error code
96 | !)
97 | double precision, dimension(:,:), allocatable :: A
98 | double precision, dimension(:), allocatable :: B, X
99 | ! original name: cg_verfahren()
100 | integer, parameter :: SIZE=24
101 | real*8, parameter :: ZERO=0.d0, MACH_EPS=2.d-10
102 | !real*8 a(0:SIZE,0:SIZE),x(0:SIZE),y(0:SIZE), delta(0:SIZE)
103 | integer fehler
104 |
105 | !************************************************************************
106 | !* CG solves the linear system *
107 | !* A * X = Y *
108 | !* for a symmetric, positive definite matrix A via the conjugate *
109 | !* gradient method. *
110 | !* *
111 | !* Input parameters: *
112 | !* ================= *
113 | !* n Size of the linear system *
114 | !* a [0..n-1,0..n-1] system matrix A. Only the upper triangle of A is *
115 | !* used. *
116 | !* y [0..n-1] vector of the right hand side *
117 | !* *
118 | !* Output parameters: *
119 | !* ================== *
120 | !* x [0..n-1] vector giving the solution *
121 | !* *
122 | !* Return value: *
123 | !* ============= *
124 | !* = 0: all is ok *
125 | !* = 1: n < 2 or other disallowed input parameters *
126 | !* = 2: memory exceeded *
127 | !* *
128 | !************************************************************************
129 | double precision d(nvlib), & ! (0..n-1) auxiliary vectors d and g
130 | g(nvlib), &
131 | AmalD(nvlib) ! (0..n-1) auxiliary vector A * d
132 |
133 | double precision alpha, & ! coefficient
134 | beta, & ! coefficient
135 | dividend, & ! numerator and denominator of a fraction
136 | divisor, & ! respectively, used to compute alpha, beta
137 | hilf, & ! auxiliary variables
138 | hilf2, &
139 | abstand, & ! distance of two successive approximations
140 | ! for the solution vector x (taken in the
141 | ! euclidean norm)
142 | xnorm ! euklidean norm of x
143 | integer k, i, j,n ! loop variables
144 |
145 | if (n < 2) then ! invalid parameter?
146 | fehler=1
147 | return
148 | end if
149 | n=nvlib
150 |
151 |
152 | !------------------------------------------------------------------
153 | ! start with x at the origin
154 | !------------------------------------------------------------------
155 | do i = n , 1, -1
156 | X(i) = ZERO
157 | end do
158 |
159 | !------------------------------------------------------------------
160 | ! initialize d and g :
161 | ! d = -g = -(a*x - y) = y (since x = 0)
162 | !------------------------------------------------------------------
163 | do i = n, 1, -1
164 | hilf = B(i)
165 | d(i) = hilf
166 | g(i) = -hilf
167 | end do
168 |
169 |
170 | !------------------------------------------------------------------
171 | ! perform at most n steps of the CG Method
172 | !------------------------------------------------------------------
173 | do k = n, 0, -1
174 | !----------------------------------------------------------------
175 | ! compute new alpha:
176 | ! alpha = -(d(transp) * g) / (d(transp) * (a * d))
177 | !----------------------------------------------------------------
178 |
179 | dividend = ZERO
180 | divisor = ZERO
181 |
182 | do i = n, 1, -1
183 | dividend = dividend + d(i) * g(i)
184 | hilf = ZERO
185 | do j = 1, i-1
186 | hilf = hilf + A(j,i) * d(j)
187 | end do
188 | do j = i, n
189 | hilf = hilf + A(i,j) * d(j)
190 | end do
191 | AmalD(i) = hilf
192 | divisor = divisor + d(i) * hilf
193 | end do
194 |
195 | if (divisor.eq.ZERO) then
196 | fehler=0
197 | print *,'divisor=0'
198 | return
199 | end if
200 |
201 | alpha = -dividend / divisor
202 |
203 | !----------------------------------------------------------------
204 | ! compute the norm of x und alpha * d and find a new x:
205 | ! x = x + alpha * d, then check whether x is close enough,
206 | ! in order to stop the process before n complete steps
207 | !----------------------------------------------------------------
208 | xnorm = ZERO
209 | abstand = ZERO
210 |
211 | do i = n , 1, -1
212 | hilf = X(i)
213 | xnorm = xnorm + hilf*hilf
214 | hilf2 = alpha * d(i)
215 | abstand = abstand + hilf2*hilf2
216 | X(i) = hilf + hilf2
217 | end do
218 |
219 | if (abstand < MACH_EPS * xnorm) then
220 | fehler=0
221 | return
222 | end if
223 |
224 |
225 | !----------------------------------------------------------------
226 | ! compute new g: g = g + alpha * (a * d)
227 | !----------------------------------------------------------------
228 | do i = n, 1, -1
229 | g(i) = g(i) + alpha * AmalD(i)
230 | end do
231 |
232 | !----------------------------------------------------------------
233 | ! compute new beta :
234 | ! beta = (g(transp) * (a * d)) / (d(transp) * (a * d))
235 | !----------------------------------------------------------------
236 | dividend = ZERO
237 | do i = n, 1, -1
238 | dividend = dividend + g(i) * AmalD(i)
239 | end do
240 |
241 | beta = dividend / divisor
242 |
243 | !----------------------------------------------------------------
244 | ! compute new d : d = - g + beta * d
245 | !----------------------------------------------------------------
246 | do i = n, 1, -1
247 | d(i) = -g(i) + beta * d(i)
248 | end do
249 |
250 | end do !k loop
251 |
252 | fehler=0
253 | return
254 | end
255 |
--------------------------------------------------------------------------------
/subroutines/control.f90:
--------------------------------------------------------------------------------
1 |
2 | !*************************************************************************
3 | ! check1: this subroutine checks the main control data
4 | ! Owen p.200
5 | !**************************************************************************
6 |
7 | !subroutine check1(ndofn,nelem,ngaus,nmats,nnode,npoin,nstre,ntype,nvfix,ncrit,nalgo,nincs)
8 | subroutine check1( )
9 | ! On verifie que tous les parametres d'entrée type nombre de noeuds, etc... sont corrects
10 |
11 | use variables
12 |
13 | implicit none
14 |
15 | integer :: ieror, keror
16 |
17 |
18 | do ieror=1,12
19 | neror(ieror)=0
20 | !read (*,'()')
21 | end do
22 |
23 | ! create the diagostic messages
24 |
25 | ! if ( npoin <= 0) neror(1)=1
26 | ! if ( nelem*nnode < npoin) neror(2)=1
27 | ! if ( nvfix < 2 .or. nvfix>npoin) neror(3)=1
28 | ! if ( nincs < 1) neror(4)=1
29 | ! if ( ntype < 1 .or. ntype > 3) neror(5)=1
30 | ! if ( nnode < 4 .or. nnode > 9) neror(6)=1
31 | ! if ( ndofn < 2 .or. ndofn > 6) neror(7)=1
32 | ! if ( nmats < 1 .or. nmats > nelem) neror(8)=1
33 | ! if ( ncrit < 1 .or. ncrit > 6) neror(9)=1
34 | ! if ( ngaus < 2 .or. ngaus > 3) neror(10)=1
35 | ! if ( nalgo < 1 .or. nalgo > 4) neror(11)=1
36 | ! if ( nstre < 3 .or. nstre > 5) neror(12)=1
37 |
38 | if ( npoin <= 0) neror(1)=1
39 | if ( nelem*nnode < npoin) neror(2)=1
40 | if ( nvfix < 2 .or. nvfix>npoin) neror(3)=1
41 | if ( nincs < 1) neror(4)=1
42 | if ( ntype < 1 .or. ntype > 3) neror(5)=1
43 | if ( nnode < 3 .or. nnode > 9) neror(6)=1
44 | if ( ndofn < 2 .or. ndofn > 6) neror(7)=1
45 | if ( nmats < 1 .or. nmats > nelem) neror(8)=1
46 | if ( ncrit < 1 .or. ncrit > 6) neror(9)=1
47 | if ( ngaus < 2 .or. ngaus > 3) neror(10)=1
48 | if ( nalgo < 1 .or. nalgo > 10) neror(11)=1
49 | if ( nstre < 3 .or. nstre > 5) neror(12)=1
50 |
51 | ! either return or else print the errors
52 |
53 | keror=0 !Indique si il y a un probleme dans les variables d'entrée si keror=1
54 | do ieror=1,12
55 | if(neror(ieror) /= 0) then
56 | keror=1
57 | write(6,900) ieror
58 | end if
59 | end do
60 |
61 | 900 format(//31h *** diagnosis by check1,error,i3)
62 |
63 |
64 | if (keror /= 0) then
65 | call echo() ! otherwise ech all the remaining data without further comment
66 | else
67 | return
68 | end if
69 |
70 | end
71 |
72 |
73 | !****************************************************************************
74 | ! This subroutine checks the remainder of the input data Owen p.202
75 | ! Check geometric data, boundary conditions, and material properties
76 | !****************************************************************************
77 |
78 | !subroutine check2(coord,iffix,lnods,matno,melem,mfron,mpoin,mtotv,mvfix,ndfro,ndofn,nelem,nmats,nnode,nofix,npoin,nvfix)
79 |
80 | subroutine check2( )
81 |
82 | use variables
83 |
84 | implicit none
85 |
86 |
87 | integer :: kpoin, drap=0,ipoin,jpoin,idime, ielem
88 | integer :: i, idofn, ieror, inode, ivfix, jvfix, keror, kfron, klast
89 | integer :: kount, kstar, kvfix, kzero, nfron, nloca, nlast
90 | double precision :: sigma2
91 |
92 |
93 | ! check against two identical nonzero nodal coordinates
94 | do ieror=13,24 !A partir de 13 car c'est la suite de la subroutine check1
95 | neror(ieror)=0
96 | end do
97 |
98 | do ielem=1,nelem
99 | ndfro(ielem)=0
100 | end do
101 |
102 |
103 | !Verifie qu'il n'y pas des noeuds avec les même coordonnées ie tous les noeuds sont uniques
104 |
105 | !Version originale, meilleure sur le principe mais moins dans l'écriture
106 | ! do 40 ipoin=2,npoin
107 | ! kpoin=ipoin-1
108 | ! do 30 jpoin=1,kpoin
109 | ! do 20 idime=1,2
110 | ! if(coord(ipoin,idime) /= coord(jpoin,idime)) then
111 | ! goto 30
112 | ! end if
113 | ! 20 continue
114 | ! neror(13)=neror(13)+1
115 | ! 30 continue
116 | ! 40 continue
117 |
118 |
119 | do ipoin=2,npoin
120 | kpoin=ipoin-1
121 | do jpoin=1,kpoin
122 | drap=0
123 | do idime=1,ndim
124 | if ( coord(ipoin,idime) == coord(jpoin,idime) ) then
125 | drap=drap+1
126 | end if
127 | end do
128 | if (drap == ndim) then
129 | neror(13)=neror(13)+1
130 | end if
131 | end do
132 | end do
133 |
134 |
135 |
136 |
137 | !Check the list of element property numbers
138 | do ielem=1,nelem
139 | if(matno(ielem) <= 0.or.matno(ielem) > nmats) then
140 | neror(14)=neror(14)+1
141 | end if
142 | end do
143 |
144 |
145 |
146 | !Check for impossible node numbers
147 | do ielem=1,nelem
148 | do inode=1,nnode
149 | if(lnods(ielem,inode) == 0) then
150 | neror(15)=neror(15)+1
151 | end if
152 | if(lnods(ielem,inode) < 0 .or. lnods(ielem,inode) > npoin) then
153 | neror(16)=neror(16)+1
154 | end if
155 | end do
156 | end do
157 |
158 |
159 | !Check for any repetition of a node number within an element
160 | do ipoin=1,npoin
161 | kstar=0
162 | do ielem=1,nelem
163 | kzero=0
164 | do inode=1,nnode
165 | if(lnods(ielem,inode) /= ipoin) then
166 | cycle
167 | end if
168 |
169 | kzero=kzero+1
170 |
171 | if(kzero > 1) neror(17)=neror(17)+1
172 | ! Seek first, last and intermediate appearance of node ipoin
173 | if(kstar == 0) then
174 | kstar=ielem
175 | ! Calculate increase or decrease in frontwidth at each element stage...
176 | ndfro(ielem)=ndfro(ielem)+ndofn
177 | end if
178 | ! ... and change the signe of the last appearance of each node
179 | klast=ielem
180 | nlast=inode
181 | end do
182 | end do
183 |
184 |
185 | if(klast < nelem) then
186 | ndfro(klast+1)=ndfro(klast+1)-ndofn
187 | lnods(klast,nlast)=-ipoin
188 | cycle
189 | end if
190 |
191 | if(kstar == 0) then
192 |
193 | !Check that coordinates for an unused node have not been specified
194 |
195 | write(6,900) ipoin
196 | 900 format(/15h check why node,i4,14h never appears)
197 | neror(18)=neror(18)+1
198 | sigma2=0.0
199 |
200 | do idime=1,2
201 | sigma2=sigma2+abs(coord(ipoin,idime))
202 | end do
203 |
204 | if(sigma2 /= 0.0) then
205 | neror(19)=neror(19)+1
206 | end if
207 |
208 | !Check that an unused node number is not restrained node
209 |
210 | do ivfix=1,nvfix
211 | if(nofix(ivfix) == ipoin) then
212 | neror(20)=neror(20)+1
213 | end if
214 | end do
215 |
216 | end if
217 | end do
218 |
219 |
220 |
221 | !Calculate the largest front width
222 |
223 | nfron=0
224 | kfron=0
225 | do ielem=1,nelem
226 | nfron=nfron+ndfro(ielem)
227 | if(nfron > kfron) then
228 | kfron=nfron
229 | end if
230 | end do
231 |
232 |
233 |
234 | write(6,905) kfron
235 | 905 format(//33h maximum frontwidth encountered =,i5)
236 |
237 | if(kfron > mfron) then
238 | neror(21)=1
239 | end if
240 |
241 |
242 |
243 | !Continue checking the data for the fixed values
244 |
245 | do ivfix=1,nvfix
246 | if(nofix(ivfix) <= 0 .or. nofix(ivfix) > npoin) then
247 | neror(22)=neror(22)+1
248 | end if
249 | kount=0
250 | nloca=(nofix(ivfix)-1)*ndofn
251 |
252 | do idofn=1,ndofn
253 | nloca=nloca+1
254 | if(iffix(nloca) > 0) then
255 | kount=1
256 | end if
257 | end do
258 |
259 |
260 | if(kount == 0) then
261 | neror(23)=neror(23)+1
262 | !write(6,*) ivfix
263 | end if
264 | kvfix=ivfix-1
265 |
266 | do jvfix=1,kvfix
267 | if(ivfix /= 1 .and. nofix(ivfix) == nofix(jvfix)) then
268 | neror(24)=neror(24)+1
269 | end if
270 | end do
271 |
272 | end do
273 |
274 |
275 |
276 | keror=0
277 | do ieror=13,24
278 | if(neror(ieror) == 0) then
279 | cycle
280 | end if
281 | keror=1
282 | write(6,910) ieror,neror(ieror)
283 | 910 format(//31h ***diagnosis by check2, error,i3,6x,18h associated number,i5)
284 | end do
285 |
286 |
287 | if(keror == 0) then
288 | !Return all nodal connections numbers to positive values
289 | do ielem=1,nelem
290 | do inode=1,nnode
291 | lnods(ielem,inode)=iabs(lnods(ielem,inode))
292 | end do
293 | end do
294 |
295 | return
296 | end if
297 |
298 | if(keror /= 0) then
299 | call echo
300 | end if
301 |
302 |
303 | do i=1,1
304 | print *, " " !Mise en page de la sortie console
305 | print *, "Subroutine CHECK2 - Status: ERROR"
306 | print *, " " !Mise en page de la sortie console
307 | end do
308 |
309 |
310 | end
311 | !END CHECK2
312 |
313 |
314 |
315 |
316 |
317 | ! ************************************************************************
318 | ! Subroutine echo Owen p.201
319 | ! if data errors have been detected by subroutines check1 or
320 | ! check2,this subroutine reads and writes the remaining data cards
321 | ! **************************************************************************
322 |
323 | subroutine echo()
324 |
325 | dimension ntitl(80)
326 | print *, "INFORMATION PROVIDED BY SUBROUTINE ECHO"
327 |
328 | write(6,900)
329 | 900 format(//50h now follows a listing of post-disaster data cards/)
330 | 10 read(5,905) ntitl
331 | 905 format(80a1)
332 | write(6,910) ntitl
333 | 910 format(20x,80a1)
334 | goto 10
335 |
336 | end
--------------------------------------------------------------------------------
/subroutines/geometry.f90:
--------------------------------------------------------------------------------
1 |
2 | !***********************************************************************************************
3 | !
4 | ! This file contains subroutines for geometry of the problem and boundaries conditions
5 | !
6 | ! By Victor ROBIN - 09.06.2013, Exeter
7 | !**********************************************************************************************
8 |
9 |
10 | !**********************************************************************************************
11 |
12 |
13 | !***********************************************************************************************
14 | ! This subroutine presets variables associated with dynamic dimensioning
15 | ! Owen p.238
16 | !**********************************************************************************************
17 |
18 |
19 | subroutine dimen( )
20 |
21 | use variables
22 |
23 | !implicit double precision (a-h,o-z)
24 | implicit none
25 | integer :: num_example
26 | ! num_example=0: Example OWEN p.542
27 | ! num_example=1: 2 elements Q4
28 | ! num_example=2: 1 element Q4
29 | ! num_example=3: 2 elements T3
30 | ! num_example=4: 1 element Q8
31 | ! num_example=5: 4 elements Q8
32 | ! num_example=6: 4 elements Q8 + Distributed loading
33 | ! num_example=7: 4 elements Q8 + Deplacements imposes
34 | ! num_example=8: 1 element Q4 + Deplacements imposes - DOESN'T WORK
35 | ! num_example=9: 4 elements Q8 + Distributed loading - Axisymetry
36 | ! num_example=10: 4 elements Q8 + Point Load - AXIS
37 | ! num_example=11: 1 elements Q4 + Point Load - AXIS
38 | ! num_example=12: 2 elements T3 + Deplacements inposes
39 | ! num_example=13: 1 elements Q4 + Point Load - PLASTICITE PARFAITE
40 | ! num_example=14: 1 elements Q4 - PLASTICITE PARFAITE + Deplacements Imposes
41 | ! num_example=15: 2T3 + Deplacements Imposes - Calibration pour deplacements imposes
42 | ! num_example=16: 4Q4 - Plasticité parfaite
43 | ! num_example=17: 4Q4 - Plasticité parfaite - Deplacements imposés
44 |
45 | ! num_example=18: 1Q4 - Cam Clay
46 | ! num_example=19: 1Q4 - Cam Clay Lime Treated Soils
47 |
48 | num_example=18
49 |
50 | call initial_cond(num_example)
51 |
52 |
53 | return
54 |
55 | end
56 |
57 |
58 |
59 | !*******************************************************************************
60 |
61 | ! Subroutine input: this subroutine accepts most of the input data Owen p.208
62 |
63 | !*******************************************************************************
64 |
65 | subroutine input( )
66 |
67 | use variables
68 | implicit none
69 |
70 | integer :: ipoin, idime, nb_tab_dyn, ivfix, ifpre, iprop, ielem, igaus
71 | integer :: i, j, idofn, ifdof, imats, istep, ngash, nloca, numat, numel, inode
72 | integer :: icompt, itotv
73 |
74 | real :: cond(mpoin,5)
75 | character (len=60) :: title
76 |
77 | include 'subroutines/interface.f90'
78 |
79 | ! If you want to print console output in a txt file
80 | ! open(unit=6,file='output_terminal.txt') !Writing of the variables values
81 |
82 |
83 | ! Create file to store element stiffness matrices
84 | open(unit=1,form='unformatted',file='temp/estif.tmp')
85 |
86 | !1 Lecture et ecriture du titre du fichier d'entree
87 | read(5,920) title
88 | write(6,920) title
89 | 920 format(a)
90 |
91 | ! Read the first data card, aand echo it immediately
92 |
93 | !2 Caracteristiques du maillage
94 | read(5,*) npoin,nelem,nvfix,ntype,nnode,nmats,ngaus,nalgo,ncrit,nincs,nstre !2
95 | 900 format(11i5)
96 |
97 | nevab=ndofn*nnode
98 | nstr1=nstre+1
99 |
100 | if(ntype == 3) then
101 | nstr1=nstre
102 | end if
103 |
104 | ntotv=npoin*ndofn
105 | ngaus2=ngaus*ngaus
106 | ntotg=nelem*ngaus2
107 |
108 |
109 | ! *** DYNAMIC ALLOCATION OF MEMORY ****
110 | include 'workspace/Alloc.f90'
111 |
112 | if (ncrit==5 .or. ncrit==6) then
113 | include 'workspace/Alloc_CamClay.f90'
114 | end if
115 |
116 | !! **** PARTIE COUPLAGE
117 | !3 Conditions initiales de saturation, indice des vides, etc...
118 | read(5,*) nstep,einitial,saturi,winitial,(amode(istep), istep=1,nstep) !3
119 |
120 | !4 Valeur amodel??
121 | read(5,*) amodel !4
122 |
123 | !5 Valeurs liées à la discrétisation temporelle??
124 | read(5,*) (iampl(i),aiso(i),tinstp(i),antsstp(i),aifreq(i),i=1,nstep) !5
125 | !! **** FIN PARTIE COUPLAGE
126 |
127 |
128 |
129 |
130 | write(6,901) npoin,nelem,nvfix,ntype,nnode,nmats,ngaus,nevab,nalgo,ncrit,nincs,nstre !2
131 | 901 format(//8h npoin =,i4,4x,8h nelem =,i4,4x,8h nvfix =,i4,4x, &
132 | 8h ntype =,i4,4x,8h nnode =,i4, &
133 | //8h nmats =,i4,4x,8h ngaus= ,i4, &
134 | 4x,8h nevab =,i4,4x,8h nalgo =,i4,4x, &
135 | //8h ncrit =,i4,4x,8h nincs =,i4,4x,8h nstre =,i4)
136 |
137 |
138 | !call check1(ndofn,nelem,ngaus,nmats,nnode,npoin,nstre,ntype,nvfix,ncrit,nalgo,nincs)
139 | call check1( )
140 |
141 | ! On indique le type de problem:
142 | write(6,*) ''
143 | write(6,*) '--------------------------------------------'
144 | if (ntype==1) then
145 | write(6,*), "CALCUL CHARACTERISTICS: PLANE STRESS"
146 | end if
147 |
148 | if (ntype==2) then
149 | write(6,*) "CALCUL CHARACTERISTICS: PLANE STRAIN"
150 | end if
151 |
152 | if (ntype==3) then
153 | write(6,*) "CALCUL CHARACTERISTICS: AXISYMMETRIC PROBLEM"
154 | end if
155 |
156 | select case(ncrit)
157 | case(1) !ncrit=1: Tresca yield criterion
158 | write(6,*) "TRESCA"
159 |
160 | case(2) !ncrit=2: Von Mises
161 | write(6,*) "VON MISES"
162 | !
163 | case(3) !ncrit=3: Mohr-Coulomb
164 | write(6,*) "MOHR-COULOMB"
165 |
166 | case(4) !ncrit=4: Drucker-Prager
167 | write(6,*) "DRUCKER-PRAGER"
168 |
169 | case(5) !ncrit=5: Cam-Clay
170 | write(6,*) "CAM CLAY"
171 | end select
172 |
173 |
174 | write(6,*) '--------------------------------------------'
175 |
176 | !Read the elements nodal connections and the property numbers
177 | write(6,902) !3
178 | 902 format(//8h element,3x,8hproperty,6x,12hnode numbers)
179 |
180 | do ielem=1,nelem
181 | read(5,*) numel,matno(numel),(lnods(numel,inode),inode=1,nnode) !6
182 | write(6,903) numel,matno(numel),(lnods(numel,inode),inode=1,nnode)!4
183 | end do
184 |
185 | 903 format(1x,i5,i9,6x,8i5)
186 |
187 | ! do i=1,numel
188 | ! write(6,*) (lnods(i,j),j=1,nnode)
189 | ! end do
190 |
191 |
192 | ! Set to zero all the nodal coordinates, prior to reading some of them
193 | do ipoin=1,npoin
194 | do idime=1,ndim
195 | coord(ipoin,idime)=0.0
196 | end do
197 | end do
198 |
199 |
200 |
201 | ! Read some nodal coordinates, finishing with the last node of all
202 | ! Numeros des noeuds + coord. dans ficher de sortie
203 | write(6,904) !5
204 | 904 format(//5h node,10x,1hx,10x,1hy)
205 |
206 | !7 Lecture des coordonnees
207 | do while (ipoin/=npoin)
208 | read(5,*) ipoin,(coord(ipoin,idime), idime=1,ndim) !7
209 | end do
210 |
211 | 905 format(i5,6f10.5)
212 |
213 | ! interpolate coordinates of mid-side nodes
214 | !call nodexy(coord,lnods,melem,mpoin,nelem,nnode)
215 |
216 | if (nnode>3) then
217 | call nodexy( )
218 | end if
219 |
220 |
221 | do ipoin=1,npoin
222 | write(6,906) ipoin,(coord(ipoin,idime), idime=1,ndim) !6
223 | end do
224 |
225 | 906 format(1x,i5,3f10.4)
226 |
227 |
228 |
229 | !Read the fixed values
230 | write(6,907) !7
231 | ! original: write(6,*) !7
232 | 907 format(//5h node,6x,4hcode,6x,12h fixed values)
233 |
234 |
235 | ! Version Owen: presc au lieu de presc0 -> pour couplage
236 | ! ifpre: Restraint code:
237 | ! 10 Nodal displacement restrained in the x (or r) direction
238 | ! 01 Nodal displacement restrained in the y (or z) direction
239 | ! 11 Nodal displacement restrained in both coordinate direction
240 | ! 0 No boundary condition
241 | ! ifpre controls which degrees of freedom of a particualr node are to have a specified displacement value
242 |
243 | !*** Version Owen
244 | !do ivfix=1,nvfix
245 | ! read(5,908) nofix(ivfix),ifpre,(presc0(nofix(ivfix),idofn),idofn=1,ndofn) !8
246 | ! write(6,908) nofix(ivfix),ifpre,(presc0(nofix(ivfix),idofn),idofn=1,ndofn) !8
247 | ! nloca=(nofix(ivfix)-1)*ndofn ! Donne le numéro de ligne dans iffix de la premiere composante (selon x) du noeud nofix(ivfix)
248 | ! ifdof=10**(ndofn-1) !=10
249 |
250 |
251 | ! do idofn=1,ndofn
252 | ! ngash=nloca+idofn
253 | ! if(ifpre >= ifdof) then !si oui, ie ifpre>= 10 alors c'est bloqué selon x, si >=1, bloqué selon y
254 | ! iffix(ngash)=1 ! si =1, ca veut dire que ce noeud à une condition aux limites pour déplacements dans direction idofn
255 | ! ifpre=ifpre-ifdof
256 | ! end if
257 | ! ifdof=ifdof/10 !ifdof=1
258 | ! end do
259 | !end do
260 | !*** FIN Version Owen
261 |
262 | do itotv=1,ntotv
263 | iffix(itotv)=0
264 | end do
265 |
266 | !*** Version Victor pour 2D
267 | do ivfix=1,nvfix
268 | read(5,*) nofix(ivfix),ifpre,(presc0(ivfix,idofn),idofn=1,ndofn) !8
269 | write(6,908) nofix(ivfix),ifpre,(presc0(ivfix,idofn),idofn=1,ndofn) !8
270 | nloca=(nofix(ivfix)-1)*ndofn+1 ! Donne le numéro de ligne dans iffix de la premiere composante (selon x) du noeud nofix(ivfix)
271 |
272 | if (ifpre==10 .or. ifpre==11) then
273 | iffix(nloca)=1
274 | end if
275 |
276 | if (ifpre==01 .or. ifpre==11) then
277 | iffix(nloca+1)=1
278 | end if
279 | end do
280 | !*** FIN Version Victor
281 |
282 |
283 |
284 | 908 format(1x,i4,5x,i5,5x,f10.4,1x,f10.4)
285 |
286 | ! Read the available selection of element properties
287 | write(6,923)
288 | 923 format( //20hMaterials properties)
289 | 16 write(6,910)
290 | 910 format(6hNumber,6x,19h Element properties)
291 |
292 |
293 | do imats=1,nmats
294 | read(5,900) numat !9
295 | read(5,*)(props(numat,iprop),iprop=1,nprop) !10
296 | ! 930 format(8f10.5)
297 | write(6,*) numat,(props(numat,iprop),iprop=1,nprop)
298 | end do
299 |
300 |
301 | ! 911 format(1x,i4,3x,8e14.6)
302 |
303 | ! 911 format(8h Young =,f10.2,4x,11h Poisson = ,f4.2,4x,14h Thickness t = ,f3.1,4x, &
304 | ! 10h Density =,f5.1,4x,15h Sigma_y\c\py =,f7.2,4x,4h H =,f5.2,4x, &
305 | ! 6h phi =,f6.2/, &
306 | ! /6h v0 = ,f5.3,4x,10h Lambda = ,f6.4,4x,9h Kappa = ,f6.4,4x,5h M = ,f6.4)
307 |
308 | ! Version plus lisible: 911 format(1x,i4,3x,8f14.2)
309 |
310 | !911 format(//8h Young =,i4,4x,8h Poisson ratio =,i4,4x,8h Thickness t =,i4,4x, &
311 | ! 8h Density rho =,i4,4x,8h Sigma_y/Cohesion c =,i4, &
312 | ! //8h Hardening parameter =,i4,4x,8h Angle of friction phi (°)= ,i4)
313 | !911 format(//11h Materiau =,i4,4x,8h Young =,f5.2,8hPoisson=,4f5.2,4x,8hThickness,i4,4x)
314 |
315 | !write(6,*) props(1,:)
316 |
317 |
318 |
319 | ! ****** Version Elkassas
320 | ! 11 Read initial conditions
321 | !do j=1,npoin
322 | ! read(5,*) ipoin,(cond(ipoin,i),i=1,ndofn) !11 ATTENTION MODIFICATION de l'iterateur
323 | !end do
324 |
325 | !Put in vector of displacements
326 | !do ipoin=1,npoin
327 | ! do idofn=1,ndofn
328 | ! nloca=ndofn*(ipoin-1)+idofn
329 | ! asdis(nloca)=cond(ipoin,idofn)
330 | ! end do
331 | !end do
332 | ! ****** Fin Version Elkassas
333 |
334 |
335 |
336 | ! Set up gaussian integration constants
337 |
338 | !call gaussq(ngaus,posgp,weigp)
339 | call gaussq( )
340 |
341 |
342 | !call check2(coord,iffix,lnods,matno,melem,mfron,mpoin,mtotv,mvfix,ndfro,ndofn,nelem,nmats,nnode,nofix,npoin,nvfix)
343 | call check2( )
344 |
345 |
346 | ! On cherche le nombre de conditions aux limites, ie nombres de noeuds bloqués pour dimensionner ultérieurement rgstif, rgload
347 | ! D'abord on cherche le nombre de directions qui sont bloquées
348 | nnodefix=0
349 | do i=1,ntotv
350 | if (iffix(i)==1) then
351 | nnodefix=nnodefix+1
352 | end if
353 | end do
354 |
355 | ! Ensuite on regarde s'il y a des déplacements imposes
356 | ! do i=1,nvfix
357 | ! do j=1,ndim
358 | ! if (presc0(i,j)/=0.d0) then
359 | ! nnodefix=nnodefix-1
360 | ! end if
361 | ! end do
362 | ! end do
363 |
364 | ! On en déduit le nombre de noeuds libres = inconnues du systeme
365 | nvlib=ntotv-nnodefix
366 | allocate(gcoord(nvlib)) !Tableau 28
367 |
368 |
369 | return
370 |
371 | end
372 |
373 |
374 |
375 |
376 |
377 |
378 |
379 |
380 |
381 |
382 |
383 |
384 |
385 |
386 |
--------------------------------------------------------------------------------
/subroutines/input_data_GiD.f90:
--------------------------------------------------------------------------------
1 | subroutine input_data_GiD()
2 |
3 |
4 | use variables
5 | implicit none
6 |
7 | integer :: ipoin, idime, nb_tab_dyn, ivfix, ifpre, iprop, ielem, igaus
8 | integer :: i, j, idofn, ifdof, imats, istep, ngash, nloca, numat, numel, inode
9 | integer :: icompt, itotv
10 |
11 | ! real :: cond(mpoin,5)
12 | character (len=60) :: title
13 | character (len=60) :: atemp
14 |
15 | include 'subroutines/interface.f90'
16 |
17 | ! If you want to print console output in a txt file
18 | ! open(unit=6,file='output_terminal.txt') !Writing of the variables values
19 |
20 |
21 | ! Create file to store element stiffness matrices
22 | open(unit=1,form='unformatted',file='temp/estif.tmp')
23 |
24 |
25 | ! *******************************************
26 | ! NAME OF THE .DAT FILE GENERATED BY GID
27 | ! *******************************************
28 | open(5,file='PreProcessing/Triaxial.gid/Triaxial.dat')
29 | ! *******************************************
30 |
31 | do i=1,16
32 | read(5,*)
33 | end do
34 |
35 | !Read main caracteristics of the geometry
36 | read(5,*) atemp,npoin
37 | read(5,*) atemp,nelem
38 | read(5,*) atemp,nvfix
39 | read(5,*) atemp,ntype
40 | read(5,*) atemp,nnode
41 | read(5,*) atemp,nmats
42 | read(5,*) atemp,ngaus
43 | read(5,*) atemp,nalgo
44 | read(5,*) atemp,ncrit
45 | read(5,*) atemp,nincs
46 | read(5,*) atemp,nstre
47 | read(5,*) atemp,ndim
48 | read(5,*) atemp,epsilon
49 | read(5,*) atemp,nstage
50 |
51 | !For mechanical use, only 2 degrees of freedom per node: X and Y
52 | ndofn=2
53 |
54 | nevab=ndofn*nnode
55 | nstr1=nstre+1
56 |
57 | if(ntype == 3) then
58 | nstr1=nstre
59 | end if
60 |
61 | ntotv=npoin*ndofn
62 | ngaus2=ngaus*ngaus
63 | ntotg=nelem*ngaus2
64 |
65 |
66 | !Number of Degrees Of Freedom per Node. =2: X et Y
67 | mfron=ndofn*npoin !Maximum front width
68 |
69 | mstif=(mfron*mfron-mfron)/2.0 +mfron
70 |
71 |
72 |
73 | !Number of material parameters required to define characteristics of a material completely
74 | !=4 for elasto-plastic problem; =2 for other applications; =11 for Cam Clay
75 |
76 | if (ncrit<=4) then
77 | nprop=7
78 | else if (ncrit==5) then
79 | nprop=11
80 | else if (ncrit==6) then
81 | nprop=16
82 | end if
83 |
84 | !On est tranquille et on peut mélanger plusieurs matériaux avec différents criteres
85 | ! nprop=11
86 | ! nprop=16
87 |
88 | ! *** DYNAMIC ALLOCATION OF MEMORY ****
89 | include 'workspace/Alloc.f90'
90 |
91 | if (ncrit==5 .or. ncrit==6) then
92 | include 'workspace/Alloc_CamClay.f90'
93 | end if
94 |
95 |
96 | write(6,901) npoin,nelem,nvfix,ntype,nnode,nmats,ngaus,nevab,nalgo,ncrit,nincs,nstre !2
97 | 901 format(//8h npoin =,i4,4x,8h nelem =,i4,4x,8h nvfix =,i4,4x, &
98 | 8h ntype =,i4,4x,8h nnode =,i4, &
99 | //8h nmats =,i4,4x,8h ngaus= ,i4, &
100 | 4x,8h nevab =,i4,4x,8h nalgo =,i4,4x, &
101 | //8h ncrit =,i4,4x,8h nincs =,i4,4x,8h nstre =,i4)
102 |
103 | !call check1(ndofn,nelem,ngaus,nmats,nnode,npoin,nstre,ntype,nvfix,ncrit,nalgo,nincs)
104 | call check1( )
105 |
106 | ! On indique le type de problem:
107 | write(6,*) ''
108 | write(6,*) '--------------------------------------------'
109 | if (ntype==1) then
110 | write(6,*), "CALCUL CHARACTERISTICS: PLANE STRESS"
111 | end if
112 |
113 | if (ntype==2) then
114 | write(6,*) "CALCUL CHARACTERISTICS: PLANE STRAIN"
115 | end if
116 |
117 | if (ntype==3) then
118 | write(6,*) "CALCUL CHARACTERISTICS: AXISYMMETRIC PROBLEM"
119 | end if
120 |
121 | select case(ncrit)
122 | case(1) !ncrit=1: Tresca yield criterion
123 | write(6,*) "TRESCA"
124 |
125 | case(2) !ncrit=2: Von Mises
126 | write(6,*) "VON MISES"
127 | !
128 | case(3) !ncrit=3: Mohr-Coulomb
129 | write(6,*) "MOHR-COULOMB"
130 |
131 | case(4) !ncrit=4: Drucker-Prager
132 | write(6,*) "DRUCKER-PRAGER"
133 |
134 | case(5) !ncrit=5: Cam-Clay
135 | write(6,*) "CAM CLAY"
136 | end select
137 |
138 |
139 | write(6,*) '--------------------------------------------'
140 |
141 | do i=1,5
142 | read(5,*)
143 | end do
144 |
145 | !------------------------------------
146 | !Read connectivity table
147 | !------------------------------------
148 |
149 | !Read the elements nodal connections and the property numbers
150 | write(6,902) !3
151 | 902 format(//8h element,3x,8hproperty,6x,12hnode numbers)
152 |
153 | 903 format(1x,i5,i9,6x,8i5)
154 | if (nnode==4) then
155 | do ielem=1,nelem
156 | read(5,*) numel,matno(numel),(lnods(numel,inode),inode=1,nnode) !6
157 | write(6,903) numel,matno(numel),(lnods(numel,inode),inode=1,nnode)!4
158 | end do
159 | end if
160 |
161 | if (nnode==8) then
162 | do ielem=1,nelem
163 | read(5,*) numel,matno(numel),lnods(numel,1) ,lnods(numel,3) ,lnods(numel,5) ,lnods(numel,7) ,lnods(numel,2), &
164 | & lnods(numel,4),lnods(numel,6),lnods(numel,8) !6
165 | write(6,903) numel,matno(numel),(lnods(numel,inode),inode=1,nnode)!4
166 | end do
167 | end if
168 |
169 | if (nnode==9) then
170 | do ielem=1,nelem
171 | read(5,*) numel,matno(numel),lnods(numel,1) ,lnods(numel,3) ,lnods(numel,5) ,lnods(numel,7) ,lnods(numel,2), &
172 | & lnods(numel,4),lnods(numel,6),lnods(numel,8),lnods(numel,9) !6
173 | write(6,903) numel,matno(numel),(lnods(numel,inode),inode=1,nnode)!4
174 | end do
175 | end if
176 |
177 | !------------------------------------
178 | ! Read point coordinates
179 | !------------------------------------
180 | do i=1,5
181 | read(5,*)
182 | end do
183 |
184 | ! Set to zero all the nodal coordinates, prior to reading some of them
185 | do ipoin=1,npoin
186 | do idime=1,ndim
187 | coord(ipoin,idime)=0.0
188 | end do
189 | end do
190 |
191 |
192 |
193 | ! Read some nodal coordinates, finishing with the last node of all
194 | ! Numeros des noeuds + coord. dans ficher de sortie
195 | write(6,904) !5
196 | 904 format(//5h node,10x,1hx,10x,1hy)
197 |
198 |
199 | !7 Lecture des coordonnees
200 | do while (ipoin/=npoin)
201 | read(5,*) ipoin,(coord(ipoin,idime), idime=1,ndim) !7
202 | write(6,906) ipoin,(coord(ipoin,idime), idime=1,ndim) !6
203 | end do
204 |
205 | 905 format(i5,6f10.5)
206 |
207 | ! interpolate coordinates of mid-side nodes
208 | !call nodexy(coord,lnods,melem,mpoin,nelem,nnode)
209 |
210 | if (nnode>3) then
211 | call nodexy( )
212 | end if
213 |
214 |
215 | ! do ipoin=1,npoin
216 | ! write(6,906) ipoin,(coord(ipoin,idime), idime=1,ndim) !6
217 | ! end do
218 |
219 | 906 format(1x,i5,3f10.4)
220 |
221 | do i=1,5
222 | read(5,*)
223 | end do
224 | !------------------------------------
225 | !Read materials properties
226 | !------------------------------------
227 | ! Properties are ordered as follows:
228 | ! 1 - Young E
229 | ! 2 - Poisson
230 | ! 3 - Thickness
231 | ! 4 - Density
232 | ! 5 - Yield stress pyI/sigma_y/etc...
233 | ! 6 - Hardening parameter H'
234 | ! 7 - Friction angle phi
235 | ! 8 - Nlambda, specific volume of NCL at 1 kPa
236 | ! 9 - lambda, slope of NCL
237 | ! 10 - kappa, slope of URL
238 | ! 11 - M, slope of CSL
239 | ! 12 - pyII, secondary yield stress where degradation occurs
240 | ! 13 - beta, rate of degradation
241 | ! 14 - Dei, additional void ratio at p'=pyI (yield)
242 | ! 15 - Dec, residual void ratio at p'->+inf
243 | ! 16 - p'b, tensile strength due to cohesion
244 |
245 | ! Read the available selection of element properties
246 | write(6,923)
247 | 923 format( //20hMaterials properties)
248 | 16 write(6,910)
249 | 910 format(6hNumber,6x,19h Element properties)
250 |
251 |
252 | do imats=1,nmats
253 | read(5,*) numat,(props(numat,iprop),iprop=1,nprop) !10
254 | ! 930 format(8f10.5)
255 | write(6,*) numat,(props(numat,iprop),iprop=1,nprop)
256 | end do
257 |
258 |
259 | ! Set up gaussian integration constants
260 | !call gaussq(ngaus,posgp,weigp)
261 | call gaussq( )
262 |
263 |
264 |
265 |
266 |
267 |
268 | return
269 |
270 | end
271 |
--------------------------------------------------------------------------------
/subroutines/interface.f90:
--------------------------------------------------------------------------------
1 | interface
2 | subroutine cg_method(A,X,B,n)
3 | double precision, dimension(n,n) :: A
4 | double precision, dimension(n) :: B, X
5 | end subroutine
6 |
7 | subroutine disp_vec(v)
8 | double precision, dimension(:), allocatable :: v
9 | end subroutine
10 |
11 | subroutine disp_mat(t)
12 | double precision, dimension(:,:), allocatable :: t
13 | end subroutine
14 | end interface
--------------------------------------------------------------------------------
/subroutines/numerical_analysis.f90:
--------------------------------------------------------------------------------
1 |
2 | !******************************************************************
3 | ! Subroutine jacob2 - Owen p.182
4 | ! Calculates, for any sampling position (ksi_p,eta_p) (usually the gauss point) the following quantity:
5 | ! * The cartesian coordinates of the gauss point which are stored in the array gpcod()
6 | ! * The Jacobian matrix which is stored in xjcam()
7 | ! * The determinant of the Jacobian matrix, djacb
8 | ! * The inverse of the Jacobian matrix which is stored in xjaci()
9 | ! * The cartesian derivatives dNi/dx, dNi/dy (or dNi/dr, dNi/dz) of the element shape functions
10 | ! *******************************************************
11 |
12 | !subroutine jacob2(xjacm,cartd,deriv,djacb,elcod,gpcod,ielem,kgasp,nnode,shap,cardc,cartdt,kgaus,gpcodg)
13 | !subroutine jacob2(ielem, kgasp)
14 | subroutine jacob2(ielem,kgasp)
15 |
16 | use variables
17 |
18 | implicit none
19 |
20 | integer :: idime, i, inode, j, jdime, kgasp, ielem
21 |
22 |
23 |
24 | !if (nnode>3) then
25 | ! calculate coordinates of sampling point
26 | ! Eq. 6.43 p. 171
27 | do idime=1,ndim
28 | gpcod(idime,kgasp)=0.d0
29 | do inode=1,nnode
30 | gpcod(idime,kgasp)=gpcod(idime,kgasp)+elcod(idime,inode)*shap(inode)
31 | end do
32 | end do
33 |
34 | ! print *,gpcod(1,kgasp),gpcod(2,kgasp)
35 | ! pause
36 |
37 | ! write(6,*) elcod
38 | ! write(6,*) shap
39 | ! stop
40 | !end if
41 |
42 | !if (nnode==3) then
43 | !do idime=1,ndim
44 | ! gpcod(idime,kgasp)=0.0
45 | ! do inode=1,nnode
46 | ! gpcod(idime,kgasp)=elcod(idime,inode)
47 | ! end do
48 | !end do
49 | !
50 | !end if
51 |
52 | !do idime=1,2
53 | ! write(6,*) (gpcod(idime,inode),inode=1,1)
54 | !end do
55 | !stop
56 |
57 |
58 | ! kgaus=1 !ajouter par victor
59 |
60 | ! write(*,*) 'ok jacob2',kgaus, kgasp
61 | ! pause
62 |
63 | !do idime=1,2
64 | ! gpcodg(idime,kgaus)=gpcod(idime,kgasp)
65 | !end do
66 |
67 |
68 |
69 | !*** create jacobian matrix , xjacm
70 | !
71 | do idime=1,2
72 | do jdime=1,2
73 | xjacm(idime,jdime)=0.d0
74 | do inode=1,nnode
75 | xjacm(idime,jdime)=xjacm(idime,jdime)+deriv(idime,inode)*elcod(jdime,inode)
76 | end do
77 | end do
78 | end do
79 |
80 |
81 | !*** calculates determinant and inverse of jacobian matrix
82 | djacb=xjacm(1,1)*xjacm(2,2)-xjacm(1,2)*xjacm(2,1)
83 |
84 | ! write(6,*) djacb
85 | ! stop
86 |
87 | if (djacb<0.d0) then
88 | write(6,600) ielem
89 | stop
90 | else if (djacb==0.d0) then
91 | write(6,600) ielem
92 | stop
93 | end if
94 |
95 | 600 format(//,36h programm halted in subroutin jacob2,/,10x,22h zero or negative area,/,10x,16h element number ,i5)
96 |
97 | xjaci(1,1)=xjacm(2,2)/djacb
98 | xjaci(2,2)=xjacm(1,1)/djacb
99 | xjaci(1,2)=-xjacm(1,2)/djacb
100 | xjaci(2,1)=-xjacm(2,1)/djacb
101 |
102 | !do idime=1,2
103 | ! write(6,*) (xjaci(idime,jdime),jdime=1,2)
104 | !end do
105 | !stop
106 |
107 | !*** calculate cartesian derivatives
108 | !
109 | do idime=1,2
110 | do inode=1,nnode
111 | cartd(idime,inode)=0.d0
112 | do jdime=1,2
113 | cartd(idime,inode)=cartd(idime,inode)+xjaci(idime,jdime)*deriv(jdime,inode)
114 | end do
115 | end do
116 | end do
117 |
118 | ! do idime=1,ndim
119 | ! write(6,*) (cartd(idime,jdime),jdime=1,nnode)
120 | ! end do
121 | !stop
122 |
123 |
124 | ! change 5
125 | !do i=1,nnode
126 | ! do j=1,2
127 | ! cartdt(i,j)=cartd(j,i)
128 | ! end do
129 | !end do
130 | ! end of change 5
131 |
132 |
133 |
134 |
135 | !! store in a vector form
136 | !do j=1,nnode
137 | ! cardc(2*j-1,1)=cartd(1,j)
138 | ! cardc(2*j,1)=cartd(2,j)
139 | !end do
140 |
141 | return
142 |
143 | end
144 |
145 |
146 |
147 |
148 | ! *****************************************************************
149 | ! This subroutine sets up the gauss-legendre integration constants Owen p.179
150 | ! Its function is to set up the sampling point positions and weighting factors for numerical integration.
151 | ! These processes are rectricted to either two or three point integration rules. cf. def. ngaus dans Module.f90
152 | ! ******************************************************************
153 |
154 | !subroutine gaussq(ngaus,posgp,weigp)
155 | subroutine gaussq( )
156 |
157 | use variables
158 |
159 | integer :: igash, kgaus
160 | !ngaus=2 avec exemple de Owen
161 | ! cf. http://fr.wikipedia.org/wiki/M%C3%A9thodes_de_quadrature_de_Gauss
162 | ! weigp: poids de l'interpolation
163 | ! posgp: Coordonnées des points du support pour l'interpolation
164 |
165 |
166 |
167 | !if (ngaus > 2) then
168 | ! posgp(1)=-0.77459666924148337703585307995648d0 ! = -(3/5)^(1/2)
169 | ! posgp(2)=0.d0
170 | ! weigp(1)=0.74535599249992989880305788957709d0 ! = 5/9
171 | ! weigp(2)=0.8888888888888889d0 ! = 8/9
172 | ! else ! ie if ngaus<=2
173 | ! posgp(1)=-0.9428090415820633658677924828065d0 !=-(1/3)^(1/2)
174 | ! weigp(1)=1.d0
175 | !end if
176 |
177 | if (ngaus == 3) then
178 | posgp(1)=-0.77459666924148337703585307995648d0 ! = -(3/5)^(1/2)
179 | posgp(2)=0.d0
180 | weigp(1)=0.55555555555555555555555555555556d0 ! = 5/9
181 | weigp(2)=0.8888888888888888888888888888889d0 ! = 8/9
182 |
183 | elseif (ngaus<=2) then! ie if ngaus<=2
184 | posgp(1)=-0.57735026918962576450914878050196d0 !=-(1/3)^(1/2)
185 | weigp(1)=1.d0
186 | end if
187 |
188 |
189 |
190 | kgaus=ngaus/2
191 |
192 | do igash=1,kgaus
193 | jgash=ngaus+1-igash
194 | posgp(jgash)=-posgp(igash)
195 | weigp(jgash)=weigp(igash)
196 | end do
197 |
198 |
199 |
200 | ! do igash=1,ngaus
201 | ! write(6,*) posgp(igash)
202 | ! end do
203 | ! stop
204 |
205 |
206 |
207 |
208 |
209 | return
210 | end
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 | ! -------------------------- MODULE cg.f90 ----------------------------
219 |
220 | !************************************************************************
221 | !* *
222 | !* Conjugate Gradient Method (CG Method) *
223 | !* ------------------------------------- *
224 | !* *
225 | !* Programming language: ANSI C *
226 | !* Compiler: Turbo C 2.0 *
227 | !* Computer: IBM PS/2 70 with 80387 *
228 | !* Sources: [BUNS85], [SCHW], [MAES84] *
229 | !* Author: Juergen Dietel, Computer Center, RWTH Aachen *
230 | !* Date: 7.31.1992 *
231 | !* *
232 | !* F90 version by J-P Moreau (without dynamic allocations). *
233 | !************************************************************************
234 | Subroutine cg_method (A,X,B,n)! & ! Conjugate Gradient Method
235 | !n, & ! Size of the linear system
236 | !a, & ! System matrix
237 | !y, & ! right hand side
238 | !x, & ! solution vector
239 | !fehler & ! error code
240 | !)
241 | integer n
242 | double precision, dimension(n,n) :: A
243 | double precision, dimension(n) :: B, X
244 | ! original name: cg_verfahren()
245 | integer, parameter :: SIZE=24
246 | double precision, parameter :: ZERO=0.d0, MACH_EPS=1.0d-15
247 | !real*8 a(0:SIZE,0:SIZE),x(0:SIZE),y(0:SIZE), delta(0:SIZE)
248 | integer fehler
249 |
250 | !************************************************************************
251 | !* CG solves the linear system *
252 | !* A * X = Y *
253 | !* for a symmetric, positive definite matrix A via the conjugate *
254 | !* gradient method. *
255 | !* *
256 | !* Input parameters: *
257 | !* ================= *
258 | !* n Size of the linear system *
259 | !* a [0..n-1,0..n-1] system matrix A. Only the upper triangle of A is *
260 | !* used. *
261 | !* y [0..n-1] vector of the right hand side *
262 | !* *
263 | !* Output parameters: *
264 | !* ================== *
265 | !* x [0..n-1] vector giving the solution *
266 | !* *
267 | !* Return value: *
268 | !* ============= *
269 | !* = 0: all is ok *
270 | !* = 1: n < 2 or other disallowed input parameters *
271 | !* = 2: memory exceeded *
272 | !* *
273 | !************************************************************************
274 | double precision d(n), & ! (0..n-1) auxiliary vectors d and g
275 | g(n), &
276 | AmalD(n) ! (0..n-1) auxiliary vector A * d
277 |
278 | double precision alpha, & ! coefficient
279 | beta, & ! coefficient
280 | dividend, & ! numerator and denominator of a fraction
281 | divisor, & ! respectively, used to compute alpha, beta
282 | hilf, & ! auxiliary variables
283 | hilf2, &
284 | abstand, & ! distance of two successive approximations
285 | ! for the solution vector x (taken in the
286 | ! euclidean norm)
287 | xnorm ! euklidean norm of x
288 | integer k, i, j ! loop variables
289 |
290 | if (n < 2) then ! invalid parameter?
291 | fehler=1
292 | print *,'n<2'
293 | return
294 | end if
295 |
296 |
297 |
298 | !------------------------------------------------------------------
299 | ! start with x at the origin
300 | !------------------------------------------------------------------
301 | do i = n , 1, -1
302 | X(i) = ZERO
303 | end do
304 |
305 | !------------------------------------------------------------------
306 | ! initialize d and g :
307 | ! d = -g = -(a*x - y) = y (since x = 0)
308 | !------------------------------------------------------------------
309 | do i = n, 1, -1
310 | hilf = B(i)
311 | d(i) = hilf
312 | g(i) = -hilf
313 | end do
314 |
315 |
316 | !------------------------------------------------------------------
317 | ! perform at most n steps of the CG Method
318 | !------------------------------------------------------------------
319 | do k = n, 0, -1
320 | !----------------------------------------------------------------
321 | ! compute new alpha:
322 | ! alpha = -(d(transp) * g) / (d(transp) * (a * d))
323 | !----------------------------------------------------------------
324 |
325 | dividend = ZERO
326 | divisor = ZERO
327 |
328 | do i = n, 1, -1
329 | dividend = dividend + d(i) * g(i)
330 | hilf = ZERO
331 | do j = 1, i-1
332 | hilf = hilf + A(j,i) * d(j)
333 | end do
334 | do j = i, n
335 | hilf = hilf + A(i,j) * d(j)
336 | end do
337 | AmalD(i) = hilf
338 | divisor = divisor + d(i) * hilf
339 | end do
340 |
341 | if (divisor.eq.ZERO) then
342 | fehler=0
343 | ! print *,'divisor=0'
344 | return
345 | end if
346 |
347 | alpha = -dividend / divisor
348 |
349 | !----------------------------------------------------------------
350 | ! compute the norm of x und alpha * d and find a new x:
351 | ! x = x + alpha * d, then check whether x is close enough,
352 | ! in order to stop the process before n complete steps
353 | !----------------------------------------------------------------
354 | xnorm = ZERO
355 | abstand = ZERO
356 |
357 | do i = n , 1, -1
358 | hilf = X(i)
359 | xnorm = xnorm + hilf*hilf
360 | hilf2 = alpha * d(i)
361 | abstand = abstand + hilf2*hilf2
362 | X(i) = hilf + hilf2
363 | end do
364 |
365 | if (abstand < MACH_EPS * xnorm) then
366 | fehler=0
367 | return
368 | end if
369 |
370 |
371 | !----------------------------------------------------------------
372 | ! compute new g: g = g + alpha * (a * d)
373 | !----------------------------------------------------------------
374 | do i = n, 1, -1
375 | g(i) = g(i) + alpha * AmalD(i)
376 | end do
377 |
378 | !----------------------------------------------------------------
379 | ! compute new beta :
380 | ! beta = (g(transp) * (a * d)) / (d(transp) * (a * d))
381 | !----------------------------------------------------------------
382 | dividend = ZERO
383 | do i = n, 1, -1
384 | dividend = dividend + g(i) * AmalD(i)
385 | end do
386 |
387 | beta = dividend / divisor
388 |
389 | !----------------------------------------------------------------
390 | ! compute new d : d = - g + beta * d
391 | !----------------------------------------------------------------
392 | do i = n, 1, -1
393 | d(i) = -g(i) + beta * d(i)
394 | end do
395 |
396 | end do !k loop
397 |
398 | fehler=0
399 | return
400 | end
401 |
402 |
403 |
404 |
405 |
--------------------------------------------------------------------------------
/subroutines/output_deviator.f90:
--------------------------------------------------------------------------------
1 | !*******************************************************************************
2 | ! Subroutine output_python( )
3 | ! This subroutine outputs displacements, reactions, and stresses
4 | !*******************************************************************************
5 |
6 | subroutine output_deviator( )
7 |
8 | use variables
9 | implicit none
10 |
11 | integer :: koutp, ipoin, ngash, ngish, kelgs, istre, istr1, ivfix, idofn, igash, igaus, jgaus, kgaus
12 | integer :: ielem, inode,jdim, idime, lnode, knode, kshap, kgaus_rep
13 | double precision :: xgash, xgish, xgesh, xgosh
14 | double precision :: etasp, exisp,alpha_extrap, ksi, eta
15 | double precision :: s_xx, s_yy, s_xy, s_zz, varj2_triax, eps_a
16 | ! (strsg(istr1,kgaus),istr1=1,4)
17 |
18 | !We work on first gauss point to begin with
19 | s_xx=strsg(1,1)
20 | s_yy=strsg(2,1)
21 | s_xy=strsg(3,1)
22 | s_zz=strsg(4,1)
23 |
24 | !Calculate second deviatoric stress invariant J2'
25 | varj2_triax=s_xy*s_xy+0.5d0*(s_xx*s_xx + s_yy*s_yy + s_zz*s_zz)
26 |
27 | eps_a=defsg(1,1)
28 |
29 | open(unit=152,file='PostProcessing/Output/Deviatoric/deviatoric.txt')
30 |
31 | if (iincs==1) then
32 | write(152,*) "Increment eps_a varj2 sqrt(varj2)"
33 | end if
34 | write(152,*) iincs,eps_a*100.d0,varj2_triax,dsqrt(varj2_triax)
35 |
36 |
37 | end subroutine
38 |
39 |
40 |
--------------------------------------------------------------------------------
/subroutines/output_vtk.f90:
--------------------------------------------------------------------------------
1 | subroutine output_vtk( )
2 | use variables
3 | implicit none
4 | character(len=50) :: title_file, numfile_char,part4,part1, npoin_char, nelem_char,x_char, y_char, z_char, nelem_tot_char
5 | character(len=50) :: n1_c, n2_c, n3_c, n4_c, n5_c, n6_c, n7_c, n8_c, n9_c, nnode_char
6 | integer :: i, j, ipoin, ngash,ngish,igish,igash, nelem_tot
7 | double precision :: z=0.d0
8 |
9 | !http://people.sc.fsu.edu/~jburkardt/data/vtk/vtk.html
10 | !http://dunne.uni-hd.de/VisuSimple/documents/vtkfileformat.html
11 |
12 | !Creating name file
13 | part1='output/'
14 | title_file='output_vtk_'
15 | write(numfile_char,'(i10)') iincs
16 | part4='.vtk'
17 |
18 | ! Concatenation - trim supprime tous les espaces de fin
19 | title_file= trim(part1) // trim(title_file) // trim(numfile_char) // trim(part4)
20 |
21 | !Creating output file
22 | open(13,file=title_file)
23 |
24 | !Header
25 | write(13,900) '# vtk DataFile Version 1.0'
26 | write(13,900) 'Unstructured Grid Example'
27 | write(13,900) 'ASCII'
28 | 900 format(a)
29 |
30 | write(13,901) 'DATASET UNSTRUCTURED_GRID'
31 | 901 format(/a)
32 |
33 | !Pointdata
34 | !header
35 | write(npoin_char,'(i10)') npoin
36 | npoin_char=adjustl(npoin_char)
37 | write(13,910) trim(npoin_char)
38 | 910 format(7hPOINTS ,a,6h float)
39 |
40 | !Coordonnees
41 | z_char='0'
42 | do i=1,npoin
43 | write(x_char,'(f10.6)') coord(i,1)
44 | write(y_char,'(f10.6)') coord(i,2)
45 | write(z_char,'(f10.6)') z
46 | x_char=adjustl(x_char)
47 | y_char=adjustl(y_char)
48 | z_char=adjustl(z_char)
49 | write(13,920) trim(x_char), trim(y_char), trim(z_char)
50 | end do
51 | 920 format(a,1x,a,1x,a)
52 |
53 |
54 | !Celldata
55 | !header
56 | nelem_tot=nelem*(nnode+1)
57 | write(nelem_char,'(i10)') nelem
58 | write(nelem_tot_char,'(i10)') nelem_tot
59 | nelem_char=adjustl(nelem_char)
60 | nelem_tot_char=adjustl(nelem_tot_char)
61 | write(13,930) trim(nelem_char), trim(nelem_tot_char)
62 | 930 format(/6hCELLS ,a,1x,a)
63 |
64 | !Connectivity table
65 | write(nnode_char,'(i10)') nnode
66 | nnode_char=adjustl(nnode_char)
67 |
68 | do i=1,nelem
69 |
70 | ! write(n1_c,'(i10)') (iabs(lnods(i,1))-1)
71 | ! write(n2_c,'(i10)') (iabs(lnods(i,2))-1)
72 | ! write(n3_c,'(i10)') (iabs(lnods(i,3))-1)
73 | ! write(n4_c,'(i10)') (iabs(lnods(i,4))-1)
74 | ! write(n5_c,'(i10)') (iabs(lnods(i,5))-1)
75 | ! write(n6_c,'(i10)') (iabs(lnods(i,6))-1)
76 | ! write(n7_c,'(i10)') (iabs(lnods(i,7))-1)
77 | ! write(n8_c,'(i10)') (iabs(lnods(i,8))-1)
78 | ! if (nnode == 9) then
79 | ! write(n9_c,'(i10)') (iabs(lnods(i,9))-1)
80 | ! end if
81 |
82 | ! n1_c=adjustl(n1_c)
83 | ! n2_c=adjustl(n2_c)
84 | ! n3_c=adjustl(n3_c)
85 | ! n4_c=adjustl(n4_c)
86 | ! n5_c=adjustl(n5_c)
87 | ! n6_c=adjustl(n6_c)
88 | ! n7_c=adjustl(n7_c)
89 | ! n8_c=adjustl(n8_c)
90 | ! if (nnode == 9) then
91 | ! n9_c=adjustl(n9_c)
92 | ! end if
93 | select case (nnode)
94 | case (3)
95 | write(n1_c,'(i10)') (iabs(lnods(i,1))-1)
96 | write(n2_c,'(i10)') (iabs(lnods(i,2))-1)
97 | write(n3_c,'(i10)') (iabs(lnods(i,3))-1)
98 | n1_c=adjustl(n1_c)
99 | n2_c=adjustl(n2_c)
100 | n3_c=adjustl(n3_c)
101 | write(13,940) trim(nnode_char), trim(n1_c), trim(n2_c), trim(n3_c)
102 | 940 format(a,1x,a,1x,a,1x,a)
103 |
104 | case(4)
105 | write(n1_c,'(i10)') (iabs(lnods(i,1))-1)
106 | write(n2_c,'(i10)') (iabs(lnods(i,2))-1)
107 | write(n3_c,'(i10)') (iabs(lnods(i,3))-1)
108 | write(n4_c,'(i10)') (iabs(lnods(i,4))-1)
109 | n1_c=adjustl(n1_c)
110 | n2_c=adjustl(n2_c)
111 | n3_c=adjustl(n3_c)
112 | n4_c=adjustl(n4_c)
113 | write(13,944) trim(nnode_char), trim(n1_c), trim(n2_c), trim(n4_c), trim(n3_c)
114 | 944 format(a,1x,a,1x,a,1x,a,1x,a,1x)
115 |
116 | case(8)
117 | write(n1_c,'(i10)') (iabs(lnods(i,1))-1)
118 | write(n2_c,'(i10)') (iabs(lnods(i,2))-1)
119 | write(n3_c,'(i10)') (iabs(lnods(i,3))-1)
120 | write(n4_c,'(i10)') (iabs(lnods(i,4))-1)
121 | write(n5_c,'(i10)') (iabs(lnods(i,5))-1)
122 | write(n6_c,'(i10)') (iabs(lnods(i,6))-1)
123 | write(n7_c,'(i10)') (iabs(lnods(i,7))-1)
124 | write(n8_c,'(i10)') (iabs(lnods(i,8))-1)
125 | n1_c=adjustl(n1_c)
126 | n2_c=adjustl(n2_c)
127 | n3_c=adjustl(n3_c)
128 | n4_c=adjustl(n4_c)
129 | n5_c=adjustl(n5_c)
130 | n6_c=adjustl(n6_c)
131 | n7_c=adjustl(n7_c)
132 | n8_c=adjustl(n8_c)
133 | write(13,941) trim(nnode_char), trim(n1_c), trim(n3_c), trim(n5_c), trim(n7_c), &
134 | & trim(n2_c), trim(n4_c), trim(n6_c), trim(n8_c)
135 | 941 format(a,1x,a,1x,a,1x,a,1x,a,1x,a,1x,a,1x,a,1x,a)
136 |
137 | end select
138 | end do
139 |
140 |
141 | !nnode=nombre de noeuds par elements
142 | !lnods=table de connectivité (ligne 1=element 1, ligne 2=element 2, etc...)
143 | !nelem=nombre d'elements total dans la structure
144 | !npoin=nombre total de points dans la structure
145 | !coord=coordonnées des points (attention ici c'est en 2D)
146 | !ndim=nombre de dimensions
147 |
148 |
149 | !Cell_Type
150 | !header
151 | write(13,950) trim(nelem_char)
152 | 950 format(/11hCELL_TYPES ,a)
153 |
154 | select case (nnode)
155 | case(3)
156 | do i=1,nelem
157 | write(13,'(a)') '5'
158 | end do
159 |
160 | case(4)
161 | do i=1,nelem
162 | write(13,'(a)') '8'
163 | end do
164 |
165 | case(8)
166 | do i=1,nelem
167 | write(13,'(a)') '23'
168 | end do
169 | end select
170 |
171 | ! Point data
172 | !header
173 | write(13,970) trim(npoin_char)
174 | 970 format(/11hPOINT_DATA ,a)
175 | write(13,'(a)') 'SCALARS Fx float'
176 | write(13,'(a)') 'LOOKUP_TABLE default'
177 |
178 | do ipoin=1,npoin
179 | ngash=ipoin*2
180 | ngish=ngash-2+1
181 |
182 | write(x_char,'(f12.6)') tofor(ngish)
183 | write(y_char,'(f10.6)') tofor(ngash)*100
184 | write(z_char,'(f10.6)') z
185 |
186 | x_char=adjustl(x_char)
187 | y_char=adjustl(y_char)
188 | z_char=adjustl(z_char)
189 |
190 | write(13,920) trim(y_char)!, trim(y_char), trim(z_char)
191 | !write(13,*) (tdisp(igash),igash=ngish,ngash),0.0
192 | end do
193 |
194 |
195 |
196 | close(13)
197 | end
198 |
--------------------------------------------------------------------------------
/subroutines/plasticity.f90:
--------------------------------------------------------------------------------
1 | !******************************************************
2 | !
3 | ! This file contains subroutines used for plasticity
4 | !
5 | !******************************************************
6 |
7 |
8 | ! **********************************************************************
9 | ! Subroutine invar - Owen p. 239
10 | ! This subroutine evaluates the stress invariants and the current value of
11 | ! the yield function
12 | ! ***********************************************************************
13 |
14 | subroutine invar(lprop,stemp)
15 |
16 | use variables
17 | implicit none
18 |
19 | double precision, dimension(4) :: stemp
20 | double precision :: varj1
21 | integer :: lprop
22 |
23 | ! write(6,*) 'stemp dans invar',stemp
24 | ! stop
25 |
26 |
27 | ! First invariant I1=Tr(sigma)
28 | I1=stemp(1)+stemp(2)+stemp(4)
29 | smean=(stemp(1)+stemp(2)+stemp(4))/3.d0
30 |
31 | !Compute deviatoric stresses according to (7.7): s=sigma -(1/3)*I1
32 | devia(1)=stemp(1)-smean ! sigma_xx
33 | devia(2)=stemp(2)-smean ! sigma_yy
34 | devia(3)=stemp(3) ! sigma_xy
35 | devia(4)=stemp(4)-smean ! sigma_ZZ
36 |
37 |
38 | !On vérifie qu'il n'y a pas d'incohérences dans le tenseur déviatorique
39 | !We check there are no inconstitencies with the deviatoric tensor, i.e. if J1=0 (First deviatoric stress invariant J1')
40 | varj1=devia(1)+devia(2)+devia(4)
41 |
42 | ! write(6,*) "smean, devia(1),devia(2),devia(3),devia(4)="
43 | ! write(6,*) smean,devia(1),devia(2),devia(3),devia(4)
44 | !stop
45 |
46 | ! if (abs(varj1) > 1.d-8) then
47 | if (abs(varj1) > epsilon) then
48 | write(6,*) 'Error in the deviatoric stress tensor: J1 ≠ 0 =', varj1
49 | stop
50 | end if
51 | ! End test
52 |
53 | !Calculate second deviatoric stress invariant J2'
54 | varj2=devia(3)*devia(3)+0.5d0*(devia(1)*devia(1) + devia(2)*devia(2) + devia(4)*devia(4))
55 | ! write(6,*) "varj2=",varj2
56 |
57 | !Calculate third deviatoric stress invariant J3'
58 | varj3=devia(4)*(devia(4)*devia(4)-varj2)
59 |
60 | !Compute √(J2')
61 | steff=dsqrt(varj2)
62 |
63 | if (steff == 0.d0) go to 10
64 | sint3=-3.d0*root3*varj3/(2.d0*varj2*steff)
65 | if(sint3.GT.1.d0) sint3=1.d0
66 | go to 20
67 | 10 sint3=0.d0
68 | 20 continue
69 | if(sint3.LT.-1.d0) then
70 | sint3=-1.d0
71 | end if
72 |
73 | if(sint3.GT.1.d0) then
74 | sint3=1.d0
75 | end if
76 | theta=dasin(sint3)/3.d0
77 |
78 |
79 | ! Evaluate yield function according to the criterion
80 | select case(ncrit)
81 | case(1) !ncrit=1: Tresca yield criterion
82 | yield=2.d0*dcos(theta)*steff
83 | return
84 | case(2) !ncrit=2: Von Mises
85 | yield=root3*steff
86 | ! print *,"yield=",yield
87 | return
88 | case(3) !ncrit=3: Mohr-Coulomb
89 | phira=props(lprop,7)*degres
90 | snphi=dsin(phira)
91 | yield=smean*snphi+steff*(dcos(theta)-dsin(theta)*snphi/root3)
92 | return
93 | case(4) !ncrit=4: Drucker-Prager
94 | phira=props(lprop,7)*degres
95 | snphi=dsin(phira)
96 | yield=6.d0*smean*snphi/(root3*(3.d0-snphi))+steff
97 | return
98 | case(5) !ncrit=5: Cam-Clay
99 | csl=props(lprop,11)
100 | ! yield=(3.d0*varj2/(smean*csl*csl))+smean
101 | yield=-(I1/3.d0)-(9.d0*varj2)/(I1*csl*csl)
102 | ! print *,'yield ss=',yield
103 | return
104 | !Change 44
105 | case(6) !ncrit=6: Lime treated soils
106 | ! q=1.732050808*steff
107 | csl=props(lprop,11)
108 | pb=props(lprop,16)
109 | yield=-(I1/3.d0)-(9.d0*varj2)/((I1+3.d0*pb)*csl*csl)
110 | end select
111 |
112 |
113 | end
114 |
115 | !********************************************************************
116 | ! Subroutine yieldf - Owen p.241
117 | ! This subroutine evaluates the flow vector a defined in (7.74)
118 | !********************************************************************
119 |
120 | subroutine yieldf(lprop,kgaus)
121 |
122 | use variables
123 |
124 | implicit none
125 |
126 | integer :: istr1, lprop, kgaus
127 |
128 |
129 | if(steff == 0.d0) then
130 | return
131 | end if
132 |
133 |
134 | frict=props(lprop,7)
135 | ! snphi=dsin(frict*degres) ! ?
136 | tanth=dtan(theta)
137 | tant3=dtan(3.d0*theta)
138 | sinth=dsin(theta)
139 | costh=dcos(theta)
140 | cost3=dcos(3.d0*theta)
141 | !root3=1.73205080757
142 |
143 | ! Calculate vector a1
144 |
145 | veca1(1)=1.d0
146 | veca1(2)=1.d0
147 | veca1(3)=0.d0
148 | veca1(4)=1.d0
149 |
150 | ! Calculate vector a2
151 |
152 | do istr1=1,nstr1
153 | veca2(istr1)=devia(istr1)/(2.d0*steff)
154 | end do
155 |
156 | veca2(3)=devia(3)/steff
157 |
158 | ! Calculate vector a3
159 |
160 | veca3(1)=devia(2)*devia(4)+varj2/3.d0
161 | veca3(2)=devia(1)*devia(4)+varj2/3.d0
162 | veca3(3)=-2.d0*devia(3)*devia(4)
163 | veca3(4)=devia(1)*devia(2)-devia(3)*devia(3)+varj2/3.d0
164 |
165 | select case(ncrit)
166 | case(1) ! ncrit=1: Tresca
167 | cons1=0.d0
168 | abthe=dabs(theta*radian)
169 | if(abthe >= 29.d0) then
170 | cons2=root3
171 | cons3=0.d0
172 | end if
173 |
174 | if(abthe < 29.d0) then
175 | cons2=2.d0*(costh+sinth*tant3)
176 | cons3=root3*sinth/(varj2*cost3)
177 | end if
178 |
179 | case(2) ! ncrit=2: Von Mises
180 | cons1=0.d0
181 | cons2=root3
182 | cons3=0.d0
183 |
184 | case(3) ! ncrit=3: Mohr-Coulomb
185 | cons1=dsin(frict*degres)/3.d0
186 | abthe=dabs(theta*radian)
187 |
188 |
189 | if(abthe.LT.29.d0) go to 30
190 | cons3=0.d0
191 | plumi=1.d0
192 | if (theta.GT.0.d0) plumi=-1.d0
193 | cons2=0.5*(root3+plumi*cons1*root3)
194 | go to 40
195 | 30 cons2=costh*((1.d0+tanth*tant3)+cons1*(tant3-tanth)*root3)
196 | cons3=(root3*sinth+3.d0*cons1*costh)/(2.d0*varj2*cost3)
197 | go to 40
198 |
199 | case(4) ! ncrit=4: Drucker-Prager
200 | snphi=dsin(frict*degres)
201 | cons1=2.d0*snphi/(root3*(3.d0-snphi))
202 | cons2=1.d0
203 | cons3=0.d0
204 |
205 | case(5) ! ncrit=5: Cam Clay
206 | !
207 | cons1=(1.d0/9.d0)*(2.d0*I1+3.d0*yieldgp(kgaus))
208 | ! print *,"iincs=",iincs,'kgaus=',kgaus,'yieldgp=',yieldgp(kgaus)
209 | cons2=(6.d0*steff)/(csl*csl)
210 | cons3=0.d0
211 | case(6) ! ncrit=6: MASS
212 | cons1=(1.d0/9.d0)*(2.d0*I1+3.d0*(yieldgp(kgaus)+pb))
213 | ! print *,"iincs=",iincs,'kgaus=',kgaus,'yieldgp=',yieldgp(kgaus)
214 | cons2=(6.d0*steff)/(csl*csl)
215 | cons3=0.d0
216 |
217 | end select
218 |
219 | 40 continue
220 | do istr1=1,nstr1
221 | avect(istr1)=cons1*veca1(istr1)+cons2*veca2(istr1)+cons3*veca3(istr1)
222 | end do
223 |
224 | return
225 | end
226 |
227 |
228 | ! *********************************************************************
229 | ! Subroutine flowpl - Owen p.243
230 | ! This subroutine evaluates the plastic d vector.
231 | ! ***********************************************************************
232 |
233 |
234 | subroutine flowpl(lprop,kgaus)
235 |
236 | use variables
237 |
238 | implicit none
239 |
240 | integer :: istr1, lprop, kgaus
241 |
242 | double precision :: denom, fmul1, fmul2, fmul3, hards, part1, part2, part3, pyIIo,betas
243 |
244 |
245 | young=props(lprop,1)
246 | poiss=props(lprop,2)
247 | hards=props(lprop,6)
248 |
249 |
250 | fmul1=young/(1.d0+poiss)
251 |
252 | if (ntype == 2 .or. ntype == 3) then
253 | !Plane strain: ntype = 2 / Axial symmetry: ntype = 3
254 | fmul2=young*poiss*(avect(1)+avect(2)+avect(4))/((1.d0+poiss)*(1.d0-2.d0*poiss))
255 | dvect(1)=fmul1*avect(1)+fmul2
256 | dvect(2)=fmul1*avect(2)+fmul2
257 | dvect(3)=0.5d0*avect(3)*young/(1.d0+poiss)
258 | dvect(4)=fmul1*avect(4)+fmul2
259 | else
260 | !Plane stress: ntype = 1
261 | fmul3=young*poiss*(avect(1)+avect(2))/(1.d0-poiss*poiss)
262 | dvect(1)=fmul1*avect(1)+fmul3
263 | dvect(2)=fmul1*avect(2)+fmul3
264 | dvect(3)=0.5d0*avect(3)*young/(1.d0+poiss)
265 | dvect(4)=fmul1*avect(4)+fmul3
266 | end if
267 |
268 |
269 | ! Compute 1/(H'+dvect*avect) for later evaluation of the elasto-plastic matrix Dep
270 | ! /!\ matrix D is constant in this version, ie not re-evaluated even if yield occured
271 |
272 | !For Cam Clay, hards correspond au parametre A et n'est pas constant -> A CALCULER
273 |
274 | if (ncrit/=5) then
275 | 70 denom=hards
276 | end if
277 |
278 | if (ncrit==5) then
279 | denom = ( yieldgp(kgaus)*volspegp(kgaus)*I1*( 3.d0*yieldgp(kgaus)+2.d0*I1) )/( 9.d0*(CCkappa-CClambda) )
280 | end if
281 |
282 | !Model MASS
283 | if (ncrit==6) then
284 | part1 = volspegp(kgaus)*(I1+3.d0*pb)*(2.d0*I1 + 3.d0*(yieldgp(kgaus)+pb))
285 | part2 = exp(beta*yieldgp(kgaus))*beta*(exp(pyI*beta) + exp(pyII*beta))*(Dec-Dei)
286 | part3 = (exp(yieldgp(kgaus)*beta)+exp(pyII*beta))*(exp(yieldgp(kgaus)*beta)+exp(pyII*beta))
287 | denom = part1/( 9.d0*( -(part2/part3) + (CClambda-CCkappa)/yieldgp(kgaus)) )
288 | end if
289 |
290 |
291 | do istr1=1,nstr1
292 | denom=denom+avect(istr1)*dvect(istr1)
293 | end do
294 |
295 | abeta=1.d0/denom
296 |
297 |
298 | return
299 | end
300 |
301 |
--------------------------------------------------------------------------------
/subroutines/validation.f90:
--------------------------------------------------------------------------------
1 |
2 |
3 | subroutine outputvalidationCC( )
4 |
5 | use variables
6 | implicit none
7 |
8 | ! integer :: koutp, ipoin, ngash, ngish, kelgs, istre, istr1, ivfix, idofn, igash, igaus, jgaus, kgaus
9 | ! integer :: ielem, inode,jdim, idime, lnode, knode, kshap, kgaus_rep,i
10 | double precision :: p_eff_mean,temp,q_devia, depspp
11 |
12 | ! double precision :: etasp, exisp,alpha_extrap, ksi, eta
13 |
14 | integer :: num_gaus
15 |
16 | double precision, dimension(4) :: deviateur
17 | ! double precision, dimension(npoin) :: yield_node,spe_vol_node,epstnp_node,deviatoric_stress_node,effective_mean_stress_node
18 |
19 | ! character(len=200) :: filename,part4,part1, numfile_char,npoin_char, nelem_char,x_char, y_char, z_char, nelem_tot_char
20 |
21 | !-----------------------------------------------------------------------------------------
22 | !Write cam clay parameters
23 | !-----------------------------------------------------------------------------------------
24 | if (istage==1 .and. iincs==nincs) then
25 | open(unit=133,file='PostProcessing/Output/Validation_CamClay/para_camclay.txt')
26 | write(133,*) 'Nkappa Nlambda lambda kappa M py pi '
27 | write(133,*) Nkappa,Nlambda,CClambda,CCkappa,csl,props(1,5),strsg(1,1)
28 | close(133)
29 | end if
30 |
31 | !-----------------------------------------------------------------------------------------
32 | !Write axial displacement, specific volume, effective mean stress, and deviatoric stress
33 | !-----------------------------------------------------------------------------------------
34 | if (istage==1 .and. iincs==1) then
35 | open(unit=132,file='PostProcessing/Output/Validation_CamClay/validation_camclay.txt')
36 | write(132,*) 'p q Eps_a v'
37 | end if
38 |
39 | ! we choose gauss point number
40 | num_gaus=1
41 |
42 | ! strsg(istr1,kgaus)
43 |
44 | depspp=epstnp(num_gaus)-epstnp_pre(num_gaus)
45 |
46 | epstnp_pre=epstnp
47 |
48 | p_eff_mean=(strsg(1,num_gaus)+strsg(2,num_gaus)+strsg(4,num_gaus))/3.d0
49 |
50 | ! print *, (strsg(i,num_gaus),i=1,4)
51 | !Compute deviatoric stresses according to (7.7): s=sigma -(1/3)*I1
52 | deviateur(1)=strsg(1,num_gaus)-p_eff_mean ! sigma_xx / rr
53 | deviateur(2)=strsg(2,num_gaus)-p_eff_mean ! sigma_yy / zz
54 | deviateur(3)=strsg(3,num_gaus) ! sigma_xy / rz
55 | deviateur(4)=strsg(4,num_gaus)-p_eff_mean ! sigma_ZZ / tt
56 |
57 |
58 | !Calculate second deviatoric stress invariant J2'
59 | temp=deviateur(3)*deviateur(3)+0.5d0*(deviateur(1)*deviateur(1) + deviateur(2)*deviateur(2) + deviateur(4)*deviateur(4))
60 | q_devia=dsqrt(3.d0*temp)
61 | ! print *, p_eff_mean,dsqrt(3.d0*varj22),volspegp(num_gaus)
62 |
63 | ! if (ntype==3) then
64 | ! print *,p_eff_mean,q_devia,defsg(2,num_gaus), volspegp(num_gaus)
65 | ! end if
66 |
67 | write(132,*) p_eff_mean,q_devia,defsg(2,num_gaus), volspegp(num_gaus),depspp
68 | ! end if
69 |
70 | ! write(1304,*) istage,istage,iincs,iincs
71 | return
72 |
73 | end subroutine
--------------------------------------------------------------------------------
/subroutines/zonetest_sub.f90:
--------------------------------------------------------------------------------
1 | subroutine affiche(t)
2 |
3 | implicit none
4 | integer, dimension(:,:), allocatable :: t
5 | integer :: i, j, n
6 |
7 | interface
8 | subroutine affiche2(t)
9 | integer, dimension(:,:), allocatable :: t
10 | end subroutine
11 | end interface
12 |
13 |
14 | do i=1,size(t,1)
15 | print '(1x,160i5)', t(i,:)
16 | end do
17 |
18 |
19 | end subroutine
20 |
21 | subroutine affiche2(t)
22 |
23 | implicit none
24 | integer, dimension(:,:), allocatable :: t
25 | integer :: i, j, n
26 |
27 | do i=1,size(t,1)
28 | print '(1x,160i5)', t(i,:)
29 | end do
30 |
31 |
32 | end subroutine
33 |
34 | subroutine zero(t,nblignes,nbcol)
35 |
36 | implicit none
37 | integer, dimension(nblignes,nbcol) :: t
38 | integer :: i, j, n,nbcol,nblignes
39 |
40 |
41 | do i=1,nblignes
42 | do j=1,nbcol
43 | t(i,j)=0.d0
44 | end do
45 | end do
46 |
47 | return
48 | end subroutine
49 |
50 |
--------------------------------------------------------------------------------
/workspace/Alloc.f90:
--------------------------------------------------------------------------------
1 | ! *** Zone des ALLOCATIONS DYNAMIQUES DE MEMOIRE ****
2 |
3 | compt_alloc=0
4 | nb_tab_dyn=136
5 | allocate( alloc_stat(nb_tab_dyn)) !Tableau pour sauvegarde resultats des allocations.
6 |
7 | allocate( matno(nelem), stat = alloc_stat(compt_alloc+1)) !Tableau 1
8 | allocate( coord(npoin,ndim), stat = alloc_stat(compt_alloc+2)) !Tableau 2
9 | allocate( lnods(nelem,nnode), stat = alloc_stat(compt_alloc+3)) !Tableau 3
10 | allocate( presc0(nvfix,ndofn), stat = alloc_stat(compt_alloc+4)) !Tableau 4
11 | allocate( iffix(ntotv), stat = alloc_stat(compt_alloc+5)) !Tableau 5
12 | allocate( nofix(nvfix), stat = alloc_stat(compt_alloc+6)) !Tableau 6
13 | allocate( props(nmats,nprop), stat = alloc_stat(compt_alloc+7)) !Tableau 7
14 | allocate( ndfro(nelem), stat = alloc_stat(compt_alloc+8)) !Tableau 8
15 | allocate( asdis(ntotv), stat = alloc_stat(compt_alloc+9)) !Tableau 9
16 | allocate( rload(nelem,nevab), stat = alloc_stat(compt_alloc+10)) !Tableau 10
17 | allocate( gradb(npoin,4), stat = alloc_stat(compt_alloc+11)) !Tableau 11
18 | allocate( ngrad(nelem,4), stat = alloc_stat(compt_alloc+12)) !Tableau 12
19 | allocate( delz(npoin), stat = alloc_stat(compt_alloc+13)) !Tableau 13
20 | allocate( eload(nelem,nevab), stat = alloc_stat(compt_alloc+14)) !Tableau 14
21 | allocate( tload(nelem,nevab), stat = alloc_stat(compt_alloc+15)) !Tableau 15
22 | allocate( tdisp(ntotv), stat = alloc_stat(compt_alloc+16)) !Tableau 16
23 | allocate( treac(nvfix,ndofn), stat = alloc_stat(compt_alloc+17)) !Tableau 17
24 | allocate( epstn(ntotg), stat = alloc_stat(compt_alloc+18)) !Tableau 18
25 | allocate( effst(ntotg), stat = alloc_stat(compt_alloc+19)) !Tableau 19
26 | allocate( strsg(nstr1,ntotg), stat = alloc_stat(compt_alloc+20)) !Tableau 20
27 | allocate( fixed(ntotv), stat = alloc_stat(compt_alloc+21)) !Tableau 21
28 | allocate( eldis(ndofn,nnode), stat = alloc_stat(compt_alloc+22)) !Tableau 22
29 | allocate( tofor(ntotv), stat = alloc_stat(compt_alloc+23)) !Tableau 23
30 | allocate( stfor(ntotv), stat = alloc_stat(compt_alloc+24)) !Tableau 24
31 | allocate( estif(nevab,nevab), stat = alloc_stat(compt_alloc+25)) !Tableau 25
32 | allocate( posgp(ngaus), stat = alloc_stat(compt_alloc+26)) !Tableau 26
33 | allocate( weigp(ngaus), stat = alloc_stat(compt_alloc+27)) !Tableau 27
34 | allocate( treac2(npoin,ndofn), stat = alloc_stat(compt_alloc+28)) !Tableau 28
35 | allocate( elcod(ndofn,nnode), stat = alloc_stat(compt_alloc+32)) !Tableau 22
36 |
37 | allocate( dmatx(4,4), stat = alloc_stat(compt_alloc+33)) !Tableau 22
38 | allocate( bmatx(4,2*nnode), stat = alloc_stat(compt_alloc+34)) !Tableau 22
39 | allocate( bmatx_tr(2*nnode,4), stat = alloc_stat(compt_alloc+34)) !Tableau 22
40 |
41 | allocate( stran(4), stat = alloc_stat(compt_alloc+34)) !Tableau 22
42 | allocate( stres(4), stat = alloc_stat(compt_alloc+34)) !Tableau 22
43 | allocate( eload_temp(4), stat = alloc_stat(compt_alloc+34)) !Tableau 22
44 | allocate( sigma(4), stat = alloc_stat(compt_alloc+34)) !Tableau 22
45 | allocate( strsg_out(nelem*nstr1,(ngaus*ngaus)+1), stat = alloc_stat(compt_alloc+40)) !Tableau 22
46 | allocate( defsg(nstr1,ntotg), stat = alloc_stat(compt_alloc+56)) !Tableau 20
47 |
48 | allocate( young_gp(ntotg), stat = alloc_stat(compt_alloc+18)) !Tableau 18
49 |
50 | ! allocate(gpcod_all_global(nelem,2*ngaus)) !Tableau 22
51 |
52 | !allocate( gstif(mfron,mfron), stat = alloc_stat(compt_alloc+29)) !Tableau 29
53 | !allocate( gstif_temp(mfron,mfron), stat = alloc_stat(compt_alloc+30)) !Tableau 30
54 | !allocate( rgstif(nvfix,nvfix), stat = alloc_stat(compt_alloc+31)) !Tableau 29
55 | !allocate( gload(ntotv), stat = alloc_stat(compt_alloc+32)) !Tableau 28
56 | !allocate( gload_temp(ntotv), stat = alloc_stat(compt_alloc+33)) !Tableau 29
57 | !allocate( asdis_temp(ntotv), stat = alloc_stat(compt_alloc+34)) !Tableau 28
58 | !allocate( rgload(nvfix), stat = alloc_stat(compt_alloc+35)) !Tableau 29
59 | !allocate( rasdis(nvfix), stat = alloc_stat(compt_alloc+36)) !Tableau 28
60 |
61 |
62 | !allocate( ngrad(melem,4), stat = alloc_stat(compt_alloc+29)) !Tableau 29
63 | !allocate( ngrad(melem,4), stat = alloc_stat(compt_alloc+29)) !Tableau 29
64 | !allocate( ngrad(melem,4), stat = alloc_stat(compt_alloc+29)) !Tableau 29
65 | !allocate( ngrad(melem,4), stat = alloc_stat(compt_alloc+29)) !Tableau 29
66 | !allocate( ngrad(melem,4), stat = alloc_stat(compt_alloc+29)) !Tableau 29
67 | !allocate( ngrad(melem,4), stat = alloc_stat(compt_alloc+29)) !Tableau 29
68 | !allocate( ngrad(melem,4), stat = alloc_stat(compt_alloc+29)) !Tableau 29
69 | !allocate( ngrad(melem,4), stat = alloc_stat(compt_alloc+29)) !Tableau 29
70 | !allocate( ngrad(melem,4), stat = alloc_stat(compt_alloc+29)) !Tableau 29
71 | !allocate( ngrad(melem,4), stat = alloc_stat(compt_alloc+29)) !Tableau 29
72 | !allocate( ngrad(melem,4), stat = alloc_stat(compt_alloc+29)) !Tableau 29
73 | !allocate( ngrad(melem,4), stat = alloc_stat(compt_alloc+29)) !Tableau 29
74 | !allocate( ngrad(melem,4), stat = alloc_stat(compt_alloc+29)) !Tableau 29
75 |
76 |
77 |
78 |
79 |
80 | !allocate( dbmat(nnode,nevab), stat = alloc_stat(compt_alloc+28)) !Tableau 28
81 | !allocate( bmatx(nnode,nevab), stat = alloc_stat(compt_alloc+29)) !Tableau 29
82 | !allocate( dmatx(nnode,nnode), stat = alloc_stat(compt_alloc+30)) !Tableau 30
83 |
84 | !print *, "Nombre de tableaux dynamiques",SIZE(alloc_stat)
85 |
86 |
87 | ! Verification du succes des allocations
88 | !do icompt=1,SIZE(alloc_stat)
89 | ! if (alloc_stat(icompt) /= 0) then
90 | ! print *, "Tableau n°",icompt,"Allocation dynamique: ERROR"
91 | ! stop
92 | ! end if
93 | !end do
94 | !print *, " " !Mise en page de la sortie console
95 |
96 | ! *** FIN Zone des ALLOCATIONS DYNAMIQUES DE MEMOIRE ****
97 |
--------------------------------------------------------------------------------
/workspace/Alloc2.f90:
--------------------------------------------------------------------------------
1 |
2 | allocate( gstif(ntotv,ntotv), stat = alloc_stat(compt_alloc+29)) !Tableau 29
3 | ! allocate( gstif_backup(ntotv,ntotv), stat = alloc_stat(compt_alloc+29)) !Tableau 29
4 | allocate( rgstif(nvlib,nvlib), stat = alloc_stat(compt_alloc+31)) !Tableau 29
5 | allocate( gload(ntotv), stat = alloc_stat(compt_alloc+32)) !Tableau 28
6 | allocate( gload_backup(ntotv), stat = alloc_stat(compt_alloc+32)) !Tableau 28
7 | allocate( rgload(nvlib), stat = alloc_stat(compt_alloc+35)) !Tableau 29
8 | ! allocate( rgload_backup(nvlib), stat = alloc_stat(compt_alloc+35)) !Tableau 29
9 | allocate( rasdis(nvlib), stat = alloc_stat(compt_alloc+36)) !Tableau 28
10 | allocate( vec_residu(nvlib), stat = alloc_stat(compt_alloc+37)) !Tableau 29
11 | allocate( vec_residu_pd(nvlib), stat = alloc_stat(compt_alloc+37)) !Tableau 29
12 | ! allocate( vec_residu_backup(nvlib), stat = alloc_stat(compt_alloc+37)) !Tableau 29
13 |
14 | allocate(rstfor(nvlib), stat = alloc_stat(compt_alloc+37))
15 | allocate( riffix(nvlib), stat = alloc_stat(compt_alloc+35)) !Tableau 29
16 | allocate( rfixed(nvlib), stat = alloc_stat(compt_alloc+35)) !Tableau 29
17 |
18 | !For lapack
19 | allocate( ipiv(nvlib), stat = alloc_stat(compt_alloc+35)) !Tableau 29
20 |
21 | allocate( rgstif_lapack(nvlib,nvlib), stat = alloc_stat(compt_alloc+31)) !Tableau 29
22 | allocate( rasdis_lapack(nvlib), stat = alloc_stat(compt_alloc+36)) !Tableau 28
23 | allocate( vec_residu_lapack(nvlib), stat = alloc_stat(compt_alloc+37)) !Tableau 29
24 |
--------------------------------------------------------------------------------
/workspace/Alloc_CamClay.f90:
--------------------------------------------------------------------------------
1 | allocate( volspegp(ntotg))
2 | allocate( epstnp(ntotg))
3 | ! allocate( depstnp(ntotg))
4 | allocate( epstnp_pre(ntotg))
5 | allocate( yieldgp(ntotg))
6 | allocate( Deigp(ntotg))
7 | allocate( deviatoric_stress(ntotg))
8 | allocate( effective_mean_stress(ntotg))
--------------------------------------------------------------------------------