Ignore:
Timestamp:
Aug 30, 2018 1:35:35 PM (6 years ago)
Author:
suehring
Message:

Introduction of addtional surface variables indicating type and name of the surface elements; Bugfix in LSM

File:
1 edited

Legend:

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

    r3215 r3222  
    2525! -----------------
    2626! $Id$
     27! - Introduction of surface array for type and its names
     28! - Bugfix in intialization of pavement surfaces
     29!
     30! 3215 2018-08-29 09:58:59Z suehring
    2731! Enable optional initialization of soil properties directly from dynamic
    2832! input file.
     
    26002604
    26012605             surf_lsm_v(l)%lambda_w = 0.0_wp
    2602           ENDIF      
     2606          ENDIF     
    26032607       ENDDO
    26042608!
     
    26312635          ALLOCATE( surf_lsm_v(l)%building_covered(1:surf_lsm_v(l)%ns) )
    26322636       ENDDO
     2637!
     2638!--    Allocate arrays for the respective types and their names on the surface
     2639!--    elements. This will be required to treat deposition of chemical species.
     2640       ALLOCATE( surf_lsm_h%pavement_type(1:surf_lsm_h%ns)   )
     2641       ALLOCATE( surf_lsm_h%vegetation_type(1:surf_lsm_h%ns) )
     2642       ALLOCATE( surf_lsm_h%water_type(1:surf_lsm_h%ns)      )
     2643       
     2644       surf_lsm_h%pavement_type   = 0
     2645       surf_lsm_h%vegetation_type = 0
     2646       surf_lsm_h%water_type      = 0
     2647       
     2648       ALLOCATE( surf_lsm_h%pavement_type_name(1:surf_lsm_h%ns)   )
     2649       ALLOCATE( surf_lsm_h%vegetation_type_name(1:surf_lsm_h%ns) )
     2650       ALLOCATE( surf_lsm_h%water_type_name(1:surf_lsm_h%ns)      )
     2651       
     2652       surf_lsm_h%pavement_type_name   = 'none'
     2653       surf_lsm_h%vegetation_type_name = 'none'
     2654       surf_lsm_h%water_type_name      = 'none'
     2655       
     2656       DO  l = 0, 3
     2657          ALLOCATE( surf_lsm_v(l)%pavement_type(1:surf_lsm_v(l)%ns)   )
     2658          ALLOCATE( surf_lsm_v(l)%vegetation_type(1:surf_lsm_v(l)%ns) )
     2659          ALLOCATE( surf_lsm_v(l)%water_type(1:surf_lsm_v(l)%ns)      )
     2660         
     2661          surf_lsm_v(l)%pavement_type   = 0
     2662          surf_lsm_v(l)%vegetation_type = 0
     2663          surf_lsm_v(l)%water_type      = 0
     2664       
     2665          ALLOCATE( surf_lsm_v(l)%pavement_type_name(1:surf_lsm_v(l)%ns)   )
     2666          ALLOCATE( surf_lsm_v(l)%vegetation_type_name(1:surf_lsm_v(l)%ns) )
     2667          ALLOCATE( surf_lsm_v(l)%water_type_name(1:surf_lsm_v(l)%ns)      )
     2668       
     2669          surf_lsm_v(l)%pavement_type_name   = 'none'
     2670          surf_lsm_v(l)%vegetation_type_name = 'none'
     2671          surf_lsm_v(l)%water_type_name      = 'none'       
     2672       ENDDO
     2673       
    26332674!
    26342675!--    Set flag parameter for the prescribed surface type depending on user
     
    31343175             surf_lsm_h%albedo_type(ind_veg_wall,m) = albedo_type
    31353176             surf_lsm_h%emissivity(ind_veg_wall,m)  = emissivity
     3177             
     3178             surf_lsm_h%vegetation_type(m)      = vegetation_type
     3179             surf_lsm_h%vegetation_type_name(m) = vegetation_type_name(vegetation_type)
    31363180          ELSE
    31373181             surf_lsm_h%lai(m)   = 0.0_wp
     
    31603204                surf_lsm_v(l)%albedo_type(ind_veg_wall,m) = albedo_type
    31613205                surf_lsm_v(l)%emissivity(ind_veg_wall,m)  = emissivity
     3206               
     3207                surf_lsm_v(l)%vegetation_type(m)      = vegetation_type
     3208                surf_lsm_v(l)%vegetation_type_name(m) = vegetation_type_name(vegetation_type)
    31623209             ELSE
    31633210                surf_lsm_v(l)%lai(m)   = 0.0_wp
     
    31953242                surf_lsm_h%albedo_type(ind_veg_wall,m) = INT( vegetation_pars(ind_v_at,st) )
    31963243                surf_lsm_h%emissivity(ind_veg_wall,m)  = vegetation_pars(ind_v_emis,st)
     3244               
     3245                surf_lsm_h%vegetation_type(m)      = st
     3246                surf_lsm_h%vegetation_type_name(m) = vegetation_type_name(st)
    31973247             ENDIF
    31983248          ENDDO
     
    32213271                   surf_lsm_v(l)%albedo_type(ind_veg_wall,m) = INT( vegetation_pars(ind_v_at,st) )
    32223272                   surf_lsm_v(l)%emissivity(ind_veg_wall,m)  = vegetation_pars(ind_v_emis,st)
     3273                   
     3274                   surf_lsm_v(l)%vegetation_type(m)      = st
     3275                   surf_lsm_v(l)%vegetation_type_name(m) = vegetation_type_name(st)
    32233276                ENDIF
    32243277             ENDDO
     
    34233476             surf_lsm_h%albedo_type(ind_wat_win,m) = albedo_type
    34243477             surf_lsm_h%emissivity(ind_wat_win,m)  = emissivity
     3478             
     3479             surf_lsm_h%water_type(m)      = water_type
     3480             surf_lsm_h%water_type_name(m) = water_type_name(water_type)
    34253481          ENDIF
    34263482       ENDDO
     
    34413497                surf_lsm_v(l)%albedo_type(ind_wat_win,m) = albedo_type
    34423498                surf_lsm_v(l)%emissivity(ind_wat_win,m)  = emissivity
     3499               
     3500                surf_lsm_v(l)%water_type(m)      = water_type
     3501                surf_lsm_v(l)%water_type_name(m) = water_type_name(water_type)
    34433502             ENDIF
    34443503          ENDDO
     
    34713530                surf_lsm_h%albedo_type(ind_wat_win,m) = INT( water_pars(ind_w_at,st) )
    34723531                surf_lsm_h%emissivity(ind_wat_win,m)  = water_pars(ind_w_emis,st)
     3532               
     3533                surf_lsm_h%water_type(m)      = st
     3534                surf_lsm_h%water_type_name(m) = water_type_name(st)
    34733535             ENDIF
    34743536          ENDDO
     
    34983560                   surf_lsm_v(l)%emissivity(ind_wat_win,m)  =                  &
    34993561                                                  water_pars(ind_w_emis,st)
     3562                                                 
     3563                   surf_lsm_v(l)%water_type(m)      = st
     3564                   surf_lsm_v(l)%water_type_name(m) = water_type_name(st)
    35003565                ENDIF
    35013566             ENDDO
     
    36943759             surf_lsm_h%albedo_type(ind_pav_green,m) = albedo_type
    36953760             surf_lsm_h%emissivity(ind_pav_green,m)  = emissivity     
     3761             
     3762             surf_lsm_h%pavement_type(m)      = pavement_type
     3763             surf_lsm_h%pavement_type_name(m) = pavement_type_name(pavement_type)
    36963764     
    36973765             IF ( pavement_type /= 0 )  THEN
     
    37033771                ENDDO
    37043772             ELSE
    3705                 surf_lsm_v(l)%lambda_h_def(:,m)     = pavement_heat_conduct
    3706                 surf_lsm_v(l)%rho_c_total_def(:,m)  = pavement_heat_capacity
     3773                surf_lsm_h%lambda_h_def(:,m)     = pavement_heat_conduct
     3774                surf_lsm_h%rho_c_total_def(:,m)  = pavement_heat_capacity
    37073775             ENDIF       
    37083776          ENDIF
     
    37293797                surf_lsm_v(l)%albedo_type(ind_pav_green,m) = albedo_type
    37303798                surf_lsm_v(l)%emissivity(ind_pav_green,m)  = emissivity
     3799               
     3800                surf_lsm_v(l)%pavement_type(m)      = pavement_type
     3801                surf_lsm_v(l)%pavement_type_name(m) = pavement_type_name(pavement_type)
    37313802
    37323803                IF ( pavement_type /= 0 )  THEN
     
    37863857                surf_lsm_h%albedo_type(ind_pav_green,m) = INT( pavement_pars(ind_p_at,st) )
    37873858                surf_lsm_h%emissivity(ind_pav_green,m)  = pavement_pars(ind_p_emis,st) 
     3859               
     3860                surf_lsm_h%pavement_type(m)      = st
     3861                surf_lsm_h%pavement_type_name(m) = pavement_type_name(st)
    37883862
    37893863                DO  k = nzb_soil, surf_lsm_h%nzt_pavement(m)
     
    38373911                                              INT( pavement_pars(ind_p_at,st) )
    38383912                   surf_lsm_v(l)%emissivity(ind_pav_green,m)  =                &
    3839                                               pavement_pars(ind_p_emis,st)   
     3913                                              pavement_pars(ind_p_emis,st) 
     3914                                             
     3915                   surf_lsm_v(l)%pavement_type(m)      = st
     3916                   surf_lsm_v(l)%pavement_type_name(m) = pavement_type_name(st)
    38403917                                             
    38413918                   DO  k = nzb_soil, surf_lsm_v(l)%nzt_pavement(m)
Note: See TracChangeset for help on using the changeset viewer.