Changeset 5868 for LMDZ6/branches/PBLSURF_GPUPORT/libf/phylmd/cpl_mod.F90
- Timestamp:
- Nov 17, 2025, 3:50:06 PM (8 weeks ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/PBLSURF_GPUPORT/libf/phylmd/cpl_mod.F90
r5654 r5868 548 548 !************************************************************************************* 549 549 INTEGER, INTENT(IN) :: knon 550 INTEGER, DIMENSION(k lon), INTENT(IN) :: knindex550 INTEGER, DIMENSION(knon), INTENT(IN) :: knindex 551 551 552 552 ! Output arguments 553 553 !************************************************************************************* 554 REAL, DIMENSION(k lon), INTENT(OUT) :: tsurf_new555 556 REAL, INTENT(OUT):: sss( :) ! (klon)554 REAL, DIMENSION(knon), INTENT(OUT) :: tsurf_new 555 556 REAL, INTENT(OUT):: sss(knon) ! (klon) 557 557 ! bulk salinity of the surface layer of the ocean, in ppt 558 558 559 REAL, DIMENSION(k lon), INTENT(OUT) :: u0_new560 REAL, DIMENSION(k lon), INTENT(OUT) :: v0_new559 REAL, DIMENSION(knon), INTENT(OUT) :: u0_new 560 REAL, DIMENSION(knon), INTENT(OUT) :: v0_new 561 561 562 562 ! Local variables 563 563 !************************************************************************************* 564 564 INTEGER :: i 565 INTEGER, DIMENSION(klon) :: index566 REAL, DIMENSION(k lon) :: sic_new565 REAL, DIMENSION(knon) :: sic_new 566 REAL, DIMENSION(knon) :: co2 567 567 568 568 !************************************************************************************* … … 582 582 !************************************************************************************* 583 583 IF (carbon_cycle_cpl) THEN 584 DO i=1,klon585 index(i)=i586 ENDDO587 CALL cpl2gath(read_co2, fco2_ocn_day, klon, index)584 CALL cpl2gath(read_co2, co2, knon, knindex) 585 DO i=1,knon 586 fco2_ocn_day(knindex(i)) = co2(i) 587 ENDDO 588 588 ENDIF 589 589 … … 615 615 !************************************************************************************* 616 616 INTEGER, INTENT(IN) :: knon 617 INTEGER, DIMENSION(k lon), INTENT(IN) :: knindex617 INTEGER, DIMENSION(knon), INTENT(IN) :: knindex 618 618 619 619 ! Output arguments 620 620 !************************************************************************************* 621 REAL, DIMENSION(k lon), INTENT(OUT) :: tsurf_new622 REAL, DIMENSION(k lon), INTENT(OUT) :: alb_new623 REAL, DIMENSION(k lon), INTENT(OUT) :: u0_new624 REAL, DIMENSION(k lon), INTENT(OUT) :: v0_new621 REAL, DIMENSION(knon), INTENT(OUT) :: tsurf_new 622 REAL, DIMENSION(knon), INTENT(OUT) :: alb_new 623 REAL, DIMENSION(knon), INTENT(OUT) :: u0_new 624 REAL, DIMENSION(knon), INTENT(OUT) :: v0_new 625 625 626 626 ! Local variables 627 627 !************************************************************************************* 628 628 INTEGER :: i 629 REAL, DIMENSION(k lon) :: sic_new629 REAL, DIMENSION(knon) :: sic_new 630 630 631 631 !************************************************************************************* … … 677 677 INTEGER, INTENT(IN) :: itime 678 678 INTEGER, INTENT(IN) :: knon 679 INTEGER, DIMENSION(k lon), INTENT(IN) :: knindex680 REAL, DIMENSION(k lon), INTENT(IN) :: swdown, lwdown681 REAL, DIMENSION(k lon), INTENT(IN) :: fluxlat, fluxsens682 REAL, DIMENSION(k lon), INTENT(IN) :: precip_rain, precip_snow683 REAL, DIMENSION(k lon), INTENT(IN) :: evap, tsurf, fder, albsol684 REAL, DIMENSION(k lon), INTENT(IN) :: taux, tauy, windsp685 REAL, INTENT(IN):: sens_prec_liq( :), sens_prec_sol(:) ! (knon)686 REAL, DIMENSION(k lon), INTENT(IN) :: lat_prec_liq, lat_prec_sol687 688 REAL, intent(in):: delta_sst( :) ! (knon)679 INTEGER, DIMENSION(knon), INTENT(IN) :: knindex 680 REAL, DIMENSION(knon), INTENT(IN) :: swdown, lwdown 681 REAL, DIMENSION(knon), INTENT(IN) :: fluxlat, fluxsens 682 REAL, DIMENSION(knon), INTENT(IN) :: precip_rain, precip_snow 683 REAL, DIMENSION(knon), INTENT(IN) :: evap, tsurf, fder, albsol 684 REAL, DIMENSION(knon), INTENT(IN) :: taux, tauy, windsp 685 REAL, INTENT(IN):: sens_prec_liq(knon), sens_prec_sol(knon) ! (knon) 686 REAL, DIMENSION(knon), INTENT(IN) :: lat_prec_liq, lat_prec_sol 687 688 REAL, intent(in):: delta_sst(knon) ! (knon) 689 689 ! Ocean-air interface temperature minus bulk SST, in 690 690 ! K. Defined only if activate_ocean_skin >= 1. 691 691 692 real, intent(in):: delta_sal( :) ! (knon)692 real, intent(in):: delta_sal(knon) ! (knon) 693 693 ! Ocean-air interface salinity minus bulk salinity, in ppt. 694 694 695 REAL, intent(in):: dter( :) ! (knon)695 REAL, intent(in):: dter(knon) ! (knon) 696 696 ! Temperature variation in the diffusive microlayer, that is 697 697 ! ocean-air interface temperature minus subskin temperature. In 698 698 ! K. 699 699 700 REAL, intent(in):: dser( :) ! (knon)700 REAL, intent(in):: dser(knon) ! (knon) 701 701 ! Salinity variation in the diffusive microlayer, that is 702 702 ! ocean-air interface salinity minus subskin salinity. In ppt. 703 703 704 real, intent(in):: dt_ds( :) ! (knon)704 real, intent(in):: dt_ds(knon) ! (knon) 705 705 ! (tks / tkt) * dTer, in K 706 706 … … 857 857 858 858 859 CALL gath2cpl(cpl_sols( :,cpl_index), cpl_sols2D(:,:,cpl_index), &860 knon, knindex) 861 862 CALL gath2cpl(cpl_nsol( :,cpl_index), cpl_nsol2D(:,:,cpl_index), &863 knon, knindex) 864 865 CALL gath2cpl(cpl_rain( :,cpl_index), cpl_rain2D(:,:,cpl_index), &866 knon, knindex) 867 868 CALL gath2cpl(cpl_snow( :,cpl_index), cpl_snow2D(:,:,cpl_index), &869 knon, knindex) 870 871 CALL gath2cpl(cpl_evap( :,cpl_index), cpl_evap2D(:,:,cpl_index), &859 CALL gath2cpl(cpl_sols(1:knon,cpl_index), cpl_sols2D(:,:,cpl_index), & 860 knon, knindex) 861 862 CALL gath2cpl(cpl_nsol(1:knon,cpl_index), cpl_nsol2D(:,:,cpl_index), & 863 knon, knindex) 864 865 CALL gath2cpl(cpl_rain(1:knon,cpl_index), cpl_rain2D(:,:,cpl_index), & 866 knon, knindex) 867 868 CALL gath2cpl(cpl_snow(1:knon,cpl_index), cpl_snow2D(:,:,cpl_index), & 869 knon, knindex) 870 871 CALL gath2cpl(cpl_evap(1:knon,cpl_index), cpl_evap2D(:,:,cpl_index), & 872 872 knon, knindex) 873 873 874 874 ! cpl_tsol2D(:,:,:) not used! 875 CALL gath2cpl(cpl_tsol( :,cpl_index), cpl_tsol2D(:,:, cpl_index), &875 CALL gath2cpl(cpl_tsol(1:knon,cpl_index), cpl_tsol2D(:,:, cpl_index), & 876 876 knon, knindex) 877 877 878 878 ! cpl_fder2D(:,:,1) not used, only cpl_fder(:,:,2)! 879 CALL gath2cpl(cpl_fder( :,cpl_index), cpl_fder2D(:,:,cpl_index), &879 CALL gath2cpl(cpl_fder(1:knon,cpl_index), cpl_fder2D(:,:,cpl_index), & 880 880 knon, knindex) 881 881 882 882 ! cpl_albe2D(:,:,:) not used! 883 CALL gath2cpl(cpl_albe( :,cpl_index), cpl_albe2D(:,:,cpl_index), &884 knon, knindex) 885 886 CALL gath2cpl(cpl_taux( :,cpl_index), cpl_taux2D(:,:,cpl_index), &887 knon, knindex) 888 889 CALL gath2cpl(cpl_tauy( :,cpl_index), cpl_tauy2D(:,:,cpl_index), &890 knon, knindex) 891 892 CALL gath2cpl(cpl_windsp( :,cpl_index), cpl_windsp2D(:,:), &893 knon, knindex) 894 895 CALL gath2cpl(cpl_sens_rain( :,cpl_index), cpl_sens_rain2D(:,:,cpl_index), &896 knon, knindex) 897 898 CALL gath2cpl(cpl_sens_snow( :,cpl_index), cpl_sens_snow2D(:,:,cpl_index), &899 knon, knindex) 900 901 CALL gath2cpl(cpl_taumod( :,cpl_index), cpl_taumod2D(:,:,cpl_index), &883 CALL gath2cpl(cpl_albe(1:knon,cpl_index), cpl_albe2D(:,:,cpl_index), & 884 knon, knindex) 885 886 CALL gath2cpl(cpl_taux(1:knon,cpl_index), cpl_taux2D(:,:,cpl_index), & 887 knon, knindex) 888 889 CALL gath2cpl(cpl_tauy(1:knon,cpl_index), cpl_tauy2D(:,:,cpl_index), & 890 knon, knindex) 891 892 CALL gath2cpl(cpl_windsp(1:knon,cpl_index), cpl_windsp2D(:,:), & 893 knon, knindex) 894 895 CALL gath2cpl(cpl_sens_rain(1:knon,cpl_index), cpl_sens_rain2D(:,:,cpl_index), & 896 knon, knindex) 897 898 CALL gath2cpl(cpl_sens_snow(1:knon,cpl_index), cpl_sens_snow2D(:,:,cpl_index), & 899 knon, knindex) 900 901 CALL gath2cpl(cpl_taumod(1:knon,cpl_index), cpl_taumod2D(:,:,cpl_index), & 902 902 knon, knindex) 903 903 904 904 IF (carbon_cycle_cpl) & 905 CALL gath2cpl(cpl_atm_co2( :,cpl_index), cpl_atm_co22D(:,:), knon, knindex)905 CALL gath2cpl(cpl_atm_co2(1:knon,cpl_index), cpl_atm_co22D(:,:), knon, knindex) 906 906 if (activate_ocean_skin == 2) then 907 CALL gath2cpl(cpl_delta_sst , cpl_delta_sst_2D, knon, knindex)908 CALL gath2cpl(cpl_delta_sal , cpl_delta_sal_2D, knon, knindex)909 CALL gath2cpl(cpl_dter , cpl_dter_2D, knon, knindex)910 CALL gath2cpl(cpl_dser , cpl_dser_2D, knon, knindex)911 CALL gath2cpl(cpl_dt_ds , cpl_dt_ds_2D, knon, knindex)907 CALL gath2cpl(cpl_delta_sst(1:knon), cpl_delta_sst_2D, knon, knindex) 908 CALL gath2cpl(cpl_delta_sal(1:knon), cpl_delta_sal_2D, knon, knindex) 909 CALL gath2cpl(cpl_dter(1:knon), cpl_dter_2D, knon, knindex) 910 CALL gath2cpl(cpl_dser(1:knon), cpl_dser_2D, knon, knindex) 911 CALL gath2cpl(cpl_dt_ds(1:knon), cpl_dt_ds_2D, knon, knindex) 912 912 end if 913 913 ENDIF … … 938 938 INTEGER, INTENT(IN) :: itime 939 939 INTEGER, INTENT(IN) :: knon 940 INTEGER, DIMENSION(k lon), INTENT(IN) :: knindex940 INTEGER, DIMENSION(knon), INTENT(IN) :: knindex 941 941 REAL, INTENT(IN) :: dtime 942 942 REAL, DIMENSION(klon), INTENT(IN) :: rlon, rlat 943 REAL, DIMENSION(k lon), INTENT(IN) :: swdown, lwdown944 REAL, DIMENSION(k lon), INTENT(IN) :: fluxlat, fluxsens945 REAL, DIMENSION(k lon), INTENT(IN) :: precip_rain, precip_snow946 REAL, DIMENSION(k lon), INTENT(IN) :: evap, tsurf, fder947 REAL, DIMENSION(k lon), INTENT(IN) :: albsol, taux, tauy943 REAL, DIMENSION(knon), INTENT(IN) :: swdown, lwdown 944 REAL, DIMENSION(knon), INTENT(IN) :: fluxlat, fluxsens 945 REAL, DIMENSION(knon), INTENT(IN) :: precip_rain, precip_snow 946 REAL, DIMENSION(knon), INTENT(IN) :: evap, tsurf, fder 947 REAL, DIMENSION(knon), INTENT(IN) :: albsol, taux, tauy 948 948 REAL, DIMENSION(klon,nbsrf), INTENT(IN) :: pctsrf 949 REAL, INTENT(IN):: sens_prec_liq( :), sens_prec_sol(:) ! (knon)950 REAL, DIMENSION(k lon), INTENT(IN) :: lat_prec_liq, lat_prec_sol949 REAL, INTENT(IN):: sens_prec_liq(knon), sens_prec_sol(knon) ! (knon) 950 REAL, DIMENSION(knon), INTENT(IN) :: lat_prec_liq, lat_prec_sol 951 951 LOGICAL, INTENT(IN) :: lafin 952 952 … … 957 957 CHARACTER(len = 25) :: modname = 'cpl_send_seaice_fields' 958 958 CHARACTER(len = 80) :: abort_message 959 REAL, DIMENSION(klon) :: cpl_fder_tmp 959 REAL, DIMENSION(klon) :: cpl_fder_tmp !ym warning, uncompressed 960 960 961 961 !************************************************************************************* … … 1067 1067 ENDIF 1068 1068 1069 CALL gath2cpl(cpl_sols( :,cpl_index), cpl_sols2D(:,:,cpl_index), &1070 knon, knindex) 1071 1072 CALL gath2cpl(cpl_nsol( :,cpl_index), cpl_nsol2D(:,:,cpl_index), &1073 knon, knindex) 1074 1075 CALL gath2cpl(cpl_rain( :,cpl_index), cpl_rain2D(:,:,cpl_index), &1076 knon, knindex) 1077 1078 CALL gath2cpl(cpl_snow( :,cpl_index), cpl_snow2D(:,:,cpl_index), &1079 knon, knindex) 1080 1081 CALL gath2cpl(cpl_evap( :,cpl_index), cpl_evap2D(:,:,cpl_index), &1069 CALL gath2cpl(cpl_sols(1:knon,cpl_index), cpl_sols2D(:,:,cpl_index), & 1070 knon, knindex) 1071 1072 CALL gath2cpl(cpl_nsol(1:knon,cpl_index), cpl_nsol2D(:,:,cpl_index), & 1073 knon, knindex) 1074 1075 CALL gath2cpl(cpl_rain(1:knon,cpl_index), cpl_rain2D(:,:,cpl_index), & 1076 knon, knindex) 1077 1078 CALL gath2cpl(cpl_snow(1:knon,cpl_index), cpl_snow2D(:,:,cpl_index), & 1079 knon, knindex) 1080 1081 CALL gath2cpl(cpl_evap(1:knon,cpl_index), cpl_evap2D(:,:,cpl_index), & 1082 1082 knon, knindex) 1083 1083 1084 1084 ! cpl_tsol2D(:,:,:) not used! 1085 CALL gath2cpl(cpl_tsol( :,cpl_index), cpl_tsol2D(:,:, cpl_index), &1085 CALL gath2cpl(cpl_tsol(1:knon,cpl_index), cpl_tsol2D(:,:, cpl_index), & 1086 1086 knon, knindex) 1087 1087 1088 1088 ! Set default value and decompress before gath2cpl 1089 cpl_fder_tmp( :) = -20.1089 cpl_fder_tmp(1:klon) = -20. 1090 1090 DO ig = 1, knon 1091 1091 cpl_fder_tmp(knindex(ig))=cpl_fder(ig,cpl_index) 1092 1092 ENDDO 1093 CALL gath2cpl(cpl_fder_tmp( :), cpl_fder2D(:,:,cpl_index), &1093 CALL gath2cpl(cpl_fder_tmp(1:klon), cpl_fder2D(:,:,cpl_index), & 1094 1094 klon, unity) 1095 1095 1096 1096 ! cpl_albe2D(:,:,:) not used! 1097 CALL gath2cpl(cpl_albe( :,cpl_index), cpl_albe2D(:,:,cpl_index), &1098 knon, knindex) 1099 1100 CALL gath2cpl(cpl_taux( :,cpl_index), cpl_taux2D(:,:,cpl_index), &1101 knon, knindex) 1102 1103 CALL gath2cpl(cpl_tauy( :,cpl_index), cpl_tauy2D(:,:,cpl_index), &1104 knon, knindex) 1105 1106 CALL gath2cpl(cpl_sens_rain( :,cpl_index), cpl_sens_rain2D(:,:,cpl_index), &1107 knon, knindex) 1108 1109 CALL gath2cpl(cpl_sens_snow( :,cpl_index), cpl_sens_snow2D(:,:,cpl_index), &1110 knon, knindex) 1111 1112 CALL gath2cpl(cpl_taumod( :,cpl_index), cpl_taumod2D(:,:,cpl_index), &1097 CALL gath2cpl(cpl_albe(1:knon,cpl_index), cpl_albe2D(:,:,cpl_index), & 1098 knon, knindex) 1099 1100 CALL gath2cpl(cpl_taux(1:knon,cpl_index), cpl_taux2D(:,:,cpl_index), & 1101 knon, knindex) 1102 1103 CALL gath2cpl(cpl_tauy(1:knon,cpl_index), cpl_tauy2D(:,:,cpl_index), & 1104 knon, knindex) 1105 1106 CALL gath2cpl(cpl_sens_rain(1:knon,cpl_index), cpl_sens_rain2D(:,:,cpl_index), & 1107 knon, knindex) 1108 1109 CALL gath2cpl(cpl_sens_snow(1:knon,cpl_index), cpl_sens_snow2D(:,:,cpl_index), & 1110 knon, knindex) 1111 1112 CALL gath2cpl(cpl_taumod(1:knon,cpl_index), cpl_taumod2D(:,:,cpl_index), & 1113 1113 knon, knindex) 1114 1114 … … 1136 1136 INTEGER, INTENT(IN) :: itime 1137 1137 INTEGER, INTENT(IN) :: knon 1138 INTEGER, DIMENSION(k lon), INTENT(IN) :: knindex1139 REAL, DIMENSION(k lon), INTENT(IN) :: rriv_in1140 REAL, DIMENSION(k lon), INTENT(IN) :: rcoa_in1138 INTEGER, DIMENSION(knon), INTENT(IN) :: knindex 1139 REAL, DIMENSION(knon), INTENT(IN) :: rriv_in 1140 REAL, DIMENSION(knon), INTENT(IN) :: rcoa_in 1141 1141 1142 1142 ! Local variables … … 1195 1195 INTEGER, INTENT(IN) :: itime 1196 1196 INTEGER, INTENT(IN) :: knon 1197 INTEGER, DIMENSION(k lon), INTENT(IN) :: knindex1198 REAL, DIMENSION(k lon), INTENT(IN) :: rlic_in1199 REAL, DIMENSION(k lon), INTENT(IN) :: rlic_in_frac ! Fraction for continental ice, can be equal to1197 INTEGER, DIMENSION(knon), INTENT(IN) :: knindex 1198 REAL, DIMENSION(knon), INTENT(IN) :: rlic_in 1199 REAL, DIMENSION(knon), INTENT(IN) :: rlic_in_frac ! Fraction for continental ice, can be equal to 1200 1200 ! pctsrf(:,is_lic) or not, depending on landice_opt 1201 1201 … … 1577 1577 INTEGER, INTENT(IN) :: knon 1578 1578 REAL, DIMENSION(nbp_lon,jj_nb), INTENT(IN) :: champ_in 1579 INTEGER, DIMENSION(k lon), INTENT(IN) :: knindex1579 INTEGER, DIMENSION(knon), INTENT(IN) :: knindex 1580 1580 1581 1581 ! Output … … 1626 1626 !************************************************************************************* 1627 1627 INTEGER, INTENT(IN) :: knon 1628 REAL, DIMENSION(k lon), INTENT(IN) :: champ_in1629 INTEGER, DIMENSION(k lon), INTENT(IN) :: knindex1628 REAL, DIMENSION(knon), INTENT(IN) :: champ_in 1629 INTEGER, DIMENSION(knon), INTENT(IN) :: knindex 1630 1630 1631 1631 ! Output arguments
Note: See TracChangeset
for help on using the changeset viewer.
