Changeset 4118 for palm/trunk/SOURCE


Ignore:
Timestamp:
Jul 25, 2019 4:11:45 PM (5 years ago)
Author:
suehring
Message:

Initialization of soil temperature and moisture via dynamic input file only for vegetation and pavement surfaces

Location:
palm/trunk/SOURCE
Files:
2 edited

Legend:

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

    r4110 r4118  
    2525! -----------------
    2626! $Id$
     27! Initialization of soil temperature and moisture via dynamic input file only
     28! for vegetation and pavement surfaces.
     29!
     30! 4110 2019-07-22 17:05:21Z suehring
    2731! Relax checks for non-consistent initialization in case static or dynamic
    2832! input is provided. For example, soil_temperature or deep_soil_temperature
     
    45684572             IF ( init_3d%lod_msoil == 1 )  THEN
    45694573                DO  m = 1, surf_lsm_h%ns
    4570 
    4571                    CALL netcdf_data_input_interpolate(                         &
     4574                   IF ( surf_lsm_h%vegetation_surface(m)  .OR.                 &
     4575                        surf_lsm_h%pavement_surface(m) )  THEN
     4576
     4577                      CALL netcdf_data_input_interpolate(                      &
    45724578                                       m_soil_h%var_2d(nzb_soil:nzt_soil,m),   &
    45734579                                       init_3d%msoil_1d(:),                    &
     
    45754581                                       nzb_soil, nzt_soil,                     &
    45764582                                       nzb_soil, init_3d%nzs-1 )
     4583                   ENDIF
    45774584                ENDDO
    45784585                DO  l = 0, 3
    45794586                   DO  m = 1, surf_lsm_v(l)%ns
    4580 
    4581                       CALL netcdf_data_input_interpolate(                      &
     4587                      IF ( surf_lsm_v(l)%vegetation_surface(m)  .OR.           &
     4588                           surf_lsm_v(l)%pavement_surface(m) )  THEN
     4589                         CALL netcdf_data_input_interpolate(                   &
    45824590                                       m_soil_v(l)%var_2d(nzb_soil:nzt_soil,m),&
    45834591                                       init_3d%msoil_1d(:),                    &
     
    45854593                                       nzb_soil, nzt_soil,                     &
    45864594                                       nzb_soil, init_3d%nzs-1 )
     4595                      ENDIF
    45874596                   ENDDO
    45884597                ENDDO
     
    45904599
    45914600                DO  m = 1, surf_lsm_h%ns
    4592                    i = surf_lsm_h%i(m)
    4593                    j = surf_lsm_h%j(m)
    4594 
    4595                    IF ( init_3d%msoil_3d(0,j,i) /= init_3d%fill_msoil )        &
    4596                       CALL netcdf_data_input_interpolate(                      &
     4601                   IF ( surf_lsm_h%vegetation_surface(m)  .OR.                 &
     4602                        surf_lsm_h%pavement_surface(m) )  THEN
     4603                      i = surf_lsm_h%i(m)
     4604                      j = surf_lsm_h%j(m)
     4605
     4606                      IF ( init_3d%msoil_3d(0,j,i) /= init_3d%fill_msoil )     &
     4607                         CALL netcdf_data_input_interpolate(                   &
    45974608                                       m_soil_h%var_2d(nzb_soil:nzt_soil,m),   &
    45984609                                       init_3d%msoil_3d(:,j,i),                &
     
    46004611                                       nzb_soil, nzt_soil,                     &
    46014612                                       nzb_soil, init_3d%nzs-1 )
     4613                   ENDIF
    46024614                ENDDO
    46034615                DO  l = 0, 3
    46044616                   DO  m = 1, surf_lsm_v(l)%ns
    4605 !
    4606 !--                   Note, in contrast to the static input data the dynamic
    4607 !--                   input do not need to be checked whether a grid point
    4608 !--                   is building covered. This is because soil data in the
    4609 !--                   dynamic input is provided for the whole domain. 
    4610                       i = surf_lsm_v(l)%i(m)
    4611                       j = surf_lsm_v(l)%j(m)
    4612 
    4613                       IF ( init_3d%msoil_3d(0,j,i) /= init_3d%fill_msoil )     &
    4614                          CALL netcdf_data_input_interpolate(                   &
     4617                      IF ( surf_lsm_v(l)%vegetation_surface(m)  .OR.           &
     4618                           surf_lsm_v(l)%pavement_surface(m) )  THEN
     4619!
     4620!--                      Note, in contrast to the static input data the dynamic
     4621!--                      input do not need to be checked whether a grid point
     4622!--                      is building covered. This is because soil data in the
     4623!--                      dynamic input is provided for the whole domain. 
     4624                         i = surf_lsm_v(l)%i(m)
     4625                         j = surf_lsm_v(l)%j(m)
     4626                         
     4627                         IF ( init_3d%msoil_3d(0,j,i) /= init_3d%fill_msoil )  &
     4628                            CALL netcdf_data_input_interpolate(                &
    46154629                                       m_soil_v(l)%var_2d(nzb_soil:nzt_soil,m),&
    46164630                                       init_3d%msoil_3d(:,j,i),                &
     
    46184632                                       nzb_soil, nzt_soil,                     &
    46194633                                       nzb_soil, init_3d%nzs-1 )
     4634                      ENDIF
    46204635                   ENDDO
    46214636                ENDDO
     
    46284643             IF ( init_3d%lod_tsoil == 1 )  THEN ! change to 1 if provided correctly by INIFOR
    46294644                DO  m = 1, surf_lsm_h%ns
    4630 
    4631                    CALL netcdf_data_input_interpolate(                         &
     4645                   IF ( surf_lsm_h%vegetation_surface(m)  .OR.                 &
     4646                        surf_lsm_h%pavement_surface(m) )  THEN
     4647                      CALL netcdf_data_input_interpolate(                      &
    46324648                                       t_soil_h%var_2d(nzb_soil:nzt_soil,m),   &
    46334649                                       init_3d%tsoil_1d(:),                    &
     
    46354651                                       nzb_soil, nzt_soil,                     &
    46364652                                       nzb_soil, init_3d%nzs-1 )
    4637                    t_soil_h%var_2d(nzt_soil+1,m) = t_soil_h%var_2d(nzt_soil,m)
     4653!
     4654!--                   Set boundary condition, i.e. deep soil temperature
     4655                      t_soil_h%var_2d(nzt_soil+1,m) = t_soil_h%var_2d(nzt_soil,m)
     4656                   ENDIF
    46384657                ENDDO
    46394658                DO  l = 0, 3
    46404659                   DO  m = 1, surf_lsm_v(l)%ns
    4641 
    4642                       CALL netcdf_data_input_interpolate(                      &
     4660                      IF ( surf_lsm_v(l)%vegetation_surface(m)  .OR.           &
     4661                           surf_lsm_v(l)%pavement_surface(m) )  THEN
     4662                        CALL netcdf_data_input_interpolate(                    &
    46434663                                       t_soil_v(l)%var_2d(nzb_soil:nzt_soil,m),&
    46444664                                       init_3d%tsoil_1d(:),                    &
     
    46464666                                       nzb_soil, nzt_soil,                     &
    46474667                                       nzb_soil, init_3d%nzs-1 )
    4648                       t_soil_v(l)%var_2d(nzt_soil+1,m) =                       &
     4668!
     4669!--                      Set boundary condition, i.e. deep soil temperature
     4670                         t_soil_v(l)%var_2d(nzt_soil+1,m) =                    &
    46494671                                                 t_soil_v(l)%var_2d(nzt_soil,m)
     4672                      ENDIF
    46504673                   ENDDO
    46514674                ENDDO
     
    46534676
    46544677                DO  m = 1, surf_lsm_h%ns
    4655                    i = surf_lsm_h%i(m)
    4656                    j = surf_lsm_h%j(m)
    4657 
    4658                    IF ( init_3d%tsoil_3d(0,j,i) /= init_3d%fill_tsoil )        &
    4659                       CALL netcdf_data_input_interpolate(                      &
     4678                   IF ( surf_lsm_h%vegetation_surface(m)  .OR.                 &
     4679                        surf_lsm_h%pavement_surface(m) )  THEN
     4680                      i = surf_lsm_h%i(m)
     4681                      j = surf_lsm_h%j(m)
     4682                     
     4683                      IF ( init_3d%tsoil_3d(0,j,i) /= init_3d%fill_tsoil )     &
     4684                         CALL netcdf_data_input_interpolate(                   &
    46604685                                       t_soil_h%var_2d(nzb_soil:nzt_soil,m),   &
    46614686                                       init_3d%tsoil_3d(:,j,i),                &
     
    46634688                                       nzb_soil, nzt_soil,                     &
    46644689                                       nzb_soil, init_3d%nzs-1 )
    4665                    t_soil_h%var_2d(nzt_soil+1,m) = t_soil_h%var_2d(nzt_soil,m)
     4690!
     4691!--                   Set boundary condition, i.e. deep soil temperature
     4692                      t_soil_h%var_2d(nzt_soil+1,m) = t_soil_h%var_2d(nzt_soil,m)
     4693                   ENDIF
    46664694                ENDDO
    46674695                DO  l = 0, 3
    46684696                   DO  m = 1, surf_lsm_v(l)%ns
    4669 !
    4670 !--                   Note, in contrast to the static input data the dynamic
    4671 !--                   input do not need to be checked whether a grid point
    4672 !--                   is building covered. This is because soil data in the
    4673 !--                   dynamic input is provided for the whole domain. 
    4674                       i = surf_lsm_v(l)%i(m)
    4675                       j = surf_lsm_v(l)%j(m)
    4676 
    4677                       IF ( init_3d%tsoil_3d(0,j,i) /= init_3d%fill_tsoil )     &
    4678                          CALL netcdf_data_input_interpolate(                   &
     4697                      IF ( surf_lsm_v(l)%vegetation_surface(m)  .OR.           &
     4698                           surf_lsm_v(l)%pavement_surface(m) )  THEN
     4699!
     4700!--                      Note, in contrast to the static input data the dynamic
     4701!--                      input do not need to be checked whether a grid point
     4702!--                      is building covered. This is because soil data in the
     4703!--                      dynamic input is provided for the whole domain. 
     4704                         i = surf_lsm_v(l)%i(m)
     4705                         j = surf_lsm_v(l)%j(m)
     4706                         
     4707                         IF ( init_3d%tsoil_3d(0,j,i) /= init_3d%fill_tsoil )  &
     4708                            CALL netcdf_data_input_interpolate(                &
    46794709                                       t_soil_v(l)%var_2d(nzb_soil:nzt_soil,m),&
    46804710                                       init_3d%tsoil_3d(:,j,i),                &
     
    46824712                                       nzb_soil, nzt_soil,                     &
    46834713                                       nzb_soil, init_3d%nzs-1 )
    4684                       t_soil_v(l)%var_2d(nzt_soil+1,m) =                       &
     4714!
     4715!--                      Set boundary condition, i.e. deep soil temperature
     4716                         t_soil_v(l)%var_2d(nzt_soil+1,m) =                    &
    46854717                                                 t_soil_v(l)%var_2d(nzt_soil,m)
     4718                      ENDIF
    46864719                   ENDDO
    46874720                ENDDO
     
    47104743                     surf_lsm_v(l)%pavement_surface(m) )  THEN
    47114744                   DO  k = nzb_soil, nzt_soil
    4712                       IF ( m_soil_v(l)%var_2d(k,m) > surf_lsm_v(l)%m_sat(k,m) )  &
     4745                      IF ( m_soil_v(l)%var_2d(k,m) > surf_lsm_v(l)%m_sat(k,m) )&
    47134746                      THEN
    4714                          WRITE( message_string, * )                               &
     4747                         WRITE( message_string, * )                            &
    47154748                            'soil moisture is higher than ' //                 &
    47164749                            'its saturation value at (k,j,i) ', k,             &
  • palm/trunk/SOURCE/salsa_mod.f90

    r4117 r4118  
    2121! Current revisions:
    2222! -----------------
     23!
     24!
     25! Former revisions:
     26! -----------------
     27! $Id$
    2328! - When Dirichlet condition is applied in decycling, the boundary conditions are
    2429!   only set at the ghost points and not at the prognostic grid points as done
     
    3237!   Moreover, salsa_advc_flags_s considers extended zones around buildings where
    3338!   the first-order upwind scheme is applied for the horizontal advection terms.
    34 !   This is doneto overcome high concentration peaks due to stationary numerical
     39!   This is done to overcome high concentration peaks due to stationary numerical
    3540!   oscillations caused by horizontal advection discretization.
    3641!
    37 ! Former revisions:
    38 ! -----------------
    39 ! $Id$
     42! 4117 2019-07-25 08:54:02Z monakurppa
    4043! Pass integer flag array as well as boundary flags to WS scalar advection
    4144! routine
Note: See TracChangeset for help on using the changeset viewer.