Ignore:
Timestamp:
Sep 13, 2012 2:08:46 PM (12 years ago)
Author:
raasch
Message:

leapfrog timestep scheme and upstream-spline advection scheme completely removed from the code,
reading of dt_fixed from restart file removed

File:
1 edited

Legend:

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

    r997 r1001  
    77! Current revisions:
    88! ------------------
    9 !
     9! all actions concerning leapfrog scheme removed
    1010!
    1111! Former revisions:
     
    225225    ALLOCATE( ptdf_x(nxlg:nxrg), ptdf_y(nysg:nyng) )
    226226
    227     ALLOCATE( rif_1(nysg:nyng,nxlg:nxrg), shf_1(nysg:nyng,nxlg:nxrg), &
    228               ts(nysg:nyng,nxlg:nxrg), tswst_1(nysg:nyng,nxlg:nxrg),  &
    229               us(nysg:nyng,nxlg:nxrg), usws_1(nysg:nyng,nxlg:nxrg),   &
    230               uswst_1(nysg:nyng,nxlg:nxrg),                           &
    231               vsws_1(nysg:nyng,nxlg:nxrg),                            &
    232               vswst_1(nysg:nyng,nxlg:nxrg), z0(nysg:nyng,nxlg:nxrg),  &
     227    ALLOCATE( rif(nysg:nyng,nxlg:nxrg), shf(nysg:nyng,nxlg:nxrg),     &
     228              ts(nysg:nyng,nxlg:nxrg), tswst(nysg:nyng,nxlg:nxrg),    &
     229              us(nysg:nyng,nxlg:nxrg), usws(nysg:nyng,nxlg:nxrg),     &
     230              uswst(nysg:nyng,nxlg:nxrg), vsws(nysg:nyng,nxlg:nxrg),  &
     231              vswst(nysg:nyng,nxlg:nxrg), z0(nysg:nyng,nxlg:nxrg),    &
    233232              z0h(nysg:nyng,nxlg:nxrg) )
    234 
    235     IF ( timestep_scheme(1:5) /= 'runge' )  THEN
    236 !
    237 !--    Leapfrog scheme needs two timelevels of diffusion quantities
    238        ALLOCATE( rif_2(nysg:nyng,nxlg:nxrg),   &
    239                  shf_2(nysg:nyng,nxlg:nxrg),   &
    240                  tswst_2(nysg:nyng,nxlg:nxrg), &
    241                  usws_2(nysg:nyng,nxlg:nxrg),  &
    242                  uswst_2(nysg:nyng,nxlg:nxrg), &
    243                  vswst_2(nysg:nyng,nxlg:nxrg), &
    244                  vsws_2(nysg:nyng,nxlg:nxrg) )
    245     ENDIF
    246233
    247234    ALLOCATE( d(nzb+1:nzta,nys:nyna,nxl:nxra),     &
     
    249236              e_2(nzb:nzt+1,nysg:nyng,nxlg:nxrg),  &
    250237              e_3(nzb:nzt+1,nysg:nyng,nxlg:nxrg),  &
    251               kh_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &
    252               km_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &
     238              kh(nzb:nzt+1,nysg:nyng,nxlg:nxrg),  &
     239              km(nzb:nzt+1,nysg:nyng,nxlg:nxrg),  &
    253240              p(nzb:nzt+1,nysg:nyng,nxlg:nxrg),    &
    254241              pt_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &
     
    278265    ENDIF
    279266
    280     IF ( timestep_scheme(1:5) /= 'runge' )  THEN
    281        ALLOCATE( kh_2(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &
    282                  km_2(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    283     ENDIF
    284 
    285267    IF ( humidity  .OR.  passive_scalar ) THEN
    286268!
    287269!--    2D-humidity/scalar arrays
    288        ALLOCATE ( qs(nysg:nyng,nxlg:nxrg),     &
    289                   qsws_1(nysg:nyng,nxlg:nxrg), &
    290                   qswst_1(nysg:nyng,nxlg:nxrg) )
    291 
    292        IF ( timestep_scheme(1:5) /= 'runge' )  THEN
    293           ALLOCATE( qsws_2(nysg:nyng,nxlg:nxrg), &
    294                     qswst_2(nysg:nyng,nxlg:nxrg) )
    295        ENDIF
     270       ALLOCATE ( qs(nysg:nyng,nxlg:nxrg),   &
     271                  qsws(nysg:nyng,nxlg:nxrg), &
     272                  qswst(nysg:nyng,nxlg:nxrg) )
     273
    296274!
    297275!--    3D-humidity/scalar arrays
     
    304282       IF ( humidity )  THEN
    305283          ALLOCATE( vpt_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    306 
    307           IF ( timestep_scheme(1:5) /= 'runge' )  THEN
    308              ALLOCATE( vpt_2(nzb:nzt+1,nysg:nyng,nxlg:nxrg) )
    309           ENDIF
    310284
    311285          IF ( cloud_physics ) THEN
     
    334308
    335309    IF ( ocean )  THEN
    336        ALLOCATE( saswsb_1(nysg:nyng,nxlg:nxrg), &
    337                  saswst_1(nysg:nyng,nxlg:nxrg) )
     310       ALLOCATE( saswsb(nysg:nyng,nxlg:nxrg), &
     311                 saswst(nysg:nyng,nxlg:nxrg) )
    338312       ALLOCATE( prho_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg), &
    339313                 rho_1(nzb:nzt+1,nysg:nyng,nxlg:nxrg),  &
     
    434408!
    435409!-- Initial assignment of the pointers
    436     IF ( timestep_scheme(1:5) /= 'runge' )  THEN
    437 
    438        rif_m   => rif_1;    rif   => rif_2
    439        shf_m   => shf_1;    shf   => shf_2
    440        tswst_m => tswst_1;  tswst => tswst_2
    441        usws_m  => usws_1;   usws  => usws_2
    442        uswst_m => uswst_1;  uswst => uswst_2
    443        vsws_m  => vsws_1;   vsws  => vsws_2
    444        vswst_m => vswst_1;  vswst => vswst_2
    445        e_m  => e_1;   e  => e_2;   e_p  => e_3;   te_m  => e_3
    446        kh_m => kh_1;  kh => kh_2
    447        km_m => km_1;  km => km_2
    448        pt_m => pt_1;  pt => pt_2;  pt_p => pt_3;  tpt_m => pt_3
    449        u_m  => u_1;   u  => u_2;   u_p  => u_3;   tu_m  => u_3
    450        v_m  => v_1;   v  => v_2;   v_p  => v_3;   tv_m  => v_3
    451        w_m  => w_1;   w  => w_2;   w_p  => w_3;   tw_m  => w_3
    452 
    453        IF ( humidity  .OR.  passive_scalar )  THEN
    454           qsws_m  => qsws_1;   qsws  => qsws_2
    455           qswst_m => qswst_1;  qswst => qswst_2
    456           q_m    => q_1;     q    => q_2;     q_p => q_3;     tq_m => q_3
    457           IF ( humidity )        vpt_m  => vpt_1;   vpt  => vpt_2
    458           IF ( cloud_physics )   ql   => ql_1
    459           IF ( cloud_droplets )  THEN
    460              ql   => ql_1
    461              ql_c => ql_2
    462           ENDIF
    463        ENDIF
    464 
    465     ELSE
    466 
    467        rif   => rif_1
    468        shf   => shf_1
    469        tswst => tswst_1
    470        usws  => usws_1
    471        uswst => uswst_1
    472        vsws  => vsws_1
    473        vswst => vswst_1
    474        e     => e_1;   e_p  => e_2;   te_m  => e_3;   e_m  => e_3
    475        kh    => kh_1
    476        km    => km_1
    477        pt    => pt_1;  pt_p => pt_2;  tpt_m => pt_3;  pt_m => pt_3
    478        u     => u_1;   u_p  => u_2;   tu_m  => u_3;   u_m  => u_3
    479        v     => v_1;   v_p  => v_2;   tv_m  => v_3;   v_m  => v_3
    480        w     => w_1;   w_p  => w_2;   tw_m  => w_3;   w_m  => w_3
    481 
    482        IF ( humidity  .OR.  passive_scalar )  THEN
    483           qsws   => qsws_1
    484           qswst  => qswst_1
    485           q      => q_1;     q_p  => q_2;     tq_m  => q_3;    q_m => q_3
    486           IF ( humidity )        vpt  => vpt_1
    487           IF ( cloud_physics )   ql   => ql_1
    488           IF ( cloud_droplets )  THEN
    489              ql   => ql_1
    490              ql_c => ql_2
    491           ENDIF
    492        ENDIF
    493 
    494        IF ( ocean )  THEN
    495           saswsb => saswsb_1
    496           saswst => saswst_1
    497           sa     => sa_1;    sa_p => sa_2;    tsa_m => sa_3
    498        ENDIF
    499 
    500     ENDIF
    501    
     410    e  => e_1;   e_p  => e_2;   te_m  => e_3
     411    pt => pt_1;  pt_p => pt_2;  tpt_m => pt_3
     412    u  => u_1;   u_p  => u_2;   tu_m  => u_3
     413    v  => v_1;   v_p  => v_2;   tv_m  => v_3
     414    w  => w_1;   w_p  => w_2;   tw_m  => w_3
     415
     416    IF ( humidity  .OR.  passive_scalar )  THEN
     417       q => q_1;  q_p => q_2;  tq_m => q_3
     418       IF ( humidity )        vpt  => vpt_1
     419       IF ( cloud_physics )   ql   => ql_1
     420       IF ( cloud_droplets )  THEN
     421          ql   => ql_1
     422          ql_c => ql_2
     423       ENDIF
     424    ENDIF
     425
     426    IF ( ocean )  THEN
     427       sa => sa_1;  sa_p => sa_2;  tsa_m => sa_3
     428    ENDIF
     429
    502430!
    503431!-- Allocate arrays containing the RK coefficient for calculation of
     
    785713                ENDIF
    786714             ENDIF
    787              IF ( ASSOCIATED( shf_m ) )  shf_m = shf
    788715          ENDIF
    789716
     
    806733                   ENDDO
    807734                ENDIF
    808                 IF ( ASSOCIATED( qsws_m ) )  qsws_m = qsws
    809735             ENDIF
    810736          ENDIF
     
    822748!--          Heat flux is prescribed
    823749             tswst = top_heatflux
    824              IF ( ASSOCIATED( tswst_m ) )  tswst_m = tswst
    825 
    826              IF ( humidity  .OR.  passive_scalar )  THEN
    827                 qswst = 0.0
    828                 IF ( ASSOCIATED( qswst_m ) )  qswst_m = qswst
    829              ENDIF
     750
     751             IF ( humidity  .OR.  passive_scalar )  qswst = 0.0
    830752
    831753             IF ( ocean )  THEN
     
    839761          IF ( coupling_mode == 'ocean_to_atmosphere' )  THEN
    840762             tswst = 0.0
    841              IF ( ASSOCIATED( tswst_m ) )  tswst_m = tswst
    842763          ENDIF
    843764
     
    859780!--          value in the course of the first few time steps.
    860781             shf   = 0.0
    861              IF ( ASSOCIATED( shf_m ) )  shf_m = 0.0
    862782          ENDIF
    863783
    864784          IF ( humidity  .OR.  passive_scalar )  THEN
    865              IF ( .NOT. constant_waterflux )  THEN
    866                 qsws   = 0.0
    867                 IF ( ASSOCIATED( qsws_m ) )   qsws_m = 0.0
    868              ENDIF
     785             IF ( .NOT. constant_waterflux )  qsws   = 0.0
    869786          ENDIF
    870787
     
    923840!
    924841!--    Initialize old and new time levels.
    925        IF ( timestep_scheme(1:5) /= 'runge' )  THEN
    926           e_m = e; pt_m = pt; u_m = u; v_m = v; w_m = w; kh_m = kh; km_m = km
    927        ELSE
    928           te_m = 0.0; tpt_m = 0.0; tu_m = 0.0; tv_m = 0.0; tw_m = 0.0
    929        ENDIF
     842       te_m = 0.0; tpt_m = 0.0; tu_m = 0.0; tv_m = 0.0; tw_m = 0.0
    930843       e_p = e; pt_p = pt; u_p = u; v_p = v; w_p = w
    931844
    932845       IF ( humidity  .OR.  passive_scalar )  THEN
    933           IF ( ASSOCIATED( q_m ) )  q_m = q
    934           IF ( timestep_scheme(1:5) == 'runge' )  tq_m = 0.0
     846          tq_m = 0.0
    935847          q_p = q
    936           IF ( humidity  .AND.  ASSOCIATED( vpt_m ) )  vpt_m = vpt
    937848       ENDIF
    938849
     
    1080991!--       Other scalars (pt, q, s, km, kh, p, sa, ...) are ignored at present,
    1081992!--       maybe revise later.
    1082           IF ( timestep_scheme(1:5) == 'runge' )  THEN
    1083              DO  i = nxlg, nxrg
    1084                 DO  j = nysg, nyng
    1085                    u  (nzb:nzb_u_inner(j,i),j,i)   = 0.0
    1086                    v  (nzb:nzb_v_inner(j,i),j,i)   = 0.0
    1087                    w  (nzb:nzb_w_inner(j,i),j,i)   = 0.0
    1088                    e  (nzb:nzb_w_inner(j,i),j,i)   = 0.0
    1089                    u_m(nzb:nzb_u_inner(j,i),j,i)   = 0.0
    1090                    v_m(nzb:nzb_v_inner(j,i),j,i)   = 0.0
    1091                    w_m(nzb:nzb_w_inner(j,i),j,i)   = 0.0
    1092                    e_m(nzb:nzb_w_inner(j,i),j,i)   = 0.0
    1093                    tu_m(nzb:nzb_u_inner(j,i),j,i)  = 0.0
    1094                    tv_m(nzb:nzb_v_inner(j,i),j,i)  = 0.0
    1095                    tw_m(nzb:nzb_w_inner(j,i),j,i)  = 0.0
    1096                    te_m(nzb:nzb_w_inner(j,i),j,i)  = 0.0
    1097                    tpt_m(nzb:nzb_w_inner(j,i),j,i) = 0.0
    1098                 ENDDO
    1099              ENDDO
    1100           ELSE
    1101              DO  i = nxlg, nxrg
    1102                 DO  j = nysg, nyng
    1103                    u  (nzb:nzb_u_inner(j,i),j,i) = 0.0
    1104                    v  (nzb:nzb_v_inner(j,i),j,i) = 0.0
    1105                    w  (nzb:nzb_w_inner(j,i),j,i) = 0.0
    1106                    e  (nzb:nzb_w_inner(j,i),j,i) = 0.0
    1107                    u_m(nzb:nzb_u_inner(j,i),j,i) = 0.0
    1108                    v_m(nzb:nzb_v_inner(j,i),j,i) = 0.0
    1109                    w_m(nzb:nzb_w_inner(j,i),j,i) = 0.0
    1110                    e_m(nzb:nzb_w_inner(j,i),j,i) = 0.0
    1111                    u_p(nzb:nzb_u_inner(j,i),j,i) = 0.0
    1112                    v_p(nzb:nzb_v_inner(j,i),j,i) = 0.0
    1113                    w_p(nzb:nzb_w_inner(j,i),j,i) = 0.0
    1114                    e_p(nzb:nzb_w_inner(j,i),j,i) = 0.0
    1115                 ENDDO
    1116              ENDDO
    1117           ENDIF
     993          DO  i = nxlg, nxrg
     994             DO  j = nysg, nyng
     995                u  (nzb:nzb_u_inner(j,i),j,i)   = 0.0
     996                v  (nzb:nzb_v_inner(j,i),j,i)   = 0.0
     997                w  (nzb:nzb_w_inner(j,i),j,i)   = 0.0
     998                e  (nzb:nzb_w_inner(j,i),j,i)   = 0.0
     999                tu_m(nzb:nzb_u_inner(j,i),j,i)  = 0.0
     1000                tv_m(nzb:nzb_v_inner(j,i),j,i)  = 0.0
     1001                tw_m(nzb:nzb_w_inner(j,i),j,i)  = 0.0
     1002                te_m(nzb:nzb_w_inner(j,i),j,i)  = 0.0
     1003                tpt_m(nzb:nzb_w_inner(j,i),j,i) = 0.0
     1004             ENDDO
     1005          ENDDO
    11181006
    11191007       ENDIF
     
    11351023!--    have to be predefined here because they are used (but multiplied with 0)
    11361024!--    there before they are set.
    1137        IF ( timestep_scheme(1:5) == 'runge' )  THEN
    1138           te_m = 0.0; tpt_m = 0.0; tu_m = 0.0; tv_m = 0.0; tw_m = 0.0
    1139           IF ( humidity  .OR.  passive_scalar )  tq_m = 0.0
    1140           IF ( ocean )  tsa_m = 0.0
    1141        ENDIF
     1025       te_m = 0.0; tpt_m = 0.0; tu_m = 0.0; tv_m = 0.0; tw_m = 0.0
     1026       IF ( humidity  .OR.  passive_scalar )  tq_m = 0.0
     1027       IF ( ocean )  tsa_m = 0.0
    11421028
    11431029    ELSE
     
    14241310          shf(:,:) = canopy_heat_flux(0,:,:)
    14251311
    1426           IF ( ASSOCIATED( shf_m ) )  shf_m = shf
    1427 
    14281312       ENDIF
    14291313
     
    14771361       weight_pres(2)    = 1./2.       
    14781362
    1479     ELSE                                     ! for Euler- and leapfrog-method
     1363    ELSE                                     ! for Euler-method
    14801364
    14811365       weight_substep(1) = 1.0     
Note: See TracChangeset for help on using the changeset viewer.