- Timestamp:
- Dec 9, 2016 3:59:42 PM (8 years ago)
- Location:
- palm/trunk/SOURCE
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/check_parameters.f90
r2053 r2084 20 20 ! Current revisions: 21 21 ! ----------------- 22 ! 22 ! Removed anelastic + multigrid error message 23 23 ! 24 24 ! Former revisions: … … 874 874 'momentum_advec = "ws-scheme"' 875 875 CALL message( 'check_parameters', 'PA0447', 1, 2, 0, 6, 0 ) 876 ENDIF877 IF ( TRIM( approximation ) == 'anelastic' .AND. &878 TRIM( psolver ) == 'multigrid' ) THEN879 message_string = 'Anelastic approximation currently only supports: ' // &880 'psolver = "poisfft", ' // &881 'psolver = "sor" and ' // &882 'psolver = "multigrid_noopt"'883 CALL message( 'check_parameters', 'PA0448', 1, 2, 0, 6, 0 )884 876 ENDIF 885 877 IF ( TRIM( approximation ) == 'anelastic' .AND. & -
palm/trunk/SOURCE/poismg_mod.f90
r2074 r2084 20 20 ! Current revisions: 21 21 ! ----------------- 22 ! 22 ! Bugfix: missing rho_air_mg even/odd sorting implemented 23 23 ! 24 24 ! Former revisions: … … 108 108 REAL(wp), DIMENSION(:,:), SAVE, ALLOCATABLE :: f1_mg_b, f2_mg_b, f3_mg_b !< blocked version of f1_mg ... 109 109 110 REAL(wp), DIMENSION(:,:), SAVE, ALLOCATABLE :: rho_air_mg_b !< blocked version of rho_air_mg 111 110 112 INTERFACE poismg 111 113 MODULE PROCEDURE poismg … … 315 317 kp1 = k-ind_even_odd 316 318 r(k,j,i) = f_mg(k,j,i) & 317 - rho_air_mg (k,l) * ddx2_mg(l) * &319 - rho_air_mg_b(k,l) * ddx2_mg(l) * & 318 320 ( p_mg(k,j,i+1) + p_mg(k,j,i-1) ) & 319 - rho_air_mg (k,l) * ddy2_mg(l) * &321 - rho_air_mg_b(k,l) * ddy2_mg(l) * & 320 322 ( p_mg(k,j+1,i) + p_mg(k,j-1,i) ) & 321 323 - f2_mg_b(k,l) * p_mg(kp1,j,i) & … … 328 330 kp1 = k+ind_even_odd+1 329 331 r(k,j,i) = f_mg(k,j,i) & 330 - rho_air_mg (k,l) * ddx2_mg(l) * &332 - rho_air_mg_b(k,l) * ddx2_mg(l) * & 331 333 ( p_mg(k,j,i+1) + p_mg(k,j,i-1) ) & 332 - rho_air_mg (k,l) * ddy2_mg(l) * &334 - rho_air_mg_b(k,l) * ddy2_mg(l) * & 333 335 ( p_mg(k,j+1,i) + p_mg(k,j-1,i) ) & 334 336 - f2_mg_b(k,l) * p_mg(kp1,j,i) & … … 761 763 kp1 = k-ind_even_odd 762 764 p_mg(k,j,i) = 1.0_wp / f1_mg_b(k,l) * ( & 763 rho_air_mg (k,l) * ddx2_mg(l) * &765 rho_air_mg_b(k,l) * ddx2_mg(l) * & 764 766 ( p_mg(k,j,i+1) + p_mg(k,j,i-1) ) & 765 + rho_air_mg (k,l) * ddy2_mg(l) * &767 + rho_air_mg_b(k,l) * ddy2_mg(l) * & 766 768 ( p_mg(k,j+1,i) + p_mg(k,j-1,i) ) & 767 769 + f2_mg_b(k,l) * p_mg(kp1,j,i) & … … 780 782 kp1 = k-ind_even_odd 781 783 p_mg(k,j,i) = 1.0_wp / f1_mg_b(k,l) * ( & 782 rho_air_mg (k,l) * ddx2_mg(l) * &784 rho_air_mg_b(k,l) * ddx2_mg(l) * & 783 785 ( p_mg(k,j,i+1) + p_mg(k,j,i-1) ) & 784 + rho_air_mg (k,l) * ddy2_mg(l) * &786 + rho_air_mg_b(k,l) * ddy2_mg(l) * & 785 787 ( p_mg(k,j+1,i) + p_mg(k,j-1,i) ) & 786 788 + f2_mg_b(k,l) * p_mg(kp1,j,i) & … … 799 801 kp1 = k+ind_even_odd+1 800 802 p_mg(k,j,i) = 1.0_wp / f1_mg_b(k,l) * ( & 801 rho_air_mg (k,l) * ddx2_mg(l) * &803 rho_air_mg_b(k,l) * ddx2_mg(l) * & 802 804 ( p_mg(k,j,i+1) + p_mg(k,j,i-1) ) & 803 + rho_air_mg (k,l) * ddy2_mg(l) * &805 + rho_air_mg_b(k,l) * ddy2_mg(l) * & 804 806 ( p_mg(k,j+1,i) + p_mg(k,j-1,i) ) & 805 807 + f2_mg_b(k,l) * p_mg(kp1,j,i) & … … 818 820 kp1 = k+ind_even_odd+1 819 821 p_mg(k,j,i) = 1.0_wp / f1_mg_b(k,l) * ( & 820 rho_air_mg (k,l) * ddx2_mg(l) * &822 rho_air_mg_b(k,l) * ddx2_mg(l) * & 821 823 ( p_mg(k,j,i+1) + p_mg(k,j,i-1) ) & 822 + rho_air_mg (k,l) * ddy2_mg(l) * &824 + rho_air_mg_b(k,l) * ddy2_mg(l) * & 823 825 ( p_mg(k,j+1,i) + p_mg(k,j-1,i) ) & 824 826 + f2_mg_b(k,l) * p_mg(kp1,j,i) & … … 849 851 j = jj 850 852 p_mg(k,j,i) = 1.0_wp / f1_mg_b(k,l) * ( & 851 rho_air_mg (k,l) * ddx2_mg(l) * &853 rho_air_mg_b(k,l) * ddx2_mg(l) * & 852 854 ( p_mg(k,j,i+1) + p_mg(k,j,i-1) ) & 853 + rho_air_mg (k,l) * ddy2_mg(l) * &855 + rho_air_mg_b(k,l) * ddy2_mg(l) * & 854 856 ( p_mg(k,j+1,i) + p_mg(k,j-1,i) ) & 855 857 + f2_mg_b(k,l) * p_mg(kp1,j,i) & … … 858 860 j = jj+2 859 861 p_mg(k,j,i) = 1.0_wp / f1_mg_b(k,l) * ( & 860 rho_air_mg (k,l) * ddx2_mg(l) * &862 rho_air_mg_b(k,l) * ddx2_mg(l) * & 861 863 ( p_mg(k,j,i+1) + p_mg(k,j,i-1) ) & 862 + rho_air_mg (k,l) * ddy2_mg(l) * &864 + rho_air_mg_b(k,l) * ddy2_mg(l) * & 863 865 ( p_mg(k,j+1,i) + p_mg(k,j-1,i) ) & 864 866 + f2_mg_b(k,l) * p_mg(kp1,j,i) & … … 875 877 j = jj 876 878 p_mg(k,j,i) = 1.0_wp / f1_mg_b(k,l) * ( & 877 rho_air_mg (k,l) * ddx2_mg(l) * &879 rho_air_mg_b(k,l) * ddx2_mg(l) * & 878 880 ( p_mg(k,j,i+1) + p_mg(k,j,i-1) ) & 879 + rho_air_mg (k,l) * ddy2_mg(l) * &881 + rho_air_mg_b(k,l) * ddy2_mg(l) * & 880 882 ( p_mg(k,j+1,i) + p_mg(k,j-1,i) ) & 881 883 + f2_mg_b(k,l) * p_mg(kp1,j,i) & … … 884 886 j = jj+2 885 887 p_mg(k,j,i) = 1.0_wp / f1_mg_b(k,l) * ( & 886 rho_air_mg (k,l) * ddx2_mg(l) * &888 rho_air_mg_b(k,l) * ddx2_mg(l) * & 887 889 ( p_mg(k,j,i+1) + p_mg(k,j,i-1) ) & 888 + rho_air_mg (k,l) * ddy2_mg(l) * &890 + rho_air_mg_b(k,l) * ddy2_mg(l) * & 889 891 ( p_mg(k,j+1,i) + p_mg(k,j-1,i) ) & 890 892 + f2_mg_b(k,l) * p_mg(kp1,j,i) & … … 901 903 j = jj 902 904 p_mg(k,j,i) = 1.0_wp / f1_mg_b(k,l) * ( & 903 rho_air_mg (k,l) * ddx2_mg(l) * &905 rho_air_mg_b(k,l) * ddx2_mg(l) * & 904 906 ( p_mg(k,j,i+1) + p_mg(k,j,i-1) ) & 905 + rho_air_mg (k,l) * ddy2_mg(l) * &907 + rho_air_mg_b(k,l) * ddy2_mg(l) * & 906 908 ( p_mg(k,j+1,i) + p_mg(k,j-1,i) ) & 907 909 + f2_mg_b(k,l) * p_mg(kp1,j,i) & … … 910 912 j = jj+2 911 913 p_mg(k,j,i) = 1.0_wp / f1_mg_b(k,l) * ( & 912 rho_air_mg (k,l) * ddx2_mg(l) * &914 rho_air_mg_b(k,l) * ddx2_mg(l) * & 913 915 ( p_mg(k,j,i+1) + p_mg(k,j,i-1) ) & 914 + rho_air_mg (k,l) * ddy2_mg(l) * &916 + rho_air_mg_b(k,l) * ddy2_mg(l) * & 915 917 ( p_mg(k,j+1,i) + p_mg(k,j-1,i) ) & 916 918 + f2_mg_b(k,l) * p_mg(kp1,j,i) & … … 927 929 j = jj 928 930 p_mg(k,j,i) = 1.0_wp / f1_mg_b(k,l) * ( & 929 rho_air_mg (k,l) * ddx2_mg(l) * &931 rho_air_mg_b(k,l) * ddx2_mg(l) * & 930 932 ( p_mg(k,j,i+1) + p_mg(k,j,i-1) ) & 931 + rho_air_mg (k,l) * ddy2_mg(l) * &933 + rho_air_mg_b(k,l) * ddy2_mg(l) * & 932 934 ( p_mg(k,j+1,i) + p_mg(k,j-1,i) ) & 933 935 + f2_mg_b(k,l) * p_mg(kp1,j,i) & … … 936 938 j = jj+2 937 939 p_mg(k,j,i) = 1.0_wp / f1_mg_b(k,l) * ( & 938 rho_air_mg (k,l) * ddx2_mg(l) * &940 rho_air_mg_b(k,l) * ddx2_mg(l) * & 939 941 ( p_mg(k,j,i+1) + p_mg(k,j,i-1) ) & 940 + rho_air_mg (k,l) * ddy2_mg(l) * &942 + rho_air_mg_b(k,l) * ddy2_mg(l) * & 941 943 ( p_mg(k,j+1,i) + p_mg(k,j-1,i) ) & 942 944 + f2_mg_b(k,l) * p_mg(kp1,j,i) & … … 1753 1755 1754 1756 USE arrays_3d, & 1755 ONLY: f1_mg, f2_mg, f3_mg 1757 ONLY: f1_mg, f2_mg, f3_mg, rho_air_mg 1756 1758 1757 1759 USE control_parameters, & … … 1779 1781 ALLOCATE( f1_mg_b(nzb:nzt+1,maximum_grid_level), & 1780 1782 f2_mg_b(nzb:nzt+1,maximum_grid_level), & 1781 f3_mg_b(nzb:nzt+1,maximum_grid_level) ) 1783 f3_mg_b(nzb:nzt+1,maximum_grid_level), & 1784 rho_air_mg_b(nzb:nzt+1,maximum_grid_level) ) 1782 1785 1783 1786 ! … … 1800 1803 f3_mg_b(nzb:nzt_mg(grid_level)+1,l), & 1801 1804 l ) 1805 CALL sort_k_to_even_odd_blocks( rho_air_mg(nzb+1:nzt_mg(grid_level),l), & 1806 rho_air_mg_b(nzb:nzt_mg(grid_level)+1,l), & 1807 l ) 1802 1808 ENDDO 1803 1809
Note: See TracChangeset
for help on using the changeset viewer.