Skip to content

Commit a6a50f1

Browse files
committed
Merge branch 'diffusion-clean' into 'development'
solver structure for chemical Closes #1 See merge request damask/DAMASK!1100
2 parents bb9c45b + 6b55881 commit a6a50f1

14 files changed

+1542
-13
lines changed

PRIVATE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
type: quadEnergy
2+
3+
components:
4+
H:
5+
M: 1
6+
c_eq: 1
7+
G,c: 1
8+
G,c^2: 1
9+
dependent: False
10+
Cl:
11+
M: 1
12+
c_eq: 1
13+
G,c: 1
14+
G,c^2: 1
15+
dependent: False # default
16+
Cu:
17+
M: 1
18+
c_eq: 1
19+
G,c: 1
20+
G,c^2: 1
21+
dependent: True

src/Marc/DAMASK_Marc.f90

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,8 @@ end module DAMASK_interface
248248
#include "../phase_damage.f90"
249249
#include "../phase_damage_isobrittle.f90"
250250
#include "../phase_damage_anisobrittle.f90"
251+
#include "../phase_chemical.f90"
252+
#include "../phase_chemical_quadEnergy.f90"
251253
#include "../homogenization.f90"
252254
#include "../homogenization_mechanical.f90"
253255
#include "../homogenization_mechanical_pass.f90"
@@ -258,6 +260,8 @@ end module DAMASK_interface
258260
#include "../homogenization_thermal_isotemperature.f90"
259261
#include "../homogenization_damage.f90"
260262
#include "../homogenization_damage_pass.f90"
263+
#include "../homogenization_chemical.f90"
264+
#include "../homogenization_chemical_pass.f90"
261265
#include "materialpoint_Marc.f90"
262266

263267
!--------------------------------------------------------------------------------------------------

src/constants.f90

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ module constants
3434
STATUS_FAIL_PHASE_DAMAGE_STATE, &
3535
STATUS_FAIL_PHASE_DAMAGE_DELTASTATE, &
3636
STATUS_FAIL_PHASE_THERMAL, &
37-
STATUS_FAIL_PHASE_THERMAL_DOTSTATE
37+
STATUS_FAIL_PHASE_THERMAL_DOTSTATE, &
38+
STATUS_FAIL_PHASE_CHEMICAL
3839
end enum
3940

4041
end module constants

src/grid/DAMASK_grid.f90

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ program DAMASK_grid
2929
use grid_mech_spectral_polarization
3030
use grid_mechanical_spectral_Galerkin
3131
use grid_mechanical_FEM
32+
use grid_chemical_FDM
3233
use grid_damage_spectral
3334
use grid_thermal_spectral
3435
use result
@@ -57,7 +58,8 @@ program DAMASK_grid
5758
FIELD_UNDEFINED_ID, &
5859
FIELD_MECH_ID, &
5960
FIELD_THERMAL_ID, &
60-
FIELD_DAMAGE_ID
61+
FIELD_DAMAGE_ID, &
62+
FIELD_CHEMICAL_ID
6163
end enum
6264

6365
integer(kind(FIELD_UNDEFINED_ID)), allocatable :: ID(:)
@@ -201,6 +203,7 @@ program DAMASK_grid
201203
! initialize field solver information
202204
if (solver%get_asStr('thermal',defaultVal = 'n/a') == 'spectral') nActiveFields = nActiveFields + 1
203205
if (solver%get_asStr('damage', defaultVal = 'n/a') == 'spectral') nActiveFields = nActiveFields + 1
206+
if (solver%get_asStr('chemical', defaultVal = 'n/a') == 'FDM') nActiveFields = nActiveFields + 1
204207

205208
allocate(solres(nActiveFields))
206209
allocate( ID(nActiveFields))
@@ -217,6 +220,11 @@ program DAMASK_grid
217220
ID(field) = FIELD_DAMAGE_ID
218221
active_parabolic = .true.
219222
end if damageActive
223+
chemicalActive: if (solver%get_asStr('chemical',defaultVal = 'n/a') == 'FDM') then
224+
field = field + 1
225+
ID(field) = FIELD_CHEMICAL_ID
226+
active_parabolic = .true.
227+
end if chemicalActive
220228

221229
!--------------------------------------------------------------------------------------------------
222230
! doing initialization depending on active solvers
@@ -231,6 +239,9 @@ program DAMASK_grid
231239
case (FIELD_DAMAGE_ID)
232240
call grid_damage_spectral_init(num_grid)
233241

242+
case (FIELD_CHEMICAL_ID)
243+
call grid_chemical_FDM_init(num_grid)
244+
234245
end select
235246
end do
236247

@@ -312,7 +323,8 @@ program DAMASK_grid
312323
rotation_BC = loadCases(l)%rot)
313324

314325
case(FIELD_THERMAL_ID); call grid_thermal_spectral_forward(cutBack, Delta_t)
315-
case(FIELD_DAMAGE_ID); call grid_damage_spectral_forward(cutBack)
326+
case(FIELD_DAMAGE_ID); call grid_damage_spectral_forward(cutBack)
327+
case(FIELD_CHEMICAL_ID); call grid_chemical_FDM_forward(cutBack)
316328
end select
317329
end do
318330
if (.not. cutBack) call materialpoint_forward
@@ -332,6 +344,8 @@ program DAMASK_grid
332344
solres(field) = grid_thermal_spectral_solution(Delta_t)
333345
case(FIELD_DAMAGE_ID)
334346
solres(field) = grid_damage_spectral_solution(Delta_t)
347+
case(FIELD_CHEMICAL_ID)
348+
solres(field) = grid_chemical_FDM_solution(Delta_t)
335349
end select
336350

337351
if (.not. solres(field)%converged) exit ! no solution found

0 commit comments

Comments
 (0)