!--------1---------2---------3---------4---------5---------6---------7---------8 subroutine frez_check(i) !--------1---------2---------3---------4---------5---------6---------7---------8 use global_constants, only : rkind, time, year, dt, density & & , mass_ratio_rock_H2O_init, imr use global_parameters, only : temp, dr, surface_area, surface_arear use heat_parameters, only : specific_heat, latent_heat_init use ice_parameters, only : temperature_melting_I use material_parameters, only : mn, iw, ii, radius_water & & , material_select, mass_ratio_ice, mass_ratio_water, mass_ratio_rock, ir, frez_start use energy, only : lat_energy implicit none integer,intent(in) :: i real(rkind) :: dm, coef_dm, m, latent_heat, coef_latent, mmax, Tspecific_heat, Tdensity m = mass_ratio_ice(i) latent_heat = latent_heat_init coef_dm = Tspecific_heat(i)/(latent_heat) dm = (temperature_melting_I-temp(i))*coef_dm coef_latent = latent_heat*surface_area(i)*Tdensity(i)*dr/dt lat_energy(i) = lat_energy(i) - dm*coef_latent temp(i) = temperature_melting_I m = m + dm mass_ratio_water(i) = mass_ratio_water(i) - dm mmax = 1._rkind - mass_ratio_rock(i) mn(i) = 7 if(m >= mmax) then m = mmax mass_ratio_water(i) = 0._rkind mn(i) = 6 if(frez_start) ir = ir - 1 endif mass_ratio_ice(i) = m return end subroutine frez_check !--------1---------2---------3---------4---------5---------6---------7---------8 subroutine frez_check2(i) !--------1---------2---------3---------4---------5---------6---------7---------8 use global_constants, only : rkind, time, year, dt, density & & , mass_ratio_rock_new, imr use global_parameters, only : temp, dr, surface_area, surface_arear use heat_parameters, only : specific_heat, latent_heat_init use ice_parameters, only : temperature_melting_I use material_parameters, only : mn, iw, ii, radius_water & & , material_select, mass_ratio_ice, mass_ratio_water, mass_ratio_rock, ir use energy, only : lat_energy implicit none integer,intent(in) :: i real(rkind) :: dm, coef_dm, m, latent_heat, coef_latent, mmax, Tdensity m = mass_ratio_ice(i) latent_heat = latent_heat_init coef_dm = specific_heat(mn(i))/(latent_heat) dm = (temperature_melting_I-temp(i))*coef_dm coef_latent = latent_heat*surface_area(i)*Tdensity(i)*dr/dt lat_energy(i) = lat_energy(i) - dm*coef_latent temp(i) = temperature_melting_I m = m + dm mass_ratio_water(i) = mass_ratio_water(i) - dm mmax = 1._rkind - mass_ratio_rock(i) mn(i) = 7 if(m >= mmax) then m = mmax mass_ratio_water(i) = 0._rkind mn(i) = 6 ir = ir - 1 endif mass_ratio_ice(i) = m return end subroutine frez_check2