Ignore:
Timestamp:
Oct 26, 2016 11:15:40 AM (8 years ago)
Author:
knoop
Message:

Anelastic approximation implemented

File:
1 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk/SOURCE/poismg_noopt.f90

    r2022 r2037  
    2020! Current revisions:
    2121! -----------------
    22 !
     22! Anelastic approximation implemented
    2323!
    2424! Former revisions:
     
    268268
    269269    USE arrays_3d,                                                             &
    270         ONLY:  f1_mg, f2_mg, f3_mg
     270        ONLY:  f1_mg, f2_mg, f3_mg, rho_air_mg
    271271
    272272    USE control_parameters,                                                    &
     
    339339          DO  k = nzb+1, nzt_mg(l)
    340340             r(k,j,i) = f_mg(k,j,i)                                         &
    341                         - ddx2_mg(l) *                                      &
     341                        - rho_air_mg(k,l) * ddx2_mg(l) *                    &
    342342                            ( p_mg(k,j,i+1) + IBITS( flags(k,j,i), 5, 1 ) * &
    343343                                          ( p_mg(k,j,i) - p_mg(k,j,i+1) ) + &
    344344                              p_mg(k,j,i-1) + IBITS( flags(k,j,i), 4, 1 ) * &
    345345                                          ( p_mg(k,j,i) - p_mg(k,j,i-1) ) ) &
    346                         - ddy2_mg(l) *                                      &
     346                        - rho_air_mg(k,l) * ddy2_mg(l) *                    &
    347347                            ( p_mg(k,j+1,i) + IBITS( flags(k,j,i), 3, 1 ) * &
    348348                                          ( p_mg(k,j,i) - p_mg(k,j+1,i) ) + &
     
    745745
    746746    USE arrays_3d,                                                             &
    747         ONLY:  f1_mg, f2_mg, f3_mg
     747        ONLY:  f1_mg, f2_mg, f3_mg, rho_air_mg
    748748
    749749    USE control_parameters,                                                    &
     
    846846
    847847                      p_mg(k,j,i) = 1.0_wp / f1_mg(k,l) * (                    &
    848                              ddx2_mg(l) *                                      &
     848                             rho_air_mg(k,l) * ddx2_mg(l) *                    &
    849849                               ( p_mg(k,j,i+1) + IBITS( flags(k,j,i), 5, 1 ) * &
    850850                                             ( p_mg(k,j,i) - p_mg(k,j,i+1) ) + &
    851851                                 p_mg(k,j,i-1) + IBITS( flags(k,j,i), 4, 1 ) * &
    852852                                             ( p_mg(k,j,i) - p_mg(k,j,i-1) ) ) &
    853                            + ddy2_mg(l) *                                      &
     853                           + rho_air_mg(k,l) * ddy2_mg(l) *                    &
    854854                               ( p_mg(k,j+1,i) + IBITS( flags(k,j,i), 3, 1 ) * &
    855855                                             ( p_mg(k,j,i) - p_mg(k,j+1,i) ) + &
     
    869869                   DO  k = nzb+1, nzt_mg(l), 2
    870870                      p_mg(k,j,i) = 1.0_wp / f1_mg(k,l) * (                    &
    871                              ddx2_mg(l) *                                      &
     871                             rho_air_mg(k,l) * ddx2_mg(l) *                    &
    872872                               ( p_mg(k,j,i+1) + IBITS( flags(k,j,i), 5, 1 ) * &
    873873                                             ( p_mg(k,j,i) - p_mg(k,j,i+1) ) + &
    874874                                 p_mg(k,j,i-1) + IBITS( flags(k,j,i), 4, 1 ) * &
    875875                                             ( p_mg(k,j,i) - p_mg(k,j,i-1) ) ) &
    876                            + ddy2_mg(l) *                                      &
     876                           + rho_air_mg(k,l) * ddy2_mg(l) *                    &
    877877                               ( p_mg(k,j+1,i) + IBITS( flags(k,j,i), 3, 1 ) * &
    878878                                             ( p_mg(k,j,i) - p_mg(k,j+1,i) ) + &
     
    892892                   DO  k = nzb+2, nzt_mg(l), 2
    893893                      p_mg(k,j,i) = 1.0_wp / f1_mg(k,l) * (                    &
    894                              ddx2_mg(l) *                                      &
     894                             rho_air_mg(k,l) * ddx2_mg(l) *                    &
    895895                               ( p_mg(k,j,i+1) + IBITS( flags(k,j,i), 5, 1 ) * &
    896896                                             ( p_mg(k,j,i) - p_mg(k,j,i+1) ) + &
    897897                                 p_mg(k,j,i-1) + IBITS( flags(k,j,i), 4, 1 ) * &
    898898                                             ( p_mg(k,j,i) - p_mg(k,j,i-1) ) ) &
    899                            + ddy2_mg(l) *                                      &
     899                           + rho_air_mg(k,l) * ddy2_mg(l) *                    &
    900900                               ( p_mg(k,j+1,i) + IBITS( flags(k,j,i), 3, 1 ) * &
    901901                                             ( p_mg(k,j,i) - p_mg(k,j+1,i) ) + &
     
    915915                   DO  k = nzb+2, nzt_mg(l), 2
    916916                      p_mg(k,j,i) = 1.0_wp / f1_mg(k,l) * (                    &
    917                              ddx2_mg(l) *                                      &
     917                             rho_air_mg(k,l) * ddx2_mg(l) *                    &
    918918                               ( p_mg(k,j,i+1) + IBITS( flags(k,j,i), 5, 1 ) * &
    919919                                             ( p_mg(k,j,i) - p_mg(k,j,i+1) ) + &
    920920                                 p_mg(k,j,i-1) + IBITS( flags(k,j,i), 4, 1 ) * &
    921921                                             ( p_mg(k,j,i) - p_mg(k,j,i-1) ) ) &
    922                            + ddy2_mg(l) *                                      &
     922                           + rho_air_mg(k,l) * ddy2_mg(l) *                    &
    923923                               ( p_mg(k,j+1,i) + IBITS( flags(k,j,i), 3, 1 ) * &
    924924                                             ( p_mg(k,j,i) - p_mg(k,j+1,i) ) + &
     
    947947                      j = jj
    948948                      p_mg(k,j,i) = 1.0_wp / f1_mg(k,l) * (                    &
    949                              ddx2_mg(l) *                                      &
     949                             rho_air_mg(k,l) * ddx2_mg(l) *                    &
    950950                               ( p_mg(k,j,i+1) + IBITS( flags(k,j,i), 5, 1 ) * &
    951951                                             ( p_mg(k,j,i) - p_mg(k,j,i+1) ) + &
    952952                                 p_mg(k,j,i-1) + IBITS( flags(k,j,i), 4, 1 ) * &
    953953                                             ( p_mg(k,j,i) - p_mg(k,j,i-1) ) ) &
    954                            + ddy2_mg(l) *                                      &
     954                           + rho_air_mg(k,l) * ddy2_mg(l) *                    &
    955955                               ( p_mg(k,j+1,i) + IBITS( flags(k,j,i), 3, 1 ) * &
    956956                                             ( p_mg(k,j,i) - p_mg(k,j+1,i) ) + &
     
    964964                      j = jj+2
    965965                      p_mg(k,j,i) = 1.0_wp / f1_mg(k,l) * (                    &
    966                              ddx2_mg(l) *                                      &
     966                             rho_air_mg(k,l) * ddx2_mg(l) *                    &
    967967                               ( p_mg(k,j,i+1) + IBITS( flags(k,j,i), 5, 1 ) * &
    968968                                             ( p_mg(k,j,i) - p_mg(k,j,i+1) ) + &
    969969                                 p_mg(k,j,i-1) + IBITS( flags(k,j,i), 4, 1 ) * &
    970970                                             ( p_mg(k,j,i) - p_mg(k,j,i-1) ) ) &
    971                            + ddy2_mg(l) *                                      &
     971                           + rho_air_mg(k,l) * ddy2_mg(l) *                    &
    972972                               ( p_mg(k,j+1,i) + IBITS( flags(k,j,i), 3, 1 ) * &
    973973                                             ( p_mg(k,j,i) - p_mg(k,j+1,i) ) + &
     
    986986                      j =jj
    987987                      p_mg(k,j,i) = 1.0_wp / f1_mg(k,l) * (                    &
    988                              ddx2_mg(l) *                                      &
     988                             rho_air_mg(k,l) * ddx2_mg(l) *                    &
    989989                               ( p_mg(k,j,i+1) + IBITS( flags(k,j,i), 5, 1 ) * &
    990990                                             ( p_mg(k,j,i) - p_mg(k,j,i+1) ) + &
    991991                                 p_mg(k,j,i-1) + IBITS( flags(k,j,i), 4, 1 ) * &
    992992                                             ( p_mg(k,j,i) - p_mg(k,j,i-1) ) ) &
    993                            + ddy2_mg(l) *                                      &
     993                           + rho_air_mg(k,l) * ddy2_mg(l) *                    &
    994994                               ( p_mg(k,j+1,i) + IBITS( flags(k,j,i), 3, 1 ) * &
    995995                                             ( p_mg(k,j,i) - p_mg(k,j+1,i) ) + &
     
    10031003                      j = jj+2
    10041004                      p_mg(k,j,i) = 1.0_wp / f1_mg(k,l) * (                    &
    1005                              ddx2_mg(l) *                                      &
     1005                             rho_air_mg(k,l) * ddx2_mg(l) *                    &
    10061006                               ( p_mg(k,j,i+1) + IBITS( flags(k,j,i), 5, 1 ) * &
    10071007                                             ( p_mg(k,j,i) - p_mg(k,j,i+1) ) + &
    10081008                                 p_mg(k,j,i-1) + IBITS( flags(k,j,i), 4, 1 ) * &
    10091009                                             ( p_mg(k,j,i) - p_mg(k,j,i-1) ) ) &
    1010                            + ddy2_mg(l) *                                      &
     1010                           + rho_air_mg(k,l) * ddy2_mg(l) *                    &
    10111011                               ( p_mg(k,j+1,i) + IBITS( flags(k,j,i), 3, 1 ) * &
    10121012                                             ( p_mg(k,j,i) - p_mg(k,j+1,i) ) + &
     
    10251025                      j =jj
    10261026                      p_mg(k,j,i) = 1.0_wp / f1_mg(k,l) * (                    &
    1027                              ddx2_mg(l) *                                      &
     1027                             rho_air_mg(k,l) * ddx2_mg(l) *                    &
    10281028                               ( p_mg(k,j,i+1) + IBITS( flags(k,j,i), 5, 1 ) * &
    10291029                                             ( p_mg(k,j,i) - p_mg(k,j,i+1) ) + &
    10301030                                 p_mg(k,j,i-1) + IBITS( flags(k,j,i), 4, 1 ) * &
    10311031                                             ( p_mg(k,j,i) - p_mg(k,j,i-1) ) ) &
    1032                            + ddy2_mg(l) *                                      &
     1032                           + rho_air_mg(k,l) * ddy2_mg(l) *                    &
    10331033                               ( p_mg(k,j+1,i) + IBITS( flags(k,j,i), 3, 1 ) * &
    10341034                                             ( p_mg(k,j,i) - p_mg(k,j+1,i) ) + &
     
    10421042                      j = jj+2
    10431043                      p_mg(k,j,i) = 1.0_wp / f1_mg(k,l) * (                    &
    1044                              ddx2_mg(l) *                                      &
     1044                             rho_air_mg(k,l) * ddx2_mg(l) *                    &
    10451045                               ( p_mg(k,j,i+1) + IBITS( flags(k,j,i), 5, 1 ) * &
    10461046                                             ( p_mg(k,j,i) - p_mg(k,j,i+1) ) + &
    10471047                                 p_mg(k,j,i-1) + IBITS( flags(k,j,i), 4, 1 ) * &
    10481048                                             ( p_mg(k,j,i) - p_mg(k,j,i-1) ) ) &
    1049                            + ddy2_mg(l) *                                      &
     1049                           + rho_air_mg(k,l) * ddy2_mg(l) *                    &
    10501050                               ( p_mg(k,j+1,i) + IBITS( flags(k,j,i), 3, 1 ) * &
    10511051                                             ( p_mg(k,j,i) - p_mg(k,j+1,i) ) + &
     
    10641064                      j =jj
    10651065                      p_mg(k,j,i) = 1.0_wp / f1_mg(k,l) * (                    &
    1066                              ddx2_mg(l) *                                      &
     1066                             rho_air_mg(k,l) * ddx2_mg(l) *                    &
    10671067                               ( p_mg(k,j,i+1) + IBITS( flags(k,j,i), 5, 1 ) * &
    10681068                                             ( p_mg(k,j,i) - p_mg(k,j,i+1) ) + &
    10691069                                 p_mg(k,j,i-1) + IBITS( flags(k,j,i), 4, 1 ) * &
    10701070                                             ( p_mg(k,j,i) - p_mg(k,j,i-1) ) ) &
    1071                            + ddy2_mg(l) *                                      &
     1071                           + rho_air_mg(k,l) * ddy2_mg(l) *                    &
    10721072                               ( p_mg(k,j+1,i) + IBITS( flags(k,j,i), 3, 1 ) * &
    10731073                                             ( p_mg(k,j,i) - p_mg(k,j+1,i) ) + &
     
    10811081                      j = jj+2
    10821082                      p_mg(k,j,i) = 1.0_wp / f1_mg(k,l) * (                    &
    1083                              ddx2_mg(l) *                                      &
     1083                             rho_air_mg(k,l) * ddx2_mg(l) *                    &
    10841084                               ( p_mg(k,j,i+1) + IBITS( flags(k,j,i), 5, 1 ) * &
    10851085                                             ( p_mg(k,j,i) - p_mg(k,j,i+1) ) + &
    10861086                                 p_mg(k,j,i-1) + IBITS( flags(k,j,i), 4, 1 ) * &
    10871087                                             ( p_mg(k,j,i) - p_mg(k,j,i-1) ) ) &
    1088                            + ddy2_mg(l) *                                      &
     1088                           + rho_air_mg(k,l) * ddy2_mg(l) *                    &
    10891089                               ( p_mg(k,j+1,i) + IBITS( flags(k,j,i), 3, 1 ) * &
    10901090                                             ( p_mg(k,j,i) - p_mg(k,j+1,i) ) + &
Note: See TracChangeset for help on using the changeset viewer.