Changeset 3424 for trunk/LMDZ.COMMON/libf/evolution
- Timestamp:
- Sep 2, 2024, 5:32:52 PM (3 months ago)
- Location:
- trunk/LMDZ.COMMON/libf/evolution
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.COMMON/libf/evolution/changelog.txt
r3419 r3424 413 413 == 26/08/2024 == JBC 414 414 Correction for the launching script due to r3403: the job scheduler detection was missing in the case of a new cycle. 415 416 == 02/09/2024 == JBC 417 Modification to the layering algorithm to make dust lag prevent further sublimation. -
trunk/LMDZ.COMMON/libf/evolution/layering_mod.F90
r3331 r3424 27 27 real, parameter :: rho_dust = 2500. ! Density of dust [kg.m-3] 28 28 real, parameter :: rho_rock = 3200. ! Density of rock [kg.m-3] 29 30 ! Lag layer parameters -> see Levrard et al. 2007 31 real, parameter :: hmin_lag = 0.5 ! Minimal height of the lag deposit to reduce the sblimation rate 32 real, parameter :: fred_subl = 0.1 ! Reduction factor of sublimation rate 29 33 30 34 ! Stratum = node of the linked list … … 465 469 466 470 !---- Local variables 467 real :: htend_co2ice, htend_h2oice, htend_dust 468 real :: h_co2ice_old, h_h2oice_old, h_dust_old 469 real :: thickness, h2subl, h2subl_tot, h2lift, h2lift_tot 471 real :: htend_co2ice, htend_h2oice, htend_dust 472 real :: h_co2ice_old, h_h2oice_old, h_dust_old 473 real :: thickness, h2subl, h2subl_tot, h2lift, h2lift_tot 474 real :: h_toplag 475 type(stratum), pointer :: currentloc 470 476 471 477 !---- Code … … 545 551 h_h2oice_old = current1%h2oice_volfrac*current1%thickness 546 552 h_dust_old = current1%dust_volfrac*current1%thickness 553 554 ! How much is CO2 ice sublimation inhibited by the top dust lag? 555 currentloc => current1%up 556 h_toplag = 0. 557 do while (associated(currentloc) .and. abs(1. - (currentloc%dust_volfrac + currentloc%air_volfrac)) < tol) 558 h_toplag = h_toplag + currentloc%thickness 559 currentloc => currentloc%up 560 enddo 561 h2subl_tot = h2subl_tot*fred_subl**(h_toplag/hmin_lag) 562 547 563 ! How much CO2 ice can sublimate in the considered stratum? 548 564 if (h2subl_tot - h_co2ice_old <= eps) then ! There is enough to sublimate … … 550 566 h2subl_tot = 0. 551 567 call subl_co2ice_layering(this,current1,h2subl,h_co2ice_old,h_h2oice_old,h_dust_old,new_lag1) 552 else if (h_co2ice_old < eps) then ! There is nothing to sublimate so we stop here 553 !current1 => current1%down ! Move to the underlying stratum 554 !new_lag1 = .true. 555 exit 568 else if (h_co2ice_old < eps) then ! There is nothing to sublimate 569 ! Is the considered stratum a dust lag? 570 if (abs(1. - (current1%dust_volfrac + current1%air_volfrac)) < tol) then ! Yes, we move to the underlying stratum 571 current1 => current1%down 572 new_lag1 = .true. 573 else ! No, so we stop here 574 exit 575 endif 556 576 else ! Only a fraction can sublimate and so we move to the underlying stratum 557 577 h2subl = h_co2ice_old … … 587 607 h_h2oice_old = current1%h2oice_volfrac*current1%thickness 588 608 h_dust_old = current1%dust_volfrac*current1%thickness 609 610 ! How much is CO2 ice sublimation inhibited by the top dust lag? 611 currentloc => current1%up 612 h_toplag = 0. 613 do while (associated(currentloc) .and. abs(1. - (currentloc%dust_volfrac + currentloc%air_volfrac)) < tol) 614 h_toplag = h_toplag + currentloc%thickness 615 currentloc => currentloc%up 616 enddo 617 h2subl_tot = h2subl_tot*fred_subl**(h_toplag/hmin_lag) 618 589 619 ! How much CO2 ice can sublimate in the considered stratum? 590 620 if (h2subl_tot - h_co2ice_old <= eps) then ! There is enough to sublimate … … 592 622 h2subl_tot = 0. 593 623 call subl_co2ice_layering(this,current1,h2subl,h_co2ice_old,h_h2oice_old,h_dust_old,new_lag1) 594 else if (h_co2ice_old < eps) then ! There is nothing to sublimate so we stop here 595 !current1 => current1%down ! Move to the underlying stratum 596 !new_lag1 = .true. 597 exit 624 else if (h_co2ice_old < eps) then ! There is nothing to sublimate 625 ! Is the considered stratum a dust lag? 626 if (abs(1. - (current1%dust_volfrac + current1%air_volfrac)) < tol) then ! Yes, we move to the underlying stratum 627 current1 => current1%down 628 new_lag1 = .true. 629 else ! No, so we stop here 630 exit 631 endif 598 632 else ! Only a fraction can sublimate and so we move to the underlying stratum 599 633 h2subl = h_co2ice_old … … 614 648 h_h2oice_old = current2%h2oice_volfrac*current2%thickness 615 649 h_dust_old = current2%dust_volfrac*current2%thickness 650 651 ! How much is CO2 ice sublimation inhibited by the top dust lag? 652 currentloc => current2%up 653 h_toplag = 0. 654 do while (associated(currentloc) .and. abs(1. - (currentloc%dust_volfrac + currentloc%air_volfrac)) < tol) 655 h_toplag = h_toplag + currentloc%thickness 656 currentloc => currentloc%up 657 enddo 658 h2subl_tot = h2subl_tot*fred_subl**(h_toplag/hmin_lag) 659 616 660 ! How much H2O ice can sublimate in the considered stratum? 617 661 if (h2subl_tot - h_h2oice_old <= eps) then ! There is enough to sublimate … … 619 663 h2subl_tot = 0. 620 664 call subl_h2oice_layering(this,current2,h2subl,h_co2ice_old,h_h2oice_old,h_dust_old,new_lag2) 621 else if (h_h2oice_old < eps) then ! There is nothing to sublimate so we stop here 622 !current2 => current1%down ! Move to the underlying stratum 623 !new_lag2 = .true. 624 exit 665 else if (h_h2oice_old < eps) then ! There is nothing to sublimate 666 ! Is the considered stratum a dust lag? 667 if (abs(1. - (current1%dust_volfrac + current1%air_volfrac)) < tol) then ! Yes, we move to the underlying stratum 668 current1 => current1%down 669 new_lag1 = .true. 670 else ! No, so we stop here 671 exit 672 endif 625 673 else ! Only a fraction can sublimate and so we move to the underlying stratum 626 674 h2subl = h_h2oice_old
Note: See TracChangeset
for help on using the changeset viewer.