Changeset 3636 for palm/trunk/SOURCE
- Timestamp:
- Dec 19, 2018 1:48:34 PM (6 years ago)
- Location:
- palm/trunk/SOURCE
- Files:
-
- 19 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/advec_s_bc.f90
r2718 r3636 25 25 ! ----------------- 26 26 ! $Id$ 27 ! nopointer option removed 28 ! 29 ! 2718 2018-01-02 08:49:38Z maronga 27 30 ! Corrected "Former revisions" section 28 31 ! … … 205 208 REAL(wp) :: fmax_l(2) !< 206 209 207 #if defined( __nopointer )208 REAL(wp), DIMENSION(nzb:nzt+1,nysg:nyng,nxlg:nxrg) :: sk !<209 #else210 210 REAL(wp), DIMENSION(:,:,:), POINTER :: sk 211 #endif212 211 213 212 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: a0 !< -
palm/trunk/SOURCE/advec_s_pw.f90
r3547 r3636 25 25 ! ----------------- 26 26 ! $Id$ 27 ! nopointer option removed 28 ! 29 ! 3547 2018-11-21 13:21:24Z suehring 27 30 ! variables documented 28 31 ! … … 136 139 REAL(wp) :: gv !< local additional advective velocity 137 140 138 #if defined( __nopointer )139 REAL(wp), DIMENSION(nzb:nzt+1,nysg:nyng,nxlg:nxrg) :: sk !<140 #else141 141 REAL(wp), DIMENSION(:,:,:), POINTER :: sk 142 #endif143 142 144 143 … … 207 206 REAL(wp) :: gv !< local additional advective velocity 208 207 209 #if defined( __nopointer )210 REAL(wp), DIMENSION(nzb:nzt+1,nysg:nyng,nxlg:nxrg) :: sk !<211 #else212 208 REAL(wp), DIMENSION(:,:,:), POINTER :: sk 213 #endif214 209 215 210 -
palm/trunk/SOURCE/advec_s_up.f90
r3547 r3636 25 25 ! ----------------- 26 26 ! $Id$ 27 ! nopointer option removed 28 ! 29 ! 3547 2018-11-21 13:21:24Z suehring 27 30 ! variables documented 28 31 ! … … 133 136 REAL(wp) :: vkomp !< advection velocity along y-direction 134 137 REAL(wp) :: wkomp !< advection velocity along z-direction 135 #if defined( __nopointer ) 136 REAL(wp), DIMENSION(nzb:nzt+1,nysg:nyng,nxlg:nxrg) :: sk !< treated scalar 137 #else 138 138 139 REAL(wp), DIMENSION(:,:,:), POINTER :: sk !< treated scalar 139 #endif140 140 141 141 … … 213 213 REAL(wp) :: wkomp !< advection velocity along z-direction 214 214 215 #if defined( __nopointer )216 REAL(wp), DIMENSION(nzb:nzt+1,nysg:nyng,nxlg:nxrg) :: sk !< treated scalar217 #else218 215 REAL(wp), DIMENSION(:,:,:), POINTER :: sk !< treated scalar 219 #endif220 216 221 217 -
palm/trunk/SOURCE/bulk_cloud_model_mod.f90
r3622 r3636 25 25 ! ----------------- 26 26 ! $Id$ 27 ! nopointer option removed 28 ! 29 ! 3622 2018-12-12 09:52:53Z schwenkel 27 30 ! Important bugfix in case of restart runs. 28 31 ! … … 185 188 186 189 USE arrays_3d, & 187 #if defined (__nopointer)188 ONLY: ddzu, diss, dzu, dzw, hyp, hyrho, &189 nc, nc_p, nr, nr_p, &190 precipitation_amount, prr, pt, d_exner, pt_init, q, ql, &191 qc, qc_p, qr, qr_p, &192 exner, zu, tnc_m, tnr_m, tqc_m, tqr_m193 #else194 190 ONLY: ddzu, diss, dzu, dzw, hyp, hyrho, & 195 191 nc, nc_1, nc_2, nc_3, nc_p, nr, nr_1, nr_2, nr_3, nr_p, & … … 197 193 qc, qc_1, qc_2, qc_3, qc_p, qr, qr_1, qr_2, qr_3, qr_p, & 198 194 exner, zu, tnc_m, tnr_m, tqc_m, tqr_m 199 #endif200 195 201 196 USE averaging, & … … 824 819 INTEGER(iwp) :: k !< 825 820 ! 826 !-- Liquid water content 827 #if defined( __nopointer ) 828 ALLOCATE ( ql(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 829 #else 821 !-- Liquid water content 830 822 ALLOCATE ( ql_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 831 #endif832 823 833 824 ! 834 825 !-- 3D-cloud water content 835 826 IF ( .NOT. microphysics_morrison ) THEN 836 #if defined( __nopointer )837 ALLOCATE( qc(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )838 #else839 827 ALLOCATE( qc_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 840 #endif841 828 ENDIF 842 829 ! … … 851 838 ! 852 839 !-- 3D-cloud drop water content, cloud drop concentration arrays 853 #if defined( __nopointer )854 ALLOCATE( nc(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &855 nc_p(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &856 qc(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &857 qc_p(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &858 tnc_m(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &859 tqc_m(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )860 #else861 840 ALLOCATE( nc_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg), & 862 841 nc_2(nzb:nzt+1,nysg:nyng,nxlg:nxrg), & … … 865 844 qc_2(nzb:nzt+1,nysg:nyng,nxlg:nxrg), & 866 845 qc_3(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 867 #endif868 846 ENDIF 869 847 … … 871 849 ! 872 850 !-- 3D-rain water content, rain drop concentration arrays 873 #if defined( __nopointer )874 ALLOCATE( nr(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &875 nr_p(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &876 qr(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &877 qr_p(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &878 tnr_m(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &879 tqr_m(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )880 #else881 851 ALLOCATE( nr_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg), & 882 852 nr_2(nzb:nzt+1,nysg:nyng,nxlg:nxrg), & … … 885 855 qr_2(nzb:nzt+1,nysg:nyng,nxlg:nxrg), & 886 856 qr_3(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 887 #endif888 857 ENDIF 889 858 890 #if ! defined( __nopointer )891 859 ! 892 860 !-- Initial assignment of the pointers … … 903 871 nr => nr_1; nr_p => nr_2; tnr_m => nr_3 904 872 ENDIF 905 #endif906 873 907 874 … … 1032 999 IF ( bulk_cloud_model ) THEN 1033 1000 1034 #if defined( __nopointer )1035 IF ( microphysics_morrison ) THEN1036 qc = qc_p1037 nc = nc_p1038 ENDIF1039 IF ( microphysics_seifert ) THEN1040 qr = qr_p1041 nr = nr_p1042 ENDIF1043 #else1044 1001 SELECT CASE ( mod_count ) 1045 1002 … … 1067 1024 1068 1025 END SELECT 1069 #endif1070 1026 1071 1027 ENDIF -
palm/trunk/SOURCE/buoyancy.f90
r3634 r3636 25 25 ! ----------------- 26 26 ! $Id$ 27 ! nopointer option removed 28 ! 29 ! 3634 2018-12-18 12:31:28Z knoop 27 30 ! OpenACC port for SPEC 28 31 ! … … 168 171 INTEGER(iwp) :: wind_component !< 169 172 170 #if defined( __nopointer )171 REAL(wp), DIMENSION(nzb:nzt+1,nysg:nyng,nxlg:nxrg) :: var !<172 #else173 173 REAL(wp), DIMENSION(:,:,:), POINTER :: var 174 #endif175 174 176 175 … … 261 260 INTEGER(iwp) :: wind_component !< 262 261 263 #if defined( __nopointer )264 REAL(wp), DIMENSION(nzb:nzt+1,nysg:nyng,nxlg:nxrg) :: var !<265 #else266 262 REAL(wp), DIMENSION(:,:,:), POINTER :: var 267 #endif268 263 269 264 -
palm/trunk/SOURCE/calc_mean_profile.f90
r3241 r3636 25 25 ! ----------------- 26 26 ! $Id$ 27 ! nopointer option removed 28 ! 29 ! 3241 2018-09-12 15:02:00Z raasch 27 30 ! omp_get_thread_num now declared in openmp directive, 28 31 ! unused variable removed … … 110 113 INTEGER(iwp) :: tn !< 111 114 112 #if defined( __nopointer )113 REAL(wp), DIMENSION(:,:,:) :: var !<114 #else115 115 REAL(wp), DIMENSION(:,:,:), POINTER :: var 116 #endif117 116 118 117 ! -
palm/trunk/SOURCE/chem_modules.f90
r3611 r3636 27 27 ! ----------------- 28 28 ! $Id$ 29 ! nopointer option removed 30 ! 31 ! 3611 2018-12-07 14:14:11Z banzhafs 29 32 ! Minor formatting 30 33 ! … … 43 46 ! Initial revision 44 47 ! 45 !46 !47 !48 48 ! Authors: 49 49 ! -------- … … 56 56 ! Description: 57 57 ! ------------ 58 !> Definition of global palm-4u chemistry variables 59 !> (Module written to define global palm-4u chemistry variables. basit 16Nov2017) 58 !> Definition of global PALM-4U chemistry variables 60 59 !------------------------------------------------------------------------------! 61 60 ! … … 115 114 REAL(wp), DIMENSION(99,100) :: cs_profile = 9999999.9_wp !< Namelist parameter: Chem conc for each spcs defined 116 115 117 118 #if defined( __nopointer )119 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: cs !< chem spcs120 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: cs_p !< prognostic value of chem spc121 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: tcs_m !< weighted tendency of cs for previous sub-timestep (Runge-Kutta)122 123 #else124 116 ! 125 117 !-- Use pointers cs, cs_p and tcs_m to point arrays cs_1, cs_2, and cs_3 … … 130 122 REAL(wp), DIMENSION(:,:,:), POINTER :: cs_p !< pointer: prognostic value of sgs chem spcs 131 123 REAL(wp), DIMENSION(:,:,:), POINTER :: tcs_m !< pointer: 132 133 #endif134 124 135 125 CHARACTER (LEN=20) :: bc_cs_b = 'dirichlet' !< namelist parameter -
palm/trunk/SOURCE/chemistry_model_mod.f90
r3611 r3636 22 22 ! Current revisions: 23 23 ! ----------------- 24 ! 25 ! 24 ! 25 ! 26 26 ! Former revisions: 27 27 ! ----------------- 28 28 ! $Id$ 29 ! nopointer option removed 30 ! 31 ! 3611 2018-12-07 14:14:11Z banzhafs 29 32 ! Minor formatting 30 33 ! … … 1674 1677 1675 1678 IMPLICIT NONE 1676 !-- local variables 1679 1680 ! 1681 !-- Local variables 1677 1682 INTEGER(iwp) :: i !< running index for for horiz numerical grid points 1678 1683 INTEGER(iwp) :: j !< running index for for horiz numerical grid points 1679 1684 INTEGER(iwp) :: lsp !< running index for chem spcs 1680 1685 INTEGER(iwp) :: lpr_lev !< running index for chem spcs profile level 1681 ! 1682 !-- NOPOINTER version not implemented yet 1683 ! #if defined( __nopointer ) 1684 ! message_string = 'The chemistry module only runs with POINTER version' 1685 ! CALL message( 'chemistry_model_mod', 'CM0001', 1, 2, 0, 6, 0 ) 1686 ! #endif 1686 1687 1687 ! 1688 1688 !-- Allocate memory for chemical species … … 1703 1703 1704 1704 1705 DO lsp = 1, nspec1705 DO lsp = 1, nspec 1706 1706 chem_species(lsp)%name = spc_names(lsp) 1707 1707 -
palm/trunk/SOURCE/diffusion_s.f90
r3634 r3636 25 25 ! ----------------- 26 26 ! $Id$ 27 ! nopointer option removed 28 ! 29 ! 3634 2018-12-18 12:31:28Z knoop 27 30 ! OpenACC port for SPEC 28 31 ! … … 191 194 REAL(wp), DIMENSION(1:surf_usm_v(3)%ns) :: s_flux_usm_v_west !< flux at west-facing vertical urban-type surfaces 192 195 REAL(wp), DIMENSION(1:surf_def_h(2)%ns) :: s_flux_t !< flux at model top 193 #if defined( __nopointer ) 194 REAL(wp), DIMENSION(nzb:nzt+1,nysg:nyng,nxlg:nxrg) :: s !< treated scalar 195 #else 196 196 197 REAL(wp), DIMENSION(:,:,:), POINTER :: s !< treated scalar 197 #endif 198 198 199 199 200 !$ACC PARALLEL LOOP COLLAPSE(2) PRIVATE(i, j, k, m) & … … 522 523 REAL(wp), DIMENSION(1:surf_usm_v(3)%ns) :: s_flux_usm_v_west !< flux at west-facing vertical urban-type surfaces 523 524 REAL(wp), DIMENSION(1:surf_def_h(2)%ns) :: s_flux_t !< flux at model top 524 #if defined( __nopointer ) 525 REAL(wp), DIMENSION(nzb:nzt+1,nysg:nyng,nxlg:nxrg) :: s !< treated scalar 526 #else 525 527 526 REAL(wp), DIMENSION(:,:,:), POINTER :: s !< treated scalar 528 #endif529 527 530 528 ! -
palm/trunk/SOURCE/init_3d_model.f90
r3609 r3636 25 25 ! ----------------- 26 26 ! $Id$ 27 ! nopointer option removed 28 ! 29 ! 3609 2018-12-07 13:37:59Z suehring 27 30 ! Furhter correction in initialization of surfaces in cyclic-fill case 28 31 ! … … 771 774 tend(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 772 775 773 #if defined( __nopointer )774 ALLOCATE( pt(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &775 pt_p(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &776 u(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &777 u_p(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &778 v(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &779 v_p(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &780 w(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &781 w_p(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &782 tpt_m(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &783 tu_m(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &784 tv_m(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &785 tw_m(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )786 #else787 776 ALLOCATE( pt_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg), & 788 777 pt_3(nzb:nzt+1,nysg:nyng,nxlg:nxrg), & … … 799 788 ALLOCATE( pt_2(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 800 789 ENDIF 801 #endif802 790 803 791 ! … … 824 812 ! 825 813 !-- 3D-humidity 826 #if defined( __nopointer )827 ALLOCATE( q(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &828 q_p(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &829 tq_m(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &830 vpt(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )831 #else832 814 ALLOCATE( q_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg), & 833 815 q_2(nzb:nzt+1,nysg:nyng,nxlg:nxrg), & 834 816 q_3(nzb:nzt+1,nysg:nyng,nxlg:nxrg), & 835 817 vpt_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 836 #endif837 818 838 819 IF ( cloud_droplets ) THEN 839 820 ! 840 821 !-- Liquid water content, change in liquid water content 841 #if defined( __nopointer )842 ALLOCATE ( ql(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &843 ql_c(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )844 #else845 822 ALLOCATE ( ql_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg), & 846 823 ql_2(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 847 #endif848 824 ! 849 825 !-- Real volume of particles (with weighting), volume of particles … … 858 834 ! 859 835 !-- 3D scalar arrays 860 #if defined( __nopointer )861 ALLOCATE( s(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &862 s_p(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &863 ts_m(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )864 #else865 836 ALLOCATE( s_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg), & 866 837 s_2(nzb:nzt+1,nysg:nyng,nxlg:nxrg), & 867 838 s_3(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 868 #endif 839 869 840 ENDIF 870 841 … … 1070 1041 ENDIF 1071 1042 1072 1073 #if ! defined( __nopointer )1074 1043 ! 1075 1044 !-- Initial assignment of the pointers … … 1095 1064 s => s_1; s_p => s_2; ts_m => s_3 1096 1065 ENDIF 1097 #endif1098 1066 1099 1067 ! -
palm/trunk/SOURCE/land_surface_model_mod.f90
r3620 r3636 25 25 ! ----------------- 26 26 ! $Id$ 27 ! nopointer option removed 28 ! 29 ! 3620 2018-12-11 12:29:43Z moh.hefny 27 30 ! update the 3d rad_lw_out array 28 31 ! … … 655 658 zs_layer = 9999999.9_wp !< soil layer depths (edge) 656 659 657 #if defined( __nopointer )658 TYPE(surf_type_lsm), TARGET :: t_soil_h, & !< Soil temperature (K), horizontal surface elements659 t_soil_h_p, & !< Prog. soil temperature (K), horizontal surface elements660 m_soil_h, & !< Soil moisture (m3/m3), horizontal surface elements661 m_soil_h_p !< Prog. soil moisture (m3/m3), horizontal surface elements662 663 TYPE(surf_type_lsm), DIMENSION(0:3), TARGET :: &664 t_soil_v, & !< Soil temperature (K), vertical surface elements665 t_soil_v_p, & !< Prog. soil temperature (K), vertical surface elements666 m_soil_v, & !< Soil moisture (m3/m3), vertical surface elements667 m_soil_v_p !< Prog. soil moisture (m3/m3), vertical surface elements668 669 #else670 660 TYPE(surf_type_lsm), POINTER :: t_soil_h, & !< Soil temperature (K), horizontal surface elements 671 661 t_soil_h_p, & !< Prog. soil temperature (K), horizontal surface elements … … 689 679 m_soil_v_1, & !< 690 680 m_soil_v_2 !< 691 #endif 692 693 #if defined( __nopointer ) 694 TYPE(surf_type_lsm), TARGET :: t_surface_h, & !< surface temperature (K), horizontal surface elements 695 t_surface_h_p, & !< progn. surface temperature (K), horizontal surface elements 696 m_liq_h, & !< liquid water reservoir (m), horizontal surface elements 697 m_liq_h_p !< progn. liquid water reservoir (m), horizontal surface elements 698 699 TYPE(surf_type_lsm), DIMENSION(0:3), TARGET :: & 700 t_surface_v, & !< surface temperature (K), vertical surface elements 701 t_surface_v_p, & !< progn. surface temperature (K), vertical surface elements 702 m_liq_v, & !< liquid water reservoir (m), vertical surface elements 703 m_liq_v_p !< progn. liquid water reservoir (m), vertical surface elements 704 #else 681 705 682 TYPE(surf_type_lsm), POINTER :: t_surface_h, & !< surface temperature (K), horizontal surface elements 706 683 t_surface_h_p, & !< progn. surface temperature (K), horizontal surface elements … … 724 701 m_liq_v_1, & !< 725 702 m_liq_v_2 !< 726 #endif 727 728 #if defined( __nopointer ) 703 729 704 REAL(wp), DIMENSION(:,:), ALLOCATABLE, TARGET :: m_liq_av 730 #else 731 REAL(wp), DIMENSION(:,:), ALLOCATABLE, TARGET :: m_liq_av 732 #endif 733 734 #if defined( __nopointer ) 705 735 706 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: t_soil_av, & !< Average of t_soil 736 707 m_soil_av !< Average of m_soil 737 #else738 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: t_soil_av, & !< Average of t_soil739 m_soil_av !< Average of m_soil740 #endif741 708 742 709 TYPE(surf_type_lsm), TARGET :: tm_liq_h_m !< liquid water reservoir tendency (m), horizontal surface elements … … 4822 4789 !-- even if they do not belong to the data type due to the 4823 4790 !-- pointer arithmetric (TARGET attribute is not allowed in a data-type). 4824 #if defined( __nopointer )4825 !4826 !-- Horizontal surfaces4827 ALLOCATE ( m_liq_h_p%var_1d(1:surf_lsm_h%ns) )4828 ALLOCATE ( t_surface_h%var_1d(1:surf_lsm_h%ns) )4829 ALLOCATE ( t_surface_h_p%var_1d(1:surf_lsm_h%ns) )4830 ALLOCATE ( m_soil_h_p%var_2d(nzb_soil:nzt_soil,1:surf_lsm_h%ns) )4831 ALLOCATE ( t_soil_h_p%var_2d(nzb_soil:nzt_soil+1,1:surf_lsm_h%ns) )4832 4833 !4834 !-- Vertical surfaces4835 DO l = 0, 34836 ALLOCATE ( m_liq_v(l)%var_1d(1:surf_lsm_v(l)%ns) )4837 ALLOCATE ( m_liq_v_p(l)%var_1d(1:surf_lsm_v(l)%ns) )4838 ALLOCATE ( t_surface_v(l)%var_1d(1:surf_lsm_v(l)%ns) )4839 ALLOCATE ( t_surface_v_p(l)%var_1d(1:surf_lsm_v(l)%ns) )4840 ALLOCATE ( m_soil_v(l)%var_2d(nzb_soil:nzt_soil,1:surf_lsm_v(l)%ns) )4841 ALLOCATE ( m_soil_v_p(l)%var_2d(nzb_soil:nzt_soil,1:surf_lsm_v(l)%ns) )4842 ALLOCATE ( t_soil_v(l)%var_2d(nzb_soil:nzt_soil+1,1:surf_lsm_v(l)%ns) )4843 ALLOCATE ( t_soil_v_p(l)%var_2d(nzb_soil:nzt_soil+1,1:surf_lsm_v(l)%ns) )4844 ENDDO4845 !4846 !-- Allocate soil temperature and moisture. As these variables might be4847 !-- already allocated in case of restarts, check this.4848 IF ( .NOT. ALLOCATED( m_liq_h%var_1d ) ) &4849 ALLOCATE ( m_liq_h%var_1d(1:surf_lsm_h%ns) )4850 IF ( .NOT. ALLOCATED( m_soil_h%var_2d ) ) &4851 ALLOCATE ( m_soil_h%var_2d(nzb_soil:nzt_soil,1:surf_lsm_h%ns) )4852 IF ( .NOT. ALLOCATED( t_soil_h%var_2d ) ) &4853 ALLOCATE ( t_soil_h%var_2d(nzb_soil:nzt_soil,1:surf_lsm_h%ns) )4854 4855 DO l = 0, 34856 IF ( .NOT. ALLOCATED( m_liq_v(l)%var_1d ) ) &4857 ALLOCATE ( m_liq_v(l)%var_1d(1:surf_lsm_v(l)%ns) )4858 IF ( .NOT. ALLOCATED( m_soil_v(l)%var_2d ) ) &4859 ALLOCATE ( m_soil_v(l)%var_2d(nzb_soil:nzt_soil,1:surf_lsm_v(l)%ns) )4860 IF ( .NOT. ALLOCATED( t_soil_v(l)%var_2d ) ) &4861 ALLOCATE ( t_soil_v(l)%var_2d(nzb_soil:nzt_soil,1:surf_lsm_v(l)%ns) )4862 ENDDO4863 #else4864 4791 ! 4865 4792 !-- Horizontal surfaces … … 4884 4811 ALLOCATE ( t_soil_v_2(l)%var_2d(nzb_soil:nzt_soil+1,1:surf_lsm_v(l)%ns) ) 4885 4812 ENDDO 4886 #endif 4813 4887 4814 ! 4888 4815 !-- Allocate array for heat flux in W/m2, required for radiation? … … 4986 4913 ENDDO 4987 4914 4988 4989 #if ! defined( __nopointer )4990 4915 ! 4991 4916 !-- Initial assignment of the pointers … … 5001 4926 m_soil_v => m_soil_v_1; m_soil_v_p => m_soil_v_2 5002 4927 m_liq_v => m_liq_v_1; m_liq_v_p => m_liq_v_2 5003 5004 #endif5005 4928 5006 4929 … … 5477 5400 INTEGER, INTENT(IN) :: mod_count 5478 5401 5479 #if defined( __nopointer )5480 !5481 !-- Horizontal surfaces5482 t_surface_h = t_surface_h_p5483 t_soil_h = t_soil_h_p5484 IF ( humidity ) THEN5485 m_soil_h = m_soil_h_p5486 m_liq_h = m_liq_h_p5487 ENDIF5488 !5489 !-- Vertical surfaces5490 t_surface_v = t_surface_v_p5491 t_soil_v = t_soil_v_p5492 IF ( humidity ) THEN5493 m_soil_v = m_soil_v_p5494 m_liq_v = m_liq_v_p5495 ENDIF5496 5497 #else5498 5402 5499 5403 SELECT CASE ( mod_count ) … … 5541 5445 5542 5446 END SELECT 5543 #endif5544 5447 5545 5448 END SUBROUTINE lsm_swap_timelevel -
palm/trunk/SOURCE/modules.f90
r3597 r3636 25 25 ! ----------------- 26 26 ! $Id$ 27 ! nopointer option removed 28 ! 29 ! 3597 2018-12-04 08:40:18Z maronga 27 30 ! Added flag parameter do_output_at_2m for automatic output of 2m-temperature 28 31 ! … … 882 885 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: w_m_s !< velocity data (w at south boundary) from time level t-dt required for radiation boundary condition 883 886 884 #if defined( __nopointer )885 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: diss !< TKE dissipation886 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: diss_p !< prognostic value TKE dissipation887 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: e !< subgrid-scale turbulence kinetic energy (sgs tke)888 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: e_p !< prognostic value of sgs tke889 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: nc !< cloud drop number density890 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: nc_p !< prognostic value of cloud drop number density891 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: nr !< rain drop number density892 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: nr_p !< prognostic value of rain drop number density893 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: p !< perturbation pressure894 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: prho !< potential density895 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: pt !< potential temperature896 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: pt_p !< prognostic value of potential temperature897 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: q !< mixing ratio898 !< (or total water content with active cloud physics)899 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: q_p !< prognostic value of mixing ratio900 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: qc !< cloud water content901 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: qc_p !< cloud water content902 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: ql !< liquid water content903 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: ql_c !< change in liquid water content due to904 !< condensation/evaporation during last time step905 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: ql_v !< volume of liquid water906 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: ql_vp !< liquid water weighting factor907 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: qr !< rain water content908 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: qr_p !< prognostic value of rain water content909 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: rho_ocean !< density of ocean910 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: s !< passive scalar911 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: s_p !< prognostic value of passive scalar912 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: sa !< ocean salinity913 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: sa_p !< prognostic value of ocean salinity914 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: tdiss_m !< weighted tendency of diss for previous sub-timestep (Runge-Kutta)915 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: te_m !< weighted tendency of e for previous sub-timestep (Runge-Kutta)916 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: tnc_m !< weighted tendency of nc for previous sub-timestep (Runge-Kutta)917 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: tnr_m !< weighted tendency of nr for previous sub-timestep (Runge-Kutta)918 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: tpt_m !< weighted tendency of pt for previous sub-timestep (Runge-Kutta)919 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: tq_m !< weighted tendency of q for previous sub-timestep (Runge-Kutta)920 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: tqc_m !< weighted tendency of qc for previous sub-timestep (Runge-Kutta)921 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: tqr_m !< weighted tendency of qr for previous sub-timestep (Runge-Kutta)922 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: ts_m !< weighted tendency of s for previous sub-timestep (Runge-Kutta)923 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: tsa_m !< weighted tendency of sa for previous sub-timestep (Runge-Kutta)924 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: tu_m !< weighted tendency of u for previous sub-timestep (Runge-Kutta)925 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: tv_m !< weighted tendency of v for previous sub-timestep (Runge-Kutta)926 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: tw_m !< weighted tendency of w for previous sub-timestep (Runge-Kutta)927 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: u !< horizontal velocity component u (x-direction)928 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: u_p !< prognostic value of u929 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: v !< horizontal velocity component v (y-direction)930 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: v_p !< prognostic value of v931 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: vpt !< virtual potential temperature932 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: w !< vertical velocity component w (z-direction)933 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: w_p !< prognostic value of w934 #else935 887 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: diss_1 !< pointer for swapping of timelevels for respective quantity 936 888 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE, TARGET :: diss_2 !< pointer for swapping of timelevels for respective quantity … … 1026 978 REAL(wp), DIMENSION(:,:,:), POINTER, CONTIGUOUS :: w !< pointer: vertical velocity component w (z-direction) 1027 979 REAL(wp), DIMENSION(:,:,:), POINTER, CONTIGUOUS :: w_p !< pointer: prognostic value of w 1028 #endif1029 980 1030 981 REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE :: tri !< array to hold the tridiagonal matrix for solution of the Poisson equation in Fourier space (4th dimension for threads) … … 1952 1903 1953 1904 CHARACTER (LEN=*), INTENT(IN) :: sk_char !< string for treated scalar in Bott-Chlond scheme 1954 #if defined( __nopointer ) 1955 REAL(wp), DIMENSION(:,:,:) :: sk !< treated scalar array in Bott-Chlond scheme 1956 #else 1905 1957 1906 REAL(wp), DIMENSION(:,:,:), POINTER :: sk !< treated scalar array in Bott-Chlond scheme 1958 #endif 1907 1959 1908 END SUBROUTINE advec_s_bc 1960 1909 -
palm/trunk/SOURCE/ocean_mod.f90
r3614 r3636 25 25 ! ----------------- 26 26 ! $Id$ 27 ! nopointer option removed 28 ! 29 ! 3614 2018-12-10 07:05:46Z raasch 27 30 ! unused variables removed 28 31 ! … … 64 67 65 68 66 #if defined( __nopointer )67 USE arrays_3d, &68 ONLY: prho, rho_ocean, sa, sa_init, sa_p, tsa_m69 #else70 69 USE arrays_3d, & 71 70 ONLY: prho, prho_1, rho_ocean, rho_1, sa, sa_init, sa_1, sa_2, sa_3, & 72 71 sa_p, tsa_m 73 #endif74 72 75 73 USE control_parameters, & … … 1175 1173 IMPLICIT NONE 1176 1174 1177 #if defined( __nopointer )1178 ALLOCATE( prho(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &1179 rho_ocean(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &1180 sa(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &1181 sa_p(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &1182 tsa_m(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )1183 #else1184 1175 ALLOCATE( prho_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg), & 1185 1176 rho_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg), & … … 1194 1185 rho_ocean => rho_1 ! routines calc_mean_profile and diffusion_e require 1195 1186 ! density to be a pointer 1196 #endif 1197 1198 #if ! defined( __nopointer ) 1187 1199 1188 ! 1200 1189 !-- Initial assignment of pointers … … 1204 1193 sa => sa_1; sa_p => sa_1; tsa_m => sa_3 1205 1194 ENDIF 1206 #endif1207 1195 1208 1196 END SUBROUTINE ocean_init_arrays … … 1786 1774 INTEGER, INTENT(IN) :: mod_count !< flag defining where pointers point to 1787 1775 1788 #if defined( __nopointer ) 1789 1790 sa = sa_p 1791 1792 #else 1793 1776 1794 1777 SELECT CASE ( mod_count ) 1795 1778 … … 1805 1788 1806 1789 END SELECT 1807 1808 #endif1809 1790 1810 1791 END SUBROUTINE ocean_swap_timelevel -
palm/trunk/SOURCE/pmc_interface_mod.f90
r3592 r3636 25 25 ! ----------------- 26 26 ! $Id$ 27 ! nopointer option removed 28 ! 29 ! 3592 2018-12-03 12:38:40Z suehring 27 30 ! Number of coupled arrays is determined dynamically (instead of a fixed value 28 31 ! of 32) … … 328 331 329 332 330 #if defined( __nopointer )331 USE arrays_3d, &332 ONLY: diss, dzu, dzw, e, e_p, nc, nr, pt, q, qc, qr, s, u, u_p, &333 v, v_p, w, w_p, zu, zw334 #else335 333 USE arrays_3d, & 336 334 ONLY: diss, diss_2, dzu, dzw, e, e_p, e_2, nc, nc_2, nc_p, nr, nr_2, & 337 335 pt, pt_2, q, q_2, qc, qc_2, qr, qr_2, s, s_2, & 338 336 u, u_p, u_2, v, v_p, v_2, w, w_p, w_2, zu, zw 339 #endif340 337 341 338 USE control_parameters, & … … 3771 3768 ! IF ( TRIM(name) == "z0" ) p_2d => z0 3772 3769 3773 #if defined( __nopointer )3774 IF ( ASSOCIATED( p_3d ) ) THEN3775 CALL pmc_s_set_dataarray( child_id, p_3d, nz_cl, nz )3776 ELSEIF ( ASSOCIATED( p_2d ) ) THEN3777 CALL pmc_s_set_dataarray( child_id, p_2d )3778 ELSEIF ( ASSOCIATED( i_2d ) ) THEN3779 CALL pmc_s_set_dataarray( child_id, i_2d )3780 ELSE3781 !3782 !-- Give only one message for the root domain3783 IF ( myid == 0 .AND. cpl_id == 1 ) THEN3784 3785 message_string = 'pointer for array "' // TRIM( name ) // &3786 '" can''t be associated'3787 CALL message( 'pmci_set_array_pointer', 'PA0117', 3, 2, 0, 6, 0 )3788 ELSE3789 !3790 !-- Avoid others to continue3791 CALL MPI_BARRIER( comm2d, ierr )3792 ENDIF3793 ENDIF3794 #else3795 3770 IF ( TRIM(name) == "u" ) p_3d_sec => u_2 3796 3771 IF ( TRIM(name) == "v" ) p_3d_sec => v_2 … … 3829 3804 3830 3805 ENDIF 3831 #endif3832 3806 3833 3807 #endif -
palm/trunk/SOURCE/radiation_model_mod.f90
r3633 r3636 28 28 ! ----------------- 29 29 ! $Id$ 30 ! nopointer option removed 31 ! 32 ! 3633 2018-12-17 16:17:57Z schwenkel 30 33 ! Include check for rrtmg files 31 34 ! … … 4862 4865 REAL(wp) :: area_hor !< total horizontal area of domain in all processor 4863 4866 4864 #if ! defined( __nopointer ) 4867 4865 4868 IF ( plant_canopy ) THEN 4866 4869 pchf_prep(:) = r_d * exner(nzub:nzut) & 4867 4870 / (c_p * hyp(nzub:nzut) * dx*dy*dz(1)) !< equals to 1 / (rho * c_p * Vbox * T) 4868 4871 ENDIF 4869 #endif 4872 4870 4873 sun_direction = .TRUE. 4871 4874 CALL calc_zenith !< required also for diffusion radiation -
palm/trunk/SOURCE/salsa_mod.f90
r3630 r3636 26 26 ! ----------------- 27 27 ! $Id$ 28 ! nopointer option removed 29 ! 30 ! 3630 2018-12-17 11:04:17Z knoop 28 31 ! - Moved the control parameter "salsa" from salsa_mod.f90 to control_parameters 29 32 ! - Updated salsa_rrd_local and salsa_wrd_local … … 935 938 ! 936 939 !-- Allocate prognostic variables (see salsa_swap_timelevel) 937 #if defined( __nopointer ) 938 message_string = 'SALSA runs only with POINTER Version' 939 CALL message( 'salsa_mod: salsa_init_arrays', 'SA0023', 1, 2, 0, 6, 0 ) 940 #else 940 941 941 ! 942 942 !-- Set derived indices: … … 1160 1160 ENDIF 1161 1161 1162 #endif1163 1164 1162 END SUBROUTINE salsa_init_arrays 1165 1163 … … 1958 1956 INTEGER(iwp) :: g !< 1959 1957 1960 ! 1961 !-- Example for prognostic variable "prog_var" 1962 #if defined( __nopointer ) 1963 IF ( myid == 0 ) THEN 1964 message_string = ' SALSA runs only with POINTER Version' 1965 CALL message( 'salsa_swap_timelevel', 'SA0022', 1, 2, 0, 6, 0 ) 1966 ENDIF 1967 #else 1968 1958 1969 1959 SELECT CASE ( mod_count ) 1970 1960 … … 2020 2010 2021 2011 END SELECT 2022 #endif2023 2012 2024 2013 END SUBROUTINE salsa_swap_timelevel -
palm/trunk/SOURCE/swap_timelevel.f90
r3589 r3636 25 25 ! ----------------- 26 26 ! $Id$ 27 ! nopointer option removed 28 ! 29 ! 3589 2018-11-30 15:09:51Z suehring 27 30 ! Move the control parameter "salsa" from salsa_mod to control_parameters 28 31 ! (M. Kurppa) … … 142 145 143 146 144 #if defined( __nopointer )145 USE arrays_3d, &146 ONLY: nc, nc_p, nr, nr_p, pt, pt_p, q, q_p, qc, qc_p, qr, qr_p, s, &147 s_p, sa, sa_p, u, u_p, v, v_p, w, w_p148 #else149 147 USE arrays_3d, & 150 148 ONLY: nc, nc_1, nc_2, nc_p, nr, nr_1, nr_2, nr_p, pt, pt_1, pt_2, & … … 152 150 qr_p, s, s_1, s_2, s_p, sa, sa_1, sa_2, sa_p, u, u_1, u_2, u_p, & 153 151 v, v_1, v_2, v_p, w, w_1, w_2, w_p 154 #endif155 152 156 153 USE bulk_cloud_model_mod, & … … 170 167 USE gust_mod, & 171 168 ONLY: gust_module_enabled, gust_swap_timelevel 172 173 #if defined( __nopointer )174 USE indices, &175 ONLY: nxlg, nxrg, nyng, nysg, nzb, nzt176 #endif177 169 178 170 USE land_surface_model_mod, & … … 197 189 IMPLICIT NONE 198 190 199 #if defined( __nopointer )200 INTEGER :: i, j, k !> loop indices201 #endif202 191 INTEGER :: swap_level !> swap_level for steering the pmc data transfer 203 192 … … 208 197 ! 209 198 !-- Swap of variables 210 #if defined( __nopointer )211 CALL cpu_log( log_point(28), 'swap_timelevel (nop)', 'start' )212 213 DO i = nxlg, nxrg214 DO j = nysg, nyng215 DO k = nzb, nzt+1216 u(k,j,i) = u_p(k,j,i)217 v(k,j,i) = v_p(k,j,i)218 w(k,j,i) = w_p(k,j,i)219 pt(k,j,i) = pt_p(k,j,i)220 ENDDO221 ENDDO222 ENDDO223 224 IF ( humidity ) THEN225 q = q_p226 ENDIF227 228 IF ( passive_scalar ) s = s_p229 230 !231 !-- Swapping the timelevel of other modules232 IF ( humidity .AND. bulk_cloud_model ) CALL bcm_swap_timelevel( 0 )233 IF ( gust_module_enabled ) CALL gust_swap_timelevel( 0 )234 IF ( land_surface ) CALL lsm_swap_timelevel( 0 )235 IF ( ocean_mode ) CALL ocean_swap_timelevel( 0 )236 CALL tcm_swap_timelevel( 0 )237 IF ( urban_surface ) CALL usm_swap_timelevel( 0 )238 239 CALL cpu_log( log_point(28), 'swap_timelevel (nop)', 'stop' )240 #else241 199 CALL cpu_log( log_point(28), 'swap_timelevel', 'start' ) 242 200 … … 312 270 313 271 CALL cpu_log( log_point(28), 'swap_timelevel', 'stop' ) 314 #endif315 272 316 273 END SUBROUTINE swap_timelevel -
palm/trunk/SOURCE/turbulence_closure_mod.f90
r3634 r3636 25 25 ! ----------------- 26 26 ! $Id$ 27 ! nopointer option removed 28 ! 29 ! 3634 2018-12-18 12:31:28Z knoop 27 30 ! OpenACC port for SPEC 28 31 ! … … 177 180 178 181 179 #if defined( __nopointer )180 USE arrays_3d, &181 ONLY: diss, diss_p, dzu, e, e_p, kh, km, &182 mean_inflow_profiles, prho, pt, tdiss_m, te_m, tend, u, v, vpt, w183 #else184 182 USE arrays_3d, & 185 183 ONLY: diss, diss_1, diss_2, diss_3, diss_p, dzu, e, e_1, e_2, e_3, & 186 184 e_p, kh, km, mean_inflow_profiles, prho, pt, tdiss_m, & 187 185 te_m, tend, u, v, vpt, w 188 #endif189 186 190 187 USE basic_constants_and_equations_mod, & … … 911 908 ALLOCATE( km(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 912 909 913 #if defined( __nopointer )914 ALLOCATE( e(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )915 ALLOCATE( e_p(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )916 ALLOCATE( te_m(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )917 918 #else919 910 ALLOCATE( e_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 920 911 ALLOCATE( e_2(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 921 912 ALLOCATE( e_3(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 922 #endif 913 923 914 ! 924 915 !-- Allocate arrays required for dissipation. … … 928 919 IF ( rans_mode .OR. use_sgs_for_particles .OR. wang_kernel .OR. & 929 920 collision_turbulence .OR. nested_run ) THEN 930 #if defined( __nopointer ) 931 ALLOCATE( diss(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 932 IF ( rans_tke_e ) THEN 933 ALLOCATE( diss_p(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 934 ALLOCATE( tdiss_m(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 935 ENDIF 936 #else 921 937 922 ALLOCATE( diss_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 938 923 IF ( rans_tke_e .OR. nested_run ) THEN … … 940 925 ALLOCATE( diss_3(nzb:nzt+1,nysg:nyng,nxlg:nxrg) ) 941 926 ENDIF 942 #endif 927 943 928 ENDIF 944 929 945 #if ! defined( __nopointer )946 930 ! 947 931 !-- Initial assignment of pointers … … 955 939 ENDIF 956 940 ENDIF 957 #endif958 941 959 942 END SUBROUTINE tcm_init_arrays … … 3731 3714 #endif 3732 3715 3733 #if defined( __nopointer ) 3734 REAL(wp), DIMENSION(nzb:nzt+1,nysg:nyng,nxlg:nxrg) :: var !< temperature 3735 #else 3716 REAL(wp) :: dissipation !< TKE dissipation 3717 3736 3718 REAL(wp), DIMENSION(:,:,:), POINTER :: var !< temperature 3737 #endif3738 REAL(wp) :: dissipation !< TKE dissipation3739 3719 3740 3720 … … 3930 3910 REAL(wp) :: var_reference !< reference temperature 3931 3911 3932 #if defined( __nopointer ) 3933 REAL(wp), DIMENSION(nzb:nzt+1,nysg:nyng,nxlg:nxrg) :: var !< temperature 3934 #else 3912 REAL(wp), DIMENSION(nzb+1:nzt) :: dissipation !< dissipation of TKE 3913 3935 3914 REAL(wp), DIMENSION(:,:,:), POINTER :: var !< temperature 3936 #endif3937 REAL(wp), DIMENSION(nzb+1:nzt) :: dissipation !< dissipation of TKE3938 3915 3939 3916 ! … … 4161 4138 REAL(wp) :: var_reference !< var at reference height 4162 4139 4163 #if defined( __nopointer )4164 REAL(wp), DIMENSION(nzb:nzt+1,nysg:nyng,nxlg:nxrg) :: var !< temperature4165 #else4166 4140 REAL(wp), DIMENSION(:,:,:), POINTER :: var !< temperature 4167 #endif 4141 4168 4142 4169 4143 dvar_dz = atmos_ocean_sign * ( var(k+1,j,i) - var(k-1,j,i) ) * dd2zu(k) … … 4218 4192 REAL(wp) :: var_reference !< var at reference height 4219 4193 4220 #if defined( __nopointer )4221 REAL(wp), DIMENSION(nzb:nzt+1,nysg:nyng,nxlg:nxrg) :: var !< temperature4222 #else4223 4194 REAL(wp), DIMENSION(:,:,:), POINTER :: var !< temperature 4224 #endif 4195 4225 4196 4226 4197 dvar_dz = atmos_ocean_sign * ( var(k+1,j,i) - var(k-1,j,i) ) * dd2zu(k) … … 4282 4253 REAL(wp) :: var_reference !< reference temperature 4283 4254 4284 #if defined( __nopointer )4285 REAL(wp), DIMENSION(nzb:nzt+1,nysg:nyng,nxlg:nxrg) :: var !< temperature4286 #else4287 4255 REAL(wp), DIMENSION(:,:,:), POINTER :: var !< temperature 4288 #endif 4256 4289 4257 4290 4258 ! … … 4488 4456 #endif 4489 4457 4490 #if defined( __nopointer )4491 REAL(wp), DIMENSION(nzb:nzt+1,nysg:nyng,nxlg:nxrg) :: var !< temperature4492 #else4493 4458 REAL(wp), DIMENSION(:,:,:), POINTER :: var !< temperature 4494 #endif 4459 4495 4460 4496 4461 ! … … 4942 4907 4943 4908 4944 #if defined( __nopointer )4945 INTEGER(iwp) :: i !< loop index x direction4946 INTEGER(iwp) :: j !< loop index y direction4947 INTEGER(iwp) :: k !< loop index z direction4948 #endif4949 4909 INTEGER, INTENT(IN) :: mod_count !< flag defining where pointers point to 4950 4910 4951 #if defined( __nopointer ) 4952 4953 IF ( .NOT. constant_diffusion ) THEN 4954 DO i = nxlg, nxrg 4955 DO j = nysg, nyng 4956 DO k = nzb, nzt+1 4957 e(k,j,i) = e_p(k,j,i) 4958 ENDDO 4959 ENDDO 4960 ENDDO 4961 ENDIF 4962 4963 IF ( rans_tke_e ) THEN 4964 DO i = nxlg, nxrg 4965 DO j = nysg, nyng 4966 DO k = nzb, nzt+1 4967 diss(k,j,i) = diss_p(k,j,i) 4968 ENDDO 4969 ENDDO 4970 ENDDO 4971 ENDIF 4972 4973 #else 4974 4911 4975 4912 SELECT CASE ( mod_count ) 4976 4913 … … 4996 4933 4997 4934 END SELECT 4998 #endif4999 4935 5000 4936 END SUBROUTINE tcm_swap_timelevel -
palm/trunk/SOURCE/urban_surface_mod.f90
r3614 r3636 28 28 ! ----------------- 29 29 ! $Id$ 30 ! nopointer option removed 31 ! 32 ! 3614 2018-12-10 07:05:46Z raasch 30 33 ! unused variables removed 31 34 ! … … 393 396 394 397 USE arrays_3d, & 395 #if ! defined( __nopointer )396 398 ONLY: hyp, zu, pt, p, u, v, w, tend, exner, hyrho, prr, q, ql, vpt 397 #else 398 ONLY: hyp, pt, u, v, w, tend, exner, hyrho, prr, q, ql, vpt 399 #endif 399 400 400 USE calc_mean_profile_mod, & 401 401 ONLY: calc_mean_profile … … 936 936 END TYPE surf_type_usm 937 937 938 #if defined( __nopointer )939 TYPE(surf_type_usm), TARGET :: m_liq_usm_h, & !< liquid water reservoir (m), horizontal surface elements940 m_liq_usm_h_p !< progn. liquid water reservoir (m), horizontal surface elements941 942 TYPE(surf_type_usm), DIMENSION(0:3), TARGET :: &943 m_liq_usm_v, & !< liquid water reservoir (m), vertical surface elements944 m_liq_usm_v_p !< progn. liquid water reservoir (m), vertical surface elements945 #else946 938 TYPE(surf_type_usm), POINTER :: m_liq_usm_h, & !< liquid water reservoir (m), horizontal surface elements 947 939 m_liq_usm_h_p !< progn. liquid water reservoir (m), horizontal surface elements … … 957 949 m_liq_usm_v_1, & !< 958 950 m_liq_usm_v_2 !< 959 #endif960 951 961 952 TYPE(surf_type_usm), TARGET :: tm_liq_usm_h_m !< liquid water reservoir tendency (m), horizontal surface elements … … 1006 997 REAL(wp), DIMENSION(:), ALLOCATABLE :: zwn_green !< normalized green layer depths (m) 1007 998 1008 #if defined( __nopointer )1009 REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET :: t_surf_wall_h !< wall surface temperature (K) at horizontal walls1010 REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET :: t_surf_wall_h_p !< progn. wall surface temperature (K) at horizontal walls1011 REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET :: t_surf_window_h !< window surface temperature (K) at horizontal walls1012 REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET :: t_surf_window_h_p !< progn. window surface temperature (K) at horizontal walls1013 REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET :: t_surf_green_h !< green surface temperature (K) at horizontal walls1014 REAL(wp), DIMENSION(:), ALLOCATABLE, TARGET :: t_surf_green_h_p !< progn. green surface temperature (K) at horizontal walls1015 TYPE(t_surf_vertical), DIMENSION(0:3), TARGET :: t_surf_wall_v1016 TYPE(t_surf_vertical), DIMENSION(0:3), TARGET :: t_surf_wall_v_p1017 TYPE(t_surf_vertical), DIMENSION(0:3), TARGET :: t_surf_window_v1018 TYPE(t_surf_vertical), DIMENSION(0:3), TARGET :: t_surf_window_v_p1019 TYPE(t_surf_vertical), DIMENSION(0:3), TARGET :: t_surf_green_v1020 TYPE(t_surf_vertical), DIMENSION(0:3), TARGET :: t_surf_green_v_p1021 #else1022 999 REAL(wp), DIMENSION(:), POINTER :: t_surf_wall_h 1023 1000 REAL(wp), DIMENSION(:), POINTER :: t_surf_wall_h_p … … 1047 1024 TYPE(t_surf_vertical), DIMENSION(0:3), TARGET :: t_surf_green_v_1 1048 1025 TYPE(t_surf_vertical), DIMENSION(0:3), TARGET :: t_surf_green_v_2 1049 1050 #endif1051 1026 1052 1027 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! … … 1055 1030 !-- parameters of the land, roof and wall surfaces 1056 1031 1057 #if defined( __nopointer )1058 REAL(wp), DIMENSION(:,:), ALLOCATABLE, TARGET :: t_wall_h !< Wall temperature (K)1059 REAL(wp), DIMENSION(:,:), ALLOCATABLE, TARGET :: t_wall_h_p !< Prog. wall temperature (K)1060 REAL(wp), DIMENSION(:,:), ALLOCATABLE, TARGET :: t_window_h !< Window temperature (K)1061 REAL(wp), DIMENSION(:,:), ALLOCATABLE, TARGET :: t_window_h_p !< Prog. window temperature (K)1062 REAL(wp), DIMENSION(:,:), ALLOCATABLE, TARGET :: t_green_h !< Green temperature (K)1063 REAL(wp), DIMENSION(:,:), ALLOCATABLE, TARGET :: t_green_h_p !< Prog. green temperature (K)1064 REAL(wp), DIMENSION(:,:), ALLOCATABLE, TARGET :: swc_h !< soil water content green building layer1065 REAL(wp), DIMENSION(:,:), ALLOCATABLE, TARGET :: swc_h_av !< avg of soil water content green building layer1066 REAL(wp), DIMENSION(:,:), ALLOCATABLE, TARGET :: swc_h_p !< Prog. soil water content green building layer1067 REAL(wp), DIMENSION(:,:), ALLOCATABLE, TARGET :: swc_sat_h !< soil water content green building layer at saturation1068 REAL(wp), DIMENSION(:,:), ALLOCATABLE, TARGET :: swc_res_h !< soil water content green building layer residual1069 REAL(wp), DIMENSION(:,:), ALLOCATABLE, TARGET :: rootfr_h !< root fraction green green building layer1070 REAL(wp), DIMENSION(:,:), ALLOCATABLE, TARGET :: wilt_h !< wilting point green building layer1071 REAL(wp), DIMENSION(:,:), ALLOCATABLE, TARGET :: fc_h !< field capacity green building layer1072 1073 1074 TYPE(t_wall_vertical), DIMENSION(0:3), TARGET :: t_wall_v !< Wall temperature (K)1075 TYPE(t_wall_vertical), DIMENSION(0:3), TARGET :: t_wall_v_p !< Prog. wall temperature (K)1076 TYPE(t_wall_vertical), DIMENSION(0:3), TARGET :: t_window_v !< Window temperature (K)1077 TYPE(t_wall_vertical), DIMENSION(0:3), TARGET :: t_window_v_p !< Prog. window temperature (K)1078 TYPE(t_wall_vertical), DIMENSION(0:3), TARGET :: t_green_v !< Green temperature (K)1079 TYPE(t_wall_vertical), DIMENSION(0:3), TARGET :: t_green_v_p !< Prog. green temperature (K)1080 TYPE(t_wall_vertical), DIMENSION(0:3), TARGET :: swc_v !< Wall swc1081 TYPE(t_wall_vertical), DIMENSION(0:3), TARGET :: swc_v_p !< Prog. swc1082 1083 #else1084 1032 REAL(wp), DIMENSION(:,:), POINTER :: t_wall_h, t_wall_h_p 1085 1033 REAL(wp), DIMENSION(:,:), ALLOCATABLE, TARGET :: t_wall_h_1, t_wall_h_2 … … 1101 1049 TYPE(t_wall_vertical), DIMENSION(:), POINTER :: swc_v, swc_v_p 1102 1050 TYPE(t_wall_vertical), DIMENSION(0:3), TARGET :: swc_v_1, swc_v_2 1103 #endif1104 1051 1105 1052 !-- Surface and material parameters classes (surface_type) … … 1417 1364 1418 1365 !-- allocate wall and roof temperature arrays, for horizontal walls 1419 #if defined( __nopointer )1420 IF ( .NOT. ALLOCATED( t_surf_wall_h ) ) &1421 ALLOCATE ( t_surf_wall_h(1:surf_usm_h%ns) )1422 IF ( .NOT. ALLOCATED( t_surf_wall_h_p ) ) &1423 ALLOCATE ( t_surf_wall_h_p(1:surf_usm_h%ns) )1424 IF ( .NOT. ALLOCATED( t_wall_h ) ) &1425 ALLOCATE ( t_wall_h(nzb_wall:nzt_wall+1,1:surf_usm_h%ns) )1426 IF ( .NOT. ALLOCATED( t_wall_h_p ) ) &1427 ALLOCATE ( t_wall_h_p(nzb_wall:nzt_wall+1,1:surf_usm_h%ns) )1428 IF ( .NOT. ALLOCATED( t_surf_window_h ) ) &1429 ALLOCATE ( t_surf_window_h(1:surf_usm_h%ns) )1430 IF ( .NOT. ALLOCATED( t_surf_window_h_p ) ) &1431 ALLOCATE ( t_surf_window_h_p(1:surf_usm_h%ns) )1432 IF ( .NOT. ALLOCATED( t_window_h ) ) &1433 ALLOCATE ( t_window_h(nzb_wall:nzt_wall+1,1:surf_usm_h%ns) )1434 IF ( .NOT. ALLOCATED( t_window_h_p ) ) &1435 ALLOCATE ( t_window_h_p(nzb_wall:nzt_wall+1,1:surf_usm_h%ns) )1436 IF ( .NOT. ALLOCATED( t_surf_green_h ) ) &1437 ALLOCATE ( t_surf_green_h(1:surf_usm_h%ns) )1438 IF ( .NOT. ALLOCATED( t_surf_green_h_p ) ) &1439 ALLOCATE ( t_surf_green_h_p(1:surf_usm_h%ns) )1440 IF ( .NOT. ALLOCATED( t_green_h ) ) &1441 ALLOCATE ( t_green_h(nzb_wall:nzt_wall+1,1:surf_usm_h%ns) )1442 IF ( .NOT. ALLOCATED( t_green_h_p ) ) &1443 ALLOCATE ( t_green_h_p(nzb_wall:nzt_wall+1,1:surf_usm_h%ns) )1444 IF ( .NOT. ALLOCATED( swc_h ) ) &1445 ALLOCATE ( swc_h(nzb_wall:nzt_wall+1,1:surf_usm_h%ns) )1446 IF ( .NOT. ALLOCATED( swc_sat_h ) ) &1447 ALLOCATE ( swc_sat_h(nzb_wall:nzt_wall+1,1:surf_usm_h%ns) )1448 IF ( .NOT. ALLOCATED( swc_res_h ) ) &1449 ALLOCATE ( swc_res_h(nzb_wall:nzt_wall+1,1:surf_usm_h%ns) )1450 IF ( .NOT. ALLOCATED( rootfr_h ) ) &1451 ALLOCATE ( rootfr_h(nzb_wall:nzt_wall+1,1:surf_usm_h%ns) )1452 IF ( .NOT. ALLOCATED( wilt_h ) ) &1453 ALLOCATE ( wilt_h(nzb_wall:nzt_wall+1,1:surf_usm_h%ns) )1454 IF ( .NOT. ALLOCATED( fc_h ) ) &1455 ALLOCATE ( fc_h(nzb_wall:nzt_wall+1,1:surf_usm_h%ns) )1456 1457 IF ( .NOT. ALLOCATED( m_liq_usm_h%var_usm_1d ) ) &1458 ALLOCATE ( m_liq_usm_h%var_usm_1d(1:surf_usm_h%ns) )1459 1460 !-- Horizontal surfaces1461 ALLOCATE ( m_liq_usm_h_p%var_usm_1d(1:surf_usm_h%ns) )1462 !1463 !-- Vertical surfaces1464 DO l = 0, 31465 ALLOCATE ( m_liq_usm_v_p(l)%var_usm_1d(1:surf_usm_v(l)%ns) )1466 ENDDO1467 1468 #else1469 1366 ! 1470 1367 !-- Allocate if required. Note, in case of restarts, some of these arrays … … 1529 1426 wilt_h => wilt_h_1 1530 1427 fc_h => fc_h_1 1531 1532 #endif1533 1428 1534 1429 !-- allocate wall and roof temperature arrays, for vertical walls if required 1535 #if defined( __nopointer )1536 DO l = 0, 31537 IF ( .NOT. ALLOCATED( t_surf_wall_v(l)%t ) ) &1538 ALLOCATE ( t_surf_wall_v(l)%t(1:surf_usm_v(l)%ns) )1539 IF ( .NOT. ALLOCATED( t_surf_wall_v_p(l)%t ) ) &1540 ALLOCATE ( t_surf_wall_v_p(l)%t(1:surf_usm_v(l)%ns) )1541 IF ( .NOT. ALLOCATED( t_wall_v(l)%t ) ) &1542 ALLOCATE ( t_wall_v(l)%t(nzb_wall:nzt_wall+1,1:surf_usm_v(l)%ns) )1543 IF ( .NOT. ALLOCATED( t_wall_v_p(l)%t ) ) &1544 ALLOCATE ( t_wall_v_p(l)%t(nzb_wall:nzt_wall+1,1:surf_usm_v(l)%ns) )1545 IF ( .NOT. ALLOCATED( t_surf_window_v(l)%t ) ) &1546 ALLOCATE ( t_surf_window_v(l)%t(1:surf_usm_v(l)%ns) )1547 IF ( .NOT. ALLOCATED( t_surf_window_v_p(l)%t ) ) &1548 ALLOCATE ( t_surf_window_v_p(l)%t(1:surf_usm_v(l)%ns) )1549 IF ( .NOT. ALLOCATED( t_window_v(l)%t ) ) &1550 ALLOCATE ( t_window_v(l)%t(nzb_wall:nzt_wall+1,1:surf_usm_v(l)%ns) )1551 IF ( .NOT. ALLOCATED( t_window_v_p(l)%t ) ) &1552 ALLOCATE ( t_window_v_p(l)%t(nzb_wall:nzt_wall+1,1:surf_usm_v(l)%ns) )1553 IF ( .NOT. ALLOCATED( t_green_v(l)%t ) ) &1554 ALLOCATE ( t_green_v(l)%t(nzb_wall:nzt_wall+1,1:surf_usm_v(l)%ns) )1555 IF ( .NOT. ALLOCATED( t_green_v_p(l)%t ) ) &1556 ALLOCATE ( t_green_v_p(l)%t(nzb_wall:nzt_wall+1,1:surf_usm_v(l)%ns) )1557 IF ( .NOT. ALLOCATED( t_surf_green_v(l)%t ) ) &1558 ALLOCATE ( t_surf_green_v(l)%t(1:surf_usm_v(l)%ns) )1559 IF ( .NOT. ALLOCATED( t_surf_green_v_p(l)%t ) ) &1560 ALLOCATE ( t_surf_green_v_p(l)%t(1:surf_usm_v(l)%ns) )1561 IF ( .NOT. ALLOCATED( m_liq_usm_v(l)%var_usm_1d ) ) &1562 ALLOCATE ( m_liq_usm_v(l)%var_usm_1d(1:surf_usm_v(l)%ns) )1563 IF ( .NOT. ALLOCATED( swc_v(l)%t ) ) &1564 ALLOCATE ( swc_v(l)%t(nzb_wall:nzt_wall+1,1:surf_usm_v(l)%ns) )1565 IF ( .NOT. ALLOCATED( swc_v_p(l)%t ) ) &1566 ALLOCATE ( swc_v_p(l)%t(nzb_wall:nzt_wall+1,1:surf_usm_v(l)%ns) )1567 ENDDO1568 #else1569 1430 ! 1570 1431 !-- Allocate if required. Note, in case of restarts, some of these arrays … … 1615 1476 swc_v => swc_v_1; swc_v_p => swc_v_2 1616 1477 1617 #endif1618 1478 ! 1619 1479 !-- Allocate intermediate timestep arrays. For horizontal surfaces. … … 4059 3919 REAL(wp) :: z_agl !< height above ground 4060 3920 4061 !4062 !-- NOPOINTER version not implemented yet4063 #if defined( __nopointer )4064 message_string = 'The urban surface module only runs with POINTER version'4065 CALL message( 'urban_surface_mod', 'PA0452', 1, 2, 0, 6, 0 )4066 #endif4067 3921 4068 3922 CALL cpu_log( log_point_s(78), 'usm_init', 'start' ) … … 5175 5029 !-- At horizontal surfaces. Please note, t_surf_wall_h is defined on a 5176 5030 !-- different data type, but with the same dimension. 5177 #if ! defined( __nopointer )5178 5031 DO m = 1, surf_usm_h%ns 5179 5032 i = surf_usm_h%i(m) … … 5200 5053 ENDDO 5201 5054 ENDDO 5202 #endif 5055 5203 5056 ! 5204 5057 !-- For the sake of correct initialization, set also q_surface. … … 6416 6269 6417 6270 CASE ( 't_surf_wall_h' ) 6418 #if defined( __nopointer )6419 IF ( k == 1 ) THEN6420 IF ( .NOT. ALLOCATED( t_surf_wall_h ) ) &6421 ALLOCATE( t_surf_wall_h(1:surf_usm_h%ns) )6422 READ ( 13 ) tmp_surf_wall_h6423 ENDIF6424 CALL surface_restore_elements( &6425 t_surf_wall_h, tmp_surf_wall_h, &6426 surf_usm_h%start_index, &6427 start_index_on_file, &6428 end_index_on_file, &6429 nxlc, nysc, &6430 nxlf, nxrf, nysf, nynf, &6431 nys_on_file, nyn_on_file, &6432 nxl_on_file,nxr_on_file )6433 #else6434 6271 IF ( k == 1 ) THEN 6435 6272 IF ( .NOT. ALLOCATED( t_surf_wall_h_1 ) ) & … … 6446 6283 nys_on_file, nyn_on_file, & 6447 6284 nxl_on_file,nxr_on_file ) 6448 #endif6449 6285 6450 6286 CASE ( 't_surf_wall_v(0)' ) 6451 #if defined( __nopointer )6452 IF ( k == 1 ) THEN6453 IF ( .NOT. ALLOCATED( t_surf_wall_v(0)%t ) ) &6454 ALLOCATE( t_surf_wall_v(0)%t(1:surf_usm_v(0)%ns) )6455 READ ( 13 ) tmp_surf_wall_v(0)%t6456 ENDIF6457 CALL surface_restore_elements( &6458 t_surf_wall_v(0)%t, tmp_surf_wall_v(0)%t, &6459 surf_usm_v(0)%start_index, &6460 start_index_on_file, &6461 end_index_on_file, &6462 nxlc, nysc, &6463 nxlf, nxrf, nysf, nynf, &6464 nys_on_file, nyn_on_file, &6465 nxl_on_file,nxr_on_file )6466 #else6467 6287 IF ( k == 1 ) THEN 6468 6288 IF ( .NOT. ALLOCATED( t_surf_wall_v_1(0)%t ) ) & … … 6479 6299 nys_on_file, nyn_on_file, & 6480 6300 nxl_on_file,nxr_on_file ) 6481 #endif6482 6301 6483 6302 CASE ( 't_surf_wall_v(1)' ) 6484 #if defined( __nopointer )6485 IF ( k == 1 ) THEN6486 IF ( .NOT. ALLOCATED( t_surf_wall_v(1)%t ) ) &6487 ALLOCATE( t_surf_wall_v(1)%t(1:surf_usm_v(1)%ns) )6488 READ ( 13 ) tmp_surf_wall_v(1)%t6489 ENDIF6490 CALL surface_restore_elements( &6491 t_surf_wall_v(1)%t, tmp_surf_wall_v(1)%t, &6492 surf_usm_v(1)%start_index, &6493 start_index_on_file, &6494 end_index_on_file, &6495 nxlc, nysc, &6496 nxlf, nxrf, nysf, nynf, &6497 nys_on_file, nyn_on_file, &6498 nxl_on_file,nxr_on_file )6499 #else6500 6303 IF ( k == 1 ) THEN 6501 6304 IF ( .NOT. ALLOCATED( t_surf_wall_v_1(1)%t ) ) & … … 6512 6315 nys_on_file, nyn_on_file, & 6513 6316 nxl_on_file,nxr_on_file ) 6514 #endif6515 6317 6516 6318 CASE ( 't_surf_wall_v(2)' ) 6517 #if defined( __nopointer )6518 IF ( k == 1 ) THEN6519 IF ( .NOT. ALLOCATED( t_surf_wall_v(2)%t ) ) &6520 ALLOCATE( t_surf_wall_v(2)%t(1:surf_usm_v(2)%ns) )6521 READ ( 13 ) tmp_surf_wall_v(2)%t6522 ENDIF6523 CALL surface_restore_elements( &6524 t_surf_wall_v(2)%t, tmp_surf_wall_v(2)%t, &6525 surf_usm_v(2)%start_index, &6526 start_index_on_file, &6527 end_index_on_file, &6528 nxlc, nysc, &6529 nxlf, nxrf, nysf, nynf, &6530 nys_on_file, nyn_on_file, &6531 nxl_on_file,nxr_on_file )6532 #else6533 6319 IF ( k == 1 ) THEN 6534 6320 IF ( .NOT. ALLOCATED( t_surf_wall_v_1(2)%t ) ) & … … 6545 6331 nys_on_file, nyn_on_file, & 6546 6332 nxl_on_file,nxr_on_file ) 6547 #endif6548 6333 6549 6334 CASE ( 't_surf_wall_v(3)' ) 6550 #if defined( __nopointer )6551 IF ( k == 1 ) THEN6552 IF ( .NOT. ALLOCATED( t_surf_wall_v(3)%t ) ) &6553 ALLOCATE( t_surf_wall_v(3)%t(1:surf_usm_v(3)%ns) )6554 READ ( 13 ) tmp_surf_wall_v(3)%t6555 ENDIF6556 CALL surface_restore_elements( &6557 t_surf_wall_v(3)%t, tmp_surf_wall_v(3)%t, &6558 surf_usm_v(3)%start_index, &6559 start_index_on_file, &6560 end_index_on_file, &6561 nxlc, nysc, &6562 nxlf, nxrf, nysf, nynf, &6563 nys_on_file, nyn_on_file, &6564 nxl_on_file,nxr_on_file )6565 #else6566 6335 IF ( k == 1 ) THEN 6567 6336 IF ( .NOT. ALLOCATED( t_surf_wall_v_1(3)%t ) ) & … … 6578 6347 nys_on_file, nyn_on_file, & 6579 6348 nxl_on_file,nxr_on_file ) 6580 #endif 6349 6581 6350 CASE ( 't_surf_green_h' ) 6582 #if defined( __nopointer )6583 IF ( k == 1 ) THEN6584 IF ( .NOT. ALLOCATED( t_surf_green_h ) ) &6585 ALLOCATE( t_surf_green_h(1:surf_usm_h%ns) )6586 READ ( 13 ) tmp_surf_green_h6587 ENDIF6588 CALL surface_restore_elements( &6589 t_surf_green_h, tmp_surf_green_h, &6590 surf_usm_h%start_index, &6591 start_index_on_file, &6592 end_index_on_file, &6593 nxlc, nysc, &6594 nxlf, nxrf, nysf, nynf, &6595 nys_on_file, nyn_on_file, &6596 nxl_on_file,nxr_on_file )6597 #else6598 6351 IF ( k == 1 ) THEN 6599 6352 IF ( .NOT. ALLOCATED( t_surf_green_h_1 ) ) & … … 6610 6363 nys_on_file, nyn_on_file, & 6611 6364 nxl_on_file,nxr_on_file ) 6612 #endif6613 6365 6614 6366 CASE ( 't_surf_green_v(0)' ) 6615 #if defined( __nopointer )6616 IF ( k == 1 ) THEN6617 IF ( .NOT. ALLOCATED( t_surf_green_v(0)%t ) ) &6618 ALLOCATE( t_surf_green_v(0)%t(1:surf_usm_v(0)%ns) )6619 READ ( 13 ) tmp_surf_green_v(0)%t6620 ENDIF6621 CALL surface_restore_elements( &6622 t_surf_green_v(0)%t, &6623 tmp_surf_green_v(0)%t, &6624 surf_usm_v(0)%start_index, &6625 start_index_on_file, &6626 end_index_on_file, &6627 nxlc, nysc, &6628 nxlf, nxrf, nysf, nynf, &6629 nys_on_file, nyn_on_file, &6630 nxl_on_file,nxr_on_file )6631 #else6632 6367 IF ( k == 1 ) THEN 6633 6368 IF ( .NOT. ALLOCATED( t_surf_green_v_1(0)%t ) ) & … … 6645 6380 nys_on_file, nyn_on_file, & 6646 6381 nxl_on_file,nxr_on_file ) 6647 #endif6648 6382 6649 6383 CASE ( 't_surf_green_v(1)' ) 6650 #if defined( __nopointer )6651 IF ( k == 1 ) THEN6652 IF ( .NOT. ALLOCATED( t_surf_green_v(1)%t ) ) &6653 ALLOCATE( t_surf_green_v(1)%t(1:surf_usm_v(1)%ns) )6654 READ ( 13 ) tmp_surf_green_v(1)%t6655 ENDIF6656 CALL surface_restore_elements( &6657 t_surf_green_v(1)%t, &6658 tmp_surf_green_v(1)%t, &6659 surf_usm_v(1)%start_index, &6660 start_index_on_file, &6661 end_index_on_file, &6662 nxlc, nysc, &6663 nxlf, nxrf, nysf, nynf, &6664 nys_on_file, nyn_on_file, &6665 nxl_on_file,nxr_on_file )6666 #else6667 6384 IF ( k == 1 ) THEN 6668 6385 IF ( .NOT. ALLOCATED( t_surf_green_v_1(1)%t ) ) & … … 6680 6397 nys_on_file, nyn_on_file, & 6681 6398 nxl_on_file,nxr_on_file ) 6682 #endif6683 6399 6684 6400 CASE ( 't_surf_green_v(2)' ) 6685 #if defined( __nopointer )6686 IF ( k == 1 ) THEN6687 IF ( .NOT. ALLOCATED( t_surf_green_v(2)%t ) ) &6688 ALLOCATE( t_surf_green_v(2)%t(1:surf_usm_v(2)%ns) )6689 READ ( 13 ) tmp_surf_green_v(2)%t6690 ENDIF6691 CALL surface_restore_elements( &6692 t_surf_green_v(2)%t, &6693 tmp_surf_green_v(2)%t, &6694 surf_usm_v(2)%start_index, &6695 start_index_on_file, &6696 end_index_on_file, &6697 nxlc, nysc, &6698 nxlf, nxrf, nysf, nynf, &6699 nys_on_file, nyn_on_file, &6700 nxl_on_file,nxr_on_file )6701 #else6702 6401 IF ( k == 1 ) THEN 6703 6402 IF ( .NOT. ALLOCATED( t_surf_green_v_1(2)%t ) ) & … … 6715 6414 nys_on_file, nyn_on_file, & 6716 6415 nxl_on_file,nxr_on_file ) 6717 #endif6718 6416 6719 6417 CASE ( 't_surf_green_v(3)' ) 6720 #if defined( __nopointer )6721 IF ( k == 1 ) THEN6722 IF ( .NOT. ALLOCATED( t_surf_green_v(3)%t ) ) &6723 ALLOCATE( t_surf_green_v(3)%t(1:surf_usm_v(3)%ns) )6724 READ ( 13 ) tmp_surf_green_v(3)%t6725 ENDIF6726 CALL surface_restore_elements( &6727 t_surf_green_v(3)%t, &6728 tmp_surf_green_v(3)%t, &6729 surf_usm_v(3)%start_index, &6730 start_index_on_file, &6731 end_index_on_file, &6732 nxlc, nysc, &6733 nxlf, nxrf, nysf, nynf, &6734 nys_on_file, nyn_on_file, &6735 nxl_on_file,nxr_on_file )6736 #else6737 6418 IF ( k == 1 ) THEN 6738 6419 IF ( .NOT. ALLOCATED( t_surf_green_v_1(3)%t ) ) & … … 6750 6431 nys_on_file, nyn_on_file, & 6751 6432 nxl_on_file,nxr_on_file ) 6752 #endif 6433 6753 6434 CASE ( 't_surf_window_h' ) 6754 #if defined( __nopointer )6755 IF ( k == 1 ) THEN6756 IF ( .NOT. ALLOCATED( t_surf_window_h ) ) &6757 ALLOCATE( t_surf_window_h(1:surf_usm_h%ns) )6758 READ ( 13 ) tmp_surf_window_h6759 ENDIF6760 CALL surface_restore_elements( &6761 t_surf_window_h, tmp_surf_window_h, &6762 surf_usm_h%start_index, &6763 start_index_on_file, &6764 end_index_on_file, &6765 nxlc, nysc, &6766 nxlf, nxrf, nysf, nynf, &6767 nys_on_file, nyn_on_file, &6768 nxl_on_file,nxr_on_file )6769 #else6770 6435 IF ( k == 1 ) THEN 6771 6436 IF ( .NOT. ALLOCATED( t_surf_window_h_1 ) ) & … … 6783 6448 nys_on_file, nyn_on_file, & 6784 6449 nxl_on_file,nxr_on_file ) 6785 #endif6786 6450 6787 6451 CASE ( 't_surf_window_v(0)' ) 6788 #if defined( __nopointer )6789 IF ( k == 1 ) THEN6790 IF ( .NOT. ALLOCATED( t_surf_window_v(0)%t ) ) &6791 ALLOCATE( t_surf_window_v(0)%t(1:surf_usm_v(0)%ns) )6792 READ ( 13 ) tmp_surf_window_v(0)%t6793 ENDIF6794 CALL surface_restore_elements( &6795 t_surf_window_v(0)%t, &6796 tmp_surf_window_v(0)%t, &6797 surf_usm_v(0)%start_index, &6798 start_index_on_file, &6799 end_index_on_file, &6800 nxlc, nysc, &6801 nxlf, nxrf, nysf, nynf, &6802 nys_on_file, nyn_on_file, &6803 nxl_on_file,nxr_on_file )6804 #else6805 6452 IF ( k == 1 ) THEN 6806 6453 IF ( .NOT. ALLOCATED( t_surf_window_v_1(0)%t ) ) & … … 6818 6465 nys_on_file, nyn_on_file, & 6819 6466 nxl_on_file,nxr_on_file ) 6820 #endif6821 6467 6822 6468 CASE ( 't_surf_window_v(1)' ) 6823 #if defined( __nopointer )6824 IF ( k == 1 ) THEN6825 IF ( .NOT. ALLOCATED( t_surf_window_v(1)%t ) ) &6826 ALLOCATE( t_surf_window_v(1)%t(1:surf_usm_v(1)%ns) )6827 READ ( 13 ) tmp_surf_window_v(1)%t6828 ENDIF6829 CALL surface_restore_elements( &6830 t_surf_window_v(1)%t, &6831 tmp_surf_window_v(1)%t, &6832 surf_usm_v(1)%start_index, &6833 start_index_on_file, &6834 end_index_on_file, &6835 nxlc, nysc, &6836 nxlf, nxrf, nysf, nynf, &6837 nys_on_file, nyn_on_file, &6838 nxl_on_file,nxr_on_file )6839 #else6840 6469 IF ( k == 1 ) THEN 6841 6470 IF ( .NOT. ALLOCATED( t_surf_window_v_1(1)%t ) ) & … … 6853 6482 nys_on_file, nyn_on_file, & 6854 6483 nxl_on_file,nxr_on_file ) 6855 #endif6856 6484 6857 6485 CASE ( 't_surf_window_v(2)' ) 6858 #if defined( __nopointer )6859 IF ( k == 1 ) THEN6860 IF ( .NOT. ALLOCATED( t_surf_window_v(2)%t ) ) &6861 ALLOCATE( t_surf_window_v(2)%t(1:surf_usm_v(2)%ns) )6862 READ ( 13 ) tmp_surf_window_v(2)%t6863 ENDIF6864 CALL surface_restore_elements( &6865 t_surf_window_v(2)%t, &6866 tmp_surf_window_v(2)%t, &6867 surf_usm_v(2)%start_index, &6868 start_index_on_file, &6869 end_index_on_file, &6870 nxlc, nysc, &6871 nxlf, nxrf, nysf, nynf, &6872 nys_on_file, nyn_on_file, &6873 nxl_on_file,nxr_on_file )6874 #else6875 6486 IF ( k == 1 ) THEN 6876 6487 IF ( .NOT. ALLOCATED( t_surf_window_v_1(2)%t ) ) & … … 6888 6499 nys_on_file, nyn_on_file, & 6889 6500 nxl_on_file,nxr_on_file ) 6890 #endif6891 6501 6892 6502 CASE ( 't_surf_window_v(3)' ) 6893 #if defined( __nopointer )6894 IF ( k == 1 ) THEN6895 IF ( .NOT. ALLOCATED( t_surf_window_v(3)%t ) ) &6896 ALLOCATE( t_surf_window_v(3)%t(1:surf_usm_v(3)%ns) )6897 READ ( 13 ) tmp_surf_window_v(3)%t6898 ENDIF6899 CALL surface_restore_elements( &6900 t_surf_window_v(3)%t, &6901 tmp_surf_window_v(3)%t, &6902 surf_usm_v(3)%start_index, &6903 start_index_on_file, &6904 end_index_on_file, &6905 nxlc, nysc, &6906 nxlf, nxrf, nysf, nynf, &6907 nys_on_file, nyn_on_file, &6908 nxl_on_file,nxr_on_file )6909 #else6910 6503 IF ( k == 1 ) THEN 6911 6504 IF ( .NOT. ALLOCATED( t_surf_window_v_1(3)%t ) ) & … … 6923 6516 nys_on_file, nyn_on_file, & 6924 6517 nxl_on_file,nxr_on_file ) 6925 #endif 6518 6926 6519 CASE ( 't_wall_h' ) 6927 #if defined( __nopointer )6928 IF ( k == 1 ) THEN6929 IF ( .NOT. ALLOCATED( t_wall_h ) ) &6930 ALLOCATE( t_wall_h(nzb_wall:nzt_wall+1,1:surf_usm_h%ns) )6931 READ ( 13 ) tmp_wall_h6932 ENDIF6933 CALL surface_restore_elements( &6934 t_wall_h, tmp_wall_h, &6935 surf_usm_h%start_index, &6936 start_index_on_file, &6937 end_index_on_file, &6938 nxlc, nysc, &6939 nxlf, nxrf, nysf, nynf, &6940 nys_on_file, nyn_on_file, &6941 nxl_on_file,nxr_on_file )6942 #else6943 6520 IF ( k == 1 ) THEN 6944 6521 IF ( .NOT. ALLOCATED( t_wall_h_1 ) ) & … … 6956 6533 nys_on_file, nyn_on_file, & 6957 6534 nxl_on_file,nxr_on_file ) 6958 #endif 6535 6959 6536 CASE ( 't_wall_v(0)' ) 6960 #if defined( __nopointer )6961 IF ( k == 1 ) THEN6962 IF ( .NOT. ALLOCATED( t_wall_v(0)%t ) ) &6963 ALLOCATE( t_wall_v(0)%t(nzb_wall:nzt_wall+1, &6964 1:surf_usm_v(0)%ns) )6965 READ ( 13 ) tmp_wall_v(0)%t6966 ENDIF6967 CALL surface_restore_elements( &6968 t_wall_v(0)%t, tmp_wall_v(0)%t, &6969 surf_usm_v(0)%start_index, &6970 start_index_on_file, &6971 end_index_on_file, &6972 nxlc, nysc, &6973 nxlf, nxrf, nysf, nynf, &6974 nys_on_file, nyn_on_file, &6975 nxl_on_file,nxr_on_file )6976 #else6977 6537 IF ( k == 1 ) THEN 6978 6538 IF ( .NOT. ALLOCATED( t_wall_v_1(0)%t ) ) & … … 6990 6550 nys_on_file, nyn_on_file, & 6991 6551 nxl_on_file,nxr_on_file ) 6992 #endif 6552 6993 6553 CASE ( 't_wall_v(1)' ) 6994 #if defined( __nopointer )6995 IF ( k == 1 ) THEN6996 IF ( .NOT. ALLOCATED( t_wall_v(1)%t ) ) &6997 ALLOCATE( t_wall_v(1)%t(nzb_wall:nzt_wall+1, &6998 1:surf_usm_v(1)%ns) )6999 READ ( 13 ) tmp_wall_v(1)%t7000 ENDIF7001 CALL surface_restore_elements( &7002 t_wall_v(1)%t, tmp_wall_v(1)%t, &7003 surf_usm_v(1)%start_index, &7004 start_index_on_file, &7005 end_index_on_file , &7006 nxlc, nysc, &7007 nxlf, nxrf, nysf, nynf, &7008 nys_on_file, nyn_on_file, &7009 nxl_on_file, nxr_on_file )7010 #else7011 6554 IF ( k == 1 ) THEN 7012 6555 IF ( .NOT. ALLOCATED( t_wall_v_1(1)%t ) ) & … … 7024 6567 nys_on_file, nyn_on_file, & 7025 6568 nxl_on_file,nxr_on_file ) 7026 #endif 6569 7027 6570 CASE ( 't_wall_v(2)' ) 7028 #if defined( __nopointer )7029 IF ( k == 1 ) THEN7030 IF ( .NOT. ALLOCATED( t_wall_v(2)%t ) ) &7031 ALLOCATE( t_wall_v(2)%t(nzb_wall:nzt_wall+1, &7032 1:surf_usm_v(2)%ns) )7033 READ ( 13 ) tmp_wall_v(2)%t7034 ENDIF7035 CALL surface_restore_elements( &7036 t_wall_v(2)%t, tmp_wall_v(2)%t, &7037 surf_usm_v(2)%start_index, &7038 start_index_on_file, &7039 end_index_on_file, &7040 nxlc, nysc, &7041 nxlf, nxrf, nysf, nynf, &7042 nys_on_file, nyn_on_file, &7043 nxl_on_file,nxr_on_file )7044 #else7045 6571 IF ( k == 1 ) THEN 7046 6572 IF ( .NOT. ALLOCATED( t_wall_v_1(2)%t ) ) & … … 7058 6584 nys_on_file, nyn_on_file, & 7059 6585 nxl_on_file,nxr_on_file ) 7060 #endif 6586 7061 6587 CASE ( 't_wall_v(3)' ) 7062 #if defined( __nopointer )7063 IF ( k == 1 ) THEN7064 IF ( .NOT. ALLOCATED( t_wall_v(3)%t ) ) &7065 ALLOCATE( t_wall_v(3)%t(nzb_wall:nzt_wall+1, &7066 1:surf_usm_v(3)%ns) )7067 READ ( 13 ) tmp_wall_v(3)%t7068 ENDIF7069 CALL surface_restore_elements( &7070 t_wall_v(3)%t, tmp_wall_v(3)%t, &7071 surf_usm_v(3)%start_index, &7072 start_index_on_file, &7073 end_index_on_file, &7074 nxlc, nysc, &7075 nxlf, nxrf, nysf, nynf, &7076 nys_on_file, nyn_on_file, &7077 nxl_on_file,nxr_on_file )7078 #else7079 6588 IF ( k == 1 ) THEN 7080 6589 IF ( .NOT. ALLOCATED( t_wall_v_1(3)%t ) ) & … … 7092 6601 nys_on_file, nyn_on_file, & 7093 6602 nxl_on_file,nxr_on_file ) 7094 #endif 6603 7095 6604 CASE ( 't_green_h' ) 7096 #if defined( __nopointer )7097 IF ( k == 1 ) THEN7098 IF ( .NOT. ALLOCATED( t_green_h ) ) &7099 ALLOCATE( t_green_h(nzb_wall:nzt_wall+1, &7100 1:surf_usm_h%ns) )7101 READ ( 13 ) tmp_green_h7102 ENDIF7103 CALL surface_restore_elements( &7104 t_green_h, tmp_green_h, &7105 surf_usm_h%start_index, &7106 start_index_on_file, &7107 end_index_on_file, &7108 nxlc, nysc, &7109 nxlf, nxrf, nysf, nynf, &7110 nys_on_file, nyn_on_file, &7111 nxl_on_file,nxr_on_file )7112 #else7113 6605 IF ( k == 1 ) THEN 7114 6606 IF ( .NOT. ALLOCATED( t_green_h_1 ) ) & … … 7126 6618 nys_on_file, nyn_on_file, & 7127 6619 nxl_on_file,nxr_on_file ) 7128 #endif 6620 7129 6621 CASE ( 't_green_v(0)' ) 7130 #if defined( __nopointer )7131 IF ( k == 1 ) THEN7132 IF ( .NOT. ALLOCATED( t_green_v(0)%t ) ) &7133 ALLOCATE( t_green_v(0)%t(nzb_wall:nzt_wall+1, &7134 1:surf_usm_v(0)%ns) )7135 READ ( 13 ) tmp_green_v(0)%t7136 ENDIF7137 CALL surface_restore_elements( &7138 t_green_v(0)%t, tmp_green_v(0)%t, &7139 surf_usm_v(0)%start_index, &7140 start_index_on_file, &7141 end_index_on_file, &7142 nxlc, nysc, &7143 nxlf, nxrf, nysf, nynf, &7144 nys_on_file, nyn_on_file, &7145 nxl_on_file,nxr_on_file )7146 #else7147 6622 IF ( k == 1 ) THEN 7148 6623 IF ( .NOT. ALLOCATED( t_green_v_1(0)%t ) ) & … … 7160 6635 nys_on_file, nyn_on_file, & 7161 6636 nxl_on_file,nxr_on_file ) 7162 #endif 6637 7163 6638 CASE ( 't_green_v(1)' ) 7164 #if defined( __nopointer )7165 IF ( k == 1 ) THEN7166 IF ( .NOT. ALLOCATED( t_green_v(1)%t ) ) &7167 ALLOCATE( t_green_v(1)%t(nzb_wall:nzt_wall+1, &7168 1:surf_usm_v(1)%ns) )7169 READ ( 13 ) tmp_green_v(1)%t7170 ENDIF7171 CALL surface_restore_elements( &7172 t_green_v(1)%t, tmp_green_v(1)%t, &7173 surf_usm_v(1)%start_index, &7174 start_index_on_file, &7175 end_index_on_file , &7176 nxlc, nysc, &7177 nxlf, nxrf, nysf, nynf, &7178 nys_on_file, nyn_on_file, &7179 nxl_on_file,nxr_on_file )7180 #else7181 6639 IF ( k == 1 ) THEN 7182 6640 IF ( .NOT. ALLOCATED( t_green_v_1(1)%t ) ) & … … 7194 6652 nys_on_file, nyn_on_file, & 7195 6653 nxl_on_file,nxr_on_file ) 7196 #endif 6654 7197 6655 CASE ( 't_green_v(2)' ) 7198 #if defined( __nopointer )7199 IF ( k == 1 ) THEN7200 IF ( .NOT. ALLOCATED( t_green_v(2)%t ) ) &7201 ALLOCATE( t_green_v(2)%t(nzb_wall:nzt_wall+1, &7202 1:surf_usm_v(2)%ns) )7203 READ ( 13 ) tmp_green_v(2)%t7204 ENDIF7205 CALL surface_restore_elements( &7206 t_green_v(2)%t, tmp_green_v(2)%t, &7207 surf_usm_v(2)%start_index, &7208 start_index_on_file, &7209 end_index_on_file, &7210 nxlc, nysc, &7211 nxlf, nxrf, nysf, nynf, &7212 nys_on_file, nyn_on_file, &7213 nxl_on_file,nxr_on_file )7214 #else7215 6656 IF ( k == 1 ) THEN 7216 6657 IF ( .NOT. ALLOCATED( t_green_v_1(2)%t ) ) & … … 7228 6669 nys_on_file, nyn_on_file, & 7229 6670 nxl_on_file,nxr_on_file ) 7230 #endif 6671 7231 6672 CASE ( 't_green_v(3)' ) 7232 #if defined( __nopointer )7233 IF ( k == 1 ) THEN7234 IF ( .NOT. ALLOCATED( t_green_v(3)%t ) ) &7235 ALLOCATE( t_green_v(3)%t(nzb_wall:nzt_wall+1, &7236 1:surf_usm_v(3)%ns) )7237 READ ( 13 ) tmp_green_v(3)%t7238 ENDIF7239 CALL surface_restore_elements( &7240 t_green_v(3)%t, tmp_green_v(3)%t, &7241 surf_usm_v(3)%start_index, &7242 start_index_on_file, &7243 end_index_on_file, &7244 nxlc, nysc, &7245 nxlf, nxrf, nysf, nynf, &7246 nys_on_file, nyn_on_file, &7247 nxl_on_file,nxr_on_file )7248 #else7249 6673 IF ( k == 1 ) THEN 7250 6674 IF ( .NOT. ALLOCATED( t_green_v_1(3)%t ) ) & … … 7262 6686 nys_on_file, nyn_on_file, & 7263 6687 nxl_on_file,nxr_on_file ) 7264 #endif 6688 7265 6689 CASE ( 't_window_h' ) 7266 #if defined( __nopointer )7267 IF ( k == 1 ) THEN7268 IF ( .NOT. ALLOCATED( t_window_h ) ) &7269 ALLOCATE( t_window_h(nzb_wall:nzt_wall+1, &7270 1:surf_usm_h%ns) )7271 READ ( 13 ) tmp_window_h7272 ENDIF7273 CALL surface_restore_elements( &7274 t_window_h, tmp_window_h, &7275 surf_usm_h%start_index, &7276 start_index_on_file, &7277 end_index_on_file, &7278 nxlc, nysc, &7279 nxlf, nxrf, nysf, nynf, &7280 nys_on_file, nyn_on_file, &7281 nxl_on_file,nxr_on_file )7282 #else7283 6690 IF ( k == 1 ) THEN 7284 6691 IF ( .NOT. ALLOCATED( t_window_h_1 ) ) & … … 7296 6703 nys_on_file, nyn_on_file, & 7297 6704 nxl_on_file, nxr_on_file ) 7298 #endif 6705 7299 6706 CASE ( 't_window_v(0)' ) 7300 #if defined( __nopointer )7301 IF ( k == 1 ) THEN7302 IF ( .NOT. ALLOCATED( t_window_v(0)%t ) ) &7303 ALLOCATE( t_window_v(0)%t(nzb_wall:nzt_wall+1, &7304 1:surf_usm_v(0)%ns) )7305 READ ( 13 ) tmp_window_v(0)%t7306 ENDIF7307 CALL surface_restore_elements( &7308 t_window_v(0)%t, tmp_window_v(0)%t, &7309 surf_usm_v(0)%start_index, &7310 start_index_on_file, &7311 end_index_on_file, &7312 nxlc, nysc, &7313 nxlf, nxrf, nysf, nynf, &7314 nys_on_file, nyn_on_file, &7315 nxl_on_file, nxr_on_file )7316 #else7317 6707 IF ( k == 1 ) THEN 7318 6708 IF ( .NOT. ALLOCATED( t_window_v_1(0)%t ) ) & … … 7331 6721 nys_on_file, nyn_on_file, & 7332 6722 nxl_on_file,nxr_on_file ) 7333 #endif 6723 7334 6724 CASE ( 't_window_v(1)' ) 7335 #if defined( __nopointer )7336 IF ( k == 1 ) THEN7337 IF ( .NOT. ALLOCATED( t_window_v(1)%t ) ) &7338 ALLOCATE( t_window_v(1)%t(nzb_wall:nzt_wall+1, &7339 1:surf_usm_v(1)%ns) )7340 READ ( 13 ) tmp_window_v(1)%t7341 ENDIF7342 CALL surface_restore_elements( &7343 t_window_v(1)%t, tmp_window_v(1)%t, &7344 surf_usm_v(1)%start_index, &7345 start_index_on_file, &7346 end_index_on_file , &7347 nxlc, nysc, &7348 nxlf, nxrf, nysf, nynf, &7349 nys_on_file, nyn_on_file, &7350 nxl_on_file, nxr_on_file )7351 #else7352 6725 IF ( k == 1 ) THEN 7353 6726 IF ( .NOT. ALLOCATED( t_window_v_1(1)%t ) ) & … … 7366 6739 nys_on_file, nyn_on_file, & 7367 6740 nxl_on_file,nxr_on_file ) 7368 #endif 6741 7369 6742 CASE ( 't_window_v(2)' ) 7370 #if defined( __nopointer )7371 IF ( k == 1 ) THEN7372 IF ( .NOT. ALLOCATED( t_window_v(2)%t ) ) &7373 ALLOCATE( t_window_v(2)%t(nzb_wall:nzt_wall+1, &7374 1:surf_usm_v(2)%ns) )7375 READ ( 13 ) tmp_window_v(2)%t7376 ENDIF7377 CALL surface_restore_elements( &7378 t_window_v(2)%t, tmp_window_v(2)%t, &7379 surf_usm_v(2)%start_index, &7380 start_index_on_file, &7381 end_index_on_file, &7382 nxlc, nysc, &7383 nxlf, nxrf, nysf, nynf, &7384 nys_on_file, nyn_on_file, &7385 nxl_on_file,nxr_on_file )7386 #else7387 6743 IF ( k == 1 ) THEN 7388 6744 IF ( .NOT. ALLOCATED( t_window_v_1(2)%t ) ) & … … 7401 6757 nys_on_file, nyn_on_file, & 7402 6758 nxl_on_file,nxr_on_file ) 7403 #endif 6759 7404 6760 CASE ( 't_window_v(3)' ) 7405 #if defined( __nopointer )7406 IF ( k == 1 ) THEN7407 IF ( .NOT. ALLOCATED( t_window_v(3)%t ) ) &7408 ALLOCATE( t_window_v(3)%t(nzb_wall:nzt_wall+1, &7409 1:surf_usm_v(3)%ns) )7410 READ ( 13 ) tmp_window_v(3)%t7411 ENDIF7412 CALL surface_restore_elements( &7413 t_window_v(3)%t, tmp_window_v(3)%t, &7414 surf_usm_v(3)%start_index, &7415 start_index_on_file, &7416 end_index_on_file, &7417 nxlc, nysc, &7418 nxlf, nxrf, nysf, nynf, &7419 nys_on_file, nyn_on_file, &7420 nxl_on_file,nxr_on_file )7421 #else7422 6761 IF ( k == 1 ) THEN 7423 6762 IF ( .NOT. ALLOCATED( t_window_v_1(3)%t ) ) & … … 7435 6774 nys_on_file, nyn_on_file, & 7436 6775 nxl_on_file,nxr_on_file ) 7437 #endif 6776 7438 6777 CASE DEFAULT 7439 6778 … … 7632 6971 7633 6972 IF ( usm_par(5,jw,iw) == 0 ) THEN 7634 #if ! defined( __nopointer ) 6973 7635 6974 IF ( zu(kw) >= roof_height_limit ) THEN 7636 6975 surf_usm_h%isroof_surf(m) = .TRUE. … … 7640 6979 surf_usm_h%surface_types(m) = land_category !< default category for land surface 7641 6980 ENDIF 7642 #endif 6981 7643 6982 surf_usm_h%albedo(:,m) = -1.0_wp 7644 6983 surf_usm_h%thickness_wall(m) = -1.0_wp … … 8188 7527 lambda_surface_green = surf_usm_h%lambda_surf_green(m) 8189 7528 ENDIF 8190 #if ! defined( __nopointer ) 7529 8191 7530 ! pt1 = pt(k,j,i) 8192 7531 IF ( humidity ) THEN … … 8199 7538 rho_cp = c_p * hyp(k) / ( r_d * surf_usm_h%pt1(m) * exner(k) ) 8200 7539 8201 if (surf_usm_h%frac(ind_pav_green,m).gt.0.0_wp) then 8202 ! 8203 !-- Calculate frequently used parameters8204 rho_lv = rho_cp / c_p * l_v8205 drho_l_lv = 1.0_wp / (rho_l * l_v)8206 endif 8207 #endif 7540 IF ( surf_usm_h%frac(ind_pav_green,m) > 0.0_wp ) THEN 7541 ! 7542 !-- Calculate frequently used parameters 7543 rho_lv = rho_cp / c_p * l_v 7544 drho_l_lv = 1.0_wp / (rho_l * l_v) 7545 ENDIF 7546 8208 7547 ! 8209 7548 !-- Calculate aerodyamic resistance. … … 8637 7976 lambda_surface_green = surf_usm_v(l)%lambda_surf_green(m) 8638 7977 8639 #if ! defined( __nopointer )8640 7978 ! pt1 = pt(k,j,i) 8641 7979 IF ( humidity ) THEN … … 8648 7986 rho_cp = c_p * hyp(k) / ( r_d * surf_usm_v(l)%pt1(m) * exner(k) ) 8649 7987 8650 if (surf_usm_v(l)%frac(1,m).gt.0.0_wp) then 8651 ! 8652 !-- Calculate frequently used parameters 8653 rho_lv = rho_cp / c_p * l_v 8654 drho_l_lv = 1.0_wp / (rho_l * l_v) 8655 endif 8656 #endif 7988 IF (surf_usm_v(l)%frac(1,m) > 0.0_wp ) THEN 7989 ! 7990 !-- Calculate frequently used parameters 7991 rho_lv = rho_cp / c_p * l_v 7992 drho_l_lv = 1.0_wp / (rho_l * l_v) 7993 ENDIF 8657 7994 8658 7995 !-- Calculation of r_a for vertical surfaces … … 9053 8390 !-- pt and shf are defined on nxlg:nxrg,nysg:nyng 9054 8391 !-- get the borders from neighbours 9055 #if ! defined( __nopointer )9056 8392 CALL exchange_horiz( pt, nbgp ) 9057 #endif9058 8393 9059 8394 !-- calculation of force_radiation_call: … … 9188 8523 9189 8524 INTEGER(iwp), INTENT(IN) :: mod_count 8525 9190 8526 9191 #if defined( __nopointer )9192 t_surf_wall_h = t_surf_wall_h_p9193 t_wall_h = t_wall_h_p9194 t_surf_wall_v = t_surf_wall_v_p9195 t_wall_v = t_wall_v_p9196 t_surf_window_h = t_surf_window_h_p9197 t_window_h = t_window_h_p9198 t_surf_window_v = t_surf_window_v_p9199 t_window_v = t_window_v_p9200 t_surf_green_h = t_surf_green_h_p9201 t_surf_green_v = t_surf_green_v_p9202 t_green_h = t_green_h_p9203 t_green_v = t_green_v_p9204 #else9205 8527 SELECT CASE ( mod_count ) 8528 9206 8529 CASE ( 0 ) 9207 8530 ! … … 9239 8562 t_green_v => t_green_v_2; t_green_v_p => t_green_v_1 9240 8563 END SELECT 9241 #endif9242 8564 9243 8565 END SUBROUTINE usm_swap_timelevel
Note: See TracChangeset
for help on using the changeset viewer.