Changeset 969 for codes


Ignore:
Timestamp:
09/02/19 16:19:52 (5 years ago)
Author:
jisesh
Message:

devel : added select case construct for nudging options

File:
1 edited

Legend:

Unmodified
Added
Removed
  • codes/icosagcm/devel/src/dissip/nudging_mod.f90

    r968 r969  
    186186     
    187187    IF (abs(MOD(tt,REAL(nudging_time))-dt) < 1.0D-2) THEN 
    188  
    189188      CALL allocate_field(f_ps_guided, field_t, type_real, name='nudging_ps') 
    190189      CALL xios_read_field("ps_guided_read",f_ps_guided) 
    191       !f_ps = f_ps_guided  !================================================>FIX 
    192190      CALL transfert_request(f_ps_guided,req_i0) 
    193191      CALL transfert_request(f_ps_guided,req_i1) 
     
    200198      CALL allocate_field(f_pmid_target,field_t,type_real,llm,name='target_pressure')  
    201199      CALL xios_read_field("T_guided_read",f_T_guided) 
    202       CALL pression_mid(f_ps, f_pmid_target) ! call ps nudging before this 
     200      CALL pression_mid(f_ps, f_pmid_target)  
    203201      CALL vertical_remap_extdata(f_T_guided,f_pmid_target,f_T_guided_interp) 
    204202      CALL transfert_request(f_T_guided,req_i0) 
     
    220218      CALL transfert_request(f_ulat_guided_interp,req_i1) 
    221219      !CALL xios_write_field("ulat_guided_out",f_ulat_guided) 
    222       CALL xios_write_field("ulat_guided_out",f_T_guided_interp) 
     220      CALL xios_write_field("ulat_guided_out",f_T_guided_interp) ! FIX 
    223221      CALL xios_write_field("ulon_guided_out",f_ulon_guided) 
    224222      CALL xios_write_field("T_guided_out",f_T_guided) 
    225       CALL xios_write_field("PS_guided_out",f_ps_guided) 
     223      CALL xios_write_field("PS_guided_out",f_ps_guided)  
    226224      CALL ulonlat2un(f_ulon_guided_interp, f_ulat_guided,f_target_ue)  
    227225      CALL deallocate_field(f_T_guided) 
     
    232230      CALL deallocate_field(f_ulat_guided_interp) 
    233231      CALL deallocate_field(f_pmid_target) 
    234       !CALL deallocate_field(f_ps_guided) 
    235       print*,"-----------------------nudging end------------------" 
    236  
    237232    ENDIF 
    238233 
     
    242237       CALL swap_dimensions(ind) 
    243238       CALL swap_geometry(ind)  
    244        coef_e = f_relax_coef_e(ind) 
    245        target_ue = f_target_ue(ind) 
    246        ue = f_u(ind) 
    247        CALL compute_guided_u(coef_e, target_ue, ue) 
    248        coef_i = f_relax_coef_i(ind) 
    249        target_theta_rhodz = f_target_theta_rhodz(ind) 
    250        theta_rhodz = f_theta_rhodz(ind) 
    251        !CALL compute_guided_center(coef_i, target_theta_rhodz, theta_rhodz) 
    252        target_ps = f_ps_guided(ind) 
    253        ps2 = f_ps(ind) 
    254        CALL compute_guided_center2(coef_i, target_ps, ps2) 
     239        
     240       SELECT CASE(TRIM(guided_nudging_field)) 
     241         CASE ('wind') 
     242           coef_e = f_relax_coef_e(ind) 
     243           target_ue = f_target_ue(ind) 
     244           ue = f_u(ind) 
     245           CALL compute_guided_u(coef_e, target_ue, ue) 
     246         CASE ('temperature') 
     247           coef_i = f_relax_coef_i(ind) 
     248           target_theta_rhodz = f_target_theta_rhodz(ind) 
     249           theta_rhodz = f_theta_rhodz(ind) 
     250           CALL compute_guided_center(coef_i, target_theta_rhodz, theta_rhodz) 
     251         CASE ('ps') 
     252           coef_i = f_relax_coef_i(ind) 
     253           target_ps = f_ps_guided(ind) 
     254           ps2 = f_ps(ind) 
     255           CALL compute_guided_center2(coef_i, target_ps, ps2) 
     256         CASE ('wind_temperature_ps') 
     257           coef_e = f_relax_coef_e(ind) 
     258           target_ue = f_target_ue(ind) 
     259           ue = f_u(ind) 
     260           CALL compute_guided_u(coef_e, target_ue, ue) 
     261           coef_i = f_relax_coef_i(ind) 
     262           target_theta_rhodz = f_target_theta_rhodz(ind) 
     263           theta_rhodz = f_theta_rhodz(ind) 
     264           CALL compute_guided_center(coef_i, target_theta_rhodz, theta_rhodz) 
     265           target_ps = f_ps_guided(ind) 
     266           ps2 = f_ps(ind) 
     267           CALL compute_guided_center2(coef_i, target_ps, ps2) 
     268         END SELECT 
    255269    END DO 
    256270 
Note: See TracChangeset for help on using the changeset viewer.