!--------1---------2---------3---------4---------5---------6---------7---------8 function heat_decay(time,i) use global_constants, only : rkind, density, volume_ratio_rock, year, density_rock_hydrous use heat_radiogenic, only : heatAl, iAl, lambdaAl, mass_ratio_Al & & , mass_ratio_Al_hydrous, heatFe, lambdaFe, mass_ratio_Fe, mass_ratio_Fe_hydrous & & , heatK, lambdaK, mass_ratio_K, mass_ratio_K_hydrous use material_parameters, only : mn, mass_ratio_rock, mass_ratio_water & & , mass_ratio_anhydrous_rock, mass_ratio_hydrous_rock, mass_ratio_dehydration_rock implicit none integer,intent(in) :: i real(rkind),intent(in) :: time real(rkind) :: heat_decay, heat_decay_anhydrous, heat_decay_hydrous & & , heat_decayAl, heat_decayFe, heat_decayK , Tdensity heat_decayAl = heatAl(iAl)*exp(-lambdaAl*time) heat_decayFe = heatFe(iAl)*exp(-lambdaFe*time) heat_decayK = heatK(iAl)*exp(-lambdaK*time) heat_decay_anhydrous = heat_decayAl*mass_ratio_Al + heat_decayFe*mass_ratio_Fe & & + heat_decayK*mass_ratio_K heat_decay_hydrous = heat_decayAl*mass_ratio_Al_hydrous & & + heat_decayFe*mass_ratio_Fe_hydrous + heat_decayK*mass_ratio_K_hydrous if(mn(i) == 1 .AND. mn(i) == 2 .AND. mn(i) == 3) then return elseif(mn(i) /= 7 .AND. mn(i) /= 8 .AND. mn(i) /= 11 & & .AND. mn(i) /= 15 .AND. mn(i) /= 16 .AND. mn(i) /= 17) then heat_decay = Tdensity(i) & & *(mass_ratio_anhydrous_rock(i)*heat_decay_anhydrous & & + mass_ratio_hydrous_rock(i)*heat_decay_hydrous) elseif(mn(i) == 7) then heat_decay = density(6) & & *(mass_ratio_anhydrous_rock(i)*heat_decay_anhydrous & & + mass_ratio_hydrous_rock(i)*heat_decay_hydrous) elseif(mn(i) >= 15) then heat_decay = Tdensity(i) & & *(mass_ratio_anhydrous_rock(i)*heat_decay_anhydrous & & + mass_ratio_hydrous_rock(i)*heat_decay_hydrous & & + mass_ratio_dehydration_rock(i)*heat_decay_hydrous) elseif(mn(i) == 8) then heat_decay = density(4)*volume_ratio_rock(8)*heat_decay_anhydrous elseif(mn(i) == 11) then heat_decay = density(4)*volume_ratio_rock(11)*heat_decay_anhydrous else call log_error(i,'heat_decay mn8 check') return endif return end function heat_decay