Changeset 706


Ignore:
Timestamp:
07/17/18 17:24:56 (6 years ago)
Author:
millour
Message:

Tidying up around dissipation steps and outputs.
So far application of dissipation (every itau_dissip dyn step) was automatically set. Keep this behaviour if the user sets itau_dissip=0, or else use imposed value of itau_dissip.
Also added some diagnostic output fields for dissipation: dulon_diss1, dulat_diss1, dulon_diss2 and dulat_diss2. So add the definitions for these fields in your field_def.xml (e.g. alongside ulon, ulat, dulon_phys, etc.)
EM

Location:
codes/icosagcm/trunk/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • codes/icosagcm/trunk/src/dissip/dissip_gcm.f90

    r648 r706  
    453453 
    454454    IF(mintau>0) THEN 
    455        itau_dissip=INT(mintau/dt) 
    456        dtdissip=itau_dissip*dt 
     455       IF (itau_dissip==0) THEN 
     456         IF (is_master) PRINT *,"init_dissip: Automatic computation of itau_dissip..." 
     457         itau_dissip=INT(mintau/dt) 
     458       ENDIF 
    457459    ELSE 
    458        IF (is_master) PRINT *,"No dissipation time set, setting itau_dissip to 1000000000" 
     460       IF (is_master) PRINT *,"init_dissip: No dissipation time set, setting itau_dissip to 1000000000" 
    459461       itau_dissip=100000000 
    460462    END IF 
    461463    itau_dissip=MAX(1,itau_dissip) 
    462     IF (is_master) PRINT *,"rayleigh_tau",rayleigh_tau, "mintau ",mintau, & 
    463          "itau_dissip",itau_dissip," dtdissip ",dtdissip 
     464    dtdissip=itau_dissip*dt 
     465    IF (is_master) THEN 
     466      PRINT *,"init_dissip: rayleigh_tau",rayleigh_tau, "mintau ",mintau 
     467      PRINT *,"init_dissip: itau_dissip",itau_dissip," dtdissip ",dtdissip 
     468    ENDIF 
    464469 
    465470  END SUBROUTINE init_dissip  
     
    557562   CALL trace_end("dissip") 
    558563 
     564   CALL write_dissip_tendencies 
    559565!$OMP BARRIER 
    560566 
     
    588594       END SUBROUTINE relax 
    589595       
     596       SUBROUTINE write_dissip_tendencies 
     597         USE observable_mod, ONLY : f_buf_ulon, f_buf_ulat 
     598         USE wind_mod 
     599         USE output_field_mod 
     600 
     601         CALL transfert_request(f_due_diss1,req_e1_vect) 
     602         CALL un2ulonlat(f_due_diss1, f_buf_ulon, f_buf_ulat, (1./(tau_graddiv(1)))) 
     603         CALL output_field("dulon_diss1",f_buf_ulon) 
     604         CALL output_field("dulat_diss1",f_buf_ulat) 
     605! 
     606         CALL transfert_request(f_due_diss2,req_e1_vect) 
     607         CALL un2ulonlat(f_due_diss2, f_buf_ulon, f_buf_ulat, (1./(tau_graddiv(1)))) 
     608         CALL output_field("dulon_diss2",f_buf_ulon) 
     609         CALL output_field("dulat_diss2",f_buf_ulat) 
     610       END SUBROUTINE write_dissip_tendencies 
     611 
    590612  END SUBROUTINE dissip 
    591613 
  • codes/icosagcm/trunk/src/time/time.f90

    r548 r706  
    7575    CALL getin('itau_adv',itau_adv) 
    7676 
    77     itau_dissip=1 
     77    itau_dissip=0 ! set to zero which implies itau_dissip will be automatically computed (see init_dissip) 
    7878    CALL getin('itau_dissip',itau_dissip) 
    7979 
Note: See TracChangeset for help on using the changeset viewer.