!--------1---------2---------3---------4---------5---------6---------7---------8 module dehydration !--------1---------2---------3---------4---------5---------6---------7---------8 use global_constants, only : rkind use global_parameters, only : irmax implicit none private public :: dehydration_check, temperature_dehydration real(rkind),parameter :: andehydration_rock_min = 0.3_rkind real(rkind),parameter :: dehydration_rock_max = 1._rkind - andehydration_rock_min real(rkind),parameter :: dehydration_heat = 4.17e5_rkind real(rkind),parameter :: temperature_dehydration = 873.16_rkind contains !--------1---------2---------3---------4---------5---------6---------7---------8 subroutine dehydration_check use global_parameters, only : temp use material_parameters, only : mn, mass_ratio_dehydration_rock, dehyd integer :: i do i = 0, irmax if(temp(i) >= temperature_dehydration .AND. mn(i) == 4) then if(mass_ratio_dehydration_rock(i) == dehydration_rock_max) cycle dehyd(i) = .TRUE. call dehydration_reaction(i) endif enddo end subroutine dehydration_check !--------1---------2---------3---------4---------5---------6---------7---------8 subroutine dehydration_reaction(i) use global_constants, only : time, year, dt, density use global_parameters, only : dr, surface_area, temp use material_parameters, only : mass_ratio_rock, mass_ratio_anhydrous_rock & & , mass_ratio_hydrous_rock, mass_ratio_dehydration_rock use heat_parameters, only : specific_heat, thermal_conductivity use energy, only : dehyd_energy integer,intent(in) :: i real(rkind) :: m, coef_dm, dm_dehyd m = mass_ratio_hydrous_rock(i) coef_dm = specific_heat(4)/dehydration_heat dm_dehyd = (temp(i)-temperature_dehydration)*coef_dm dehyd_energy(i) = dehydration_heat*dm_dehyd*density(4)*surface_area(i)*dr/dt temp(i) = temperature_dehydration m = m - dm_dehyd mass_ratio_dehydration_rock(i) = mass_ratio_dehydration_rock(i) + dm_dehyd if(m <= andehydration_rock_min) then m = andehydration_rock_min mass_ratio_dehydration_rock(i) = dehydration_rock_max endif mass_ratio_rock(i) = m + mass_ratio_dehydration_rock(i) mass_ratio_hydrous_rock(i) = m end subroutine dehydration_reaction end module dehydration