@@ -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