Changeset 3991 for trunk/LMDZ.COMMON/libf/evolution/subsurface_ice.F90
- Timestamp:
- Dec 16, 2025, 4:39:24 PM (5 weeks ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.COMMON/libf/evolution/subsurface_ice.F90
r3989 r3991 1 1 MODULE subsurface_ice 2 3 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 4 !!! 5 !!! Purpose: Retreat and growth of subsurface ice on Mars 6 !!! orbital elements remain constant 7 !!! 8 !!! 9 !!! Author: EV, updated NS MSIM dynamical program for the PEM 10 !!! Taken from Norbert Schorgofer's code 11 !!! 12 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 13 14 implicit none 15 16 ! parameters for thermal model 17 ! they are only used in the subroutines below 18 real(8), parameter :: dt = 0.02 ! in units of Mars solar days 19 !real(8), parameter :: Fgeotherm = 0. 20 real(8), parameter :: Fgeotherm = 0 !0.028 ! [W/m^2] 21 real(8), parameter :: Lco2frost=6.0e5, co2albedo=0.60, co2emiss=1. 22 real(8), parameter :: emiss0 = 1. ! emissivity of dry surface 23 integer, parameter :: EQUILTIME =15 ! [Mars years] 24 25 integer, parameter :: NMAX = 1000 2 !----------------------------------------------------------------------- 3 ! NAME 4 ! subsurface_ice 5 ! 6 ! DESCRIPTION 7 ! Retreat and growth of subsurface ice on Mars with constant orbital 8 ! elements. 9 ! 10 ! AUTHORS & DATE 11 ! N. Schorghofer (MSIM dynamical program) 12 ! E. Vos, 2025 13 ! JB Clement, 2025 14 ! 15 ! NOTES 16 ! Based on Norbert Schorgofer's code. Updated for PEM. 17 !----------------------------------------------------------------------- 18 19 ! DECLARATION 20 ! ----------- 21 implicit none 22 23 ! MODULE PARAMETERS 24 ! ----------------- 25 real(8), parameter :: dt = 0.02 ! in units of Mars solar days 26 !real(8), parameter :: Fgeotherm = 0. 27 real(8), parameter :: Fgeotherm = 0 !0.028 ! [W/m^2] 28 real(8), parameter :: Lco2frost=6.0e5, co2albedo=0.60, co2emiss=1. 29 real(8), parameter :: emiss0 = 1. ! emissivity of dry surface 30 integer, parameter :: EQUILTIME =15 ! [Mars years] 31 32 integer, parameter :: NMAX = 1000 26 33 27 34 contains 35 !++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 28 36 29 37 … … 41 49 use constants_marspem_mod, only: sec_per_sol 42 50 use phys_constants, only: pi 43 implicit none 51 ! DECLARATION 52 ! ----------- 53 implicit none 44 54 integer, parameter :: NP=1 ! # of sites 45 55 integer nz, i, k, iloop … … 212 222 ! output are newti and newrhoc 213 223 !*********************************************************************** 214 implicit none 224 ! DECLARATION 225 ! ----------- 226 implicit none 215 227 integer, intent(IN) :: layertype 216 228 real(8), intent(IN) :: porosity, fill, rhocobs, tiobs … … 282 294 ! input is partial pressure [Pascal] 283 295 ! output is temperature [Kelvin] 284 implicit none 296 ! DECLARATION 297 ! ----------- 298 implicit none 285 299 real*8 p 286 300 … … 326 340 use ice_table, only: rho_ice 327 341 !use omp_lib 328 implicit none 342 ! DECLARATION 343 ! ----------- 344 implicit none 329 345 integer, intent(IN) :: nz, NP 330 346 real(8), intent(IN) :: bigstep … … 442 458 !*********************************************************************** 443 459 use constants_marspem_mod, only: sols_per_my, sec_per_sol 444 implicit none 460 ! DECLARATION 461 ! ----------- 462 implicit none 445 463 integer, intent(IN) :: nz, typeT 446 464 ! real(8), intent(IN) :: latitude ! in radians … … 595 613 ! the inverse of function psvco2 596 614 ! input is pressure in Pascal, output is temperature in Kelvin 615 ! DECLARATION 616 ! ----------- 597 617 implicit none 598 618 real*8 p … … 605 625 ! saturation vapor pressure of H2O ice [Pascal] 606 626 ! input is temperature [Kelvin] 607 implicit none 627 ! DECLARATION 628 ! ----------- 629 implicit none 608 630 real*8 T 609 631 … … 642 664 pure function zint(y1,y2,z1,z2) 643 665 ! interpolate between two values, y1*y2<0 644 implicit none 666 ! DECLARATION 667 ! ----------- 668 implicit none 645 669 real(8), intent(IN) :: y1,y2,z1,z2 646 670 real(8) zint … … 655 679 ! this is not the true (final) equilibrium depth 656 680 !*********************************************************************** 657 implicit none 681 ! DECLARATION 682 ! ----------- 683 implicit none 658 684 integer, intent(IN) :: nz 659 685 real(8), intent(IN) :: z(nz), rhosatav(nz) … … 691 717 use math_toolkit, only: deriv2_simple, deriv1_onesided, deriv1, colint 692 718 use ice_table, only: constriction 693 implicit none 719 ! DECLARATION 720 ! ----------- 721 implicit none 694 722 integer, intent(IN) :: nz, typeT 695 723 real(8), intent(IN), dimension(nz) :: z, rhosatav, porefill … … 822 850 use math_toolkit, only: colint 823 851 use ice_table, only: rho_ice 824 implicit none 852 ! DECLARATION 853 ! ----------- 854 implicit none 825 855 integer, intent(IN) :: nz, typeF, typeG 826 856 real(8), intent(IN) :: z(nz), ypp(nz), avdrho, avdrhoP
Note: See TracChangeset
for help on using the changeset viewer.
