Changeset 75


Ignore:
Timestamp:
08/02/12 22:32:22 (12 years ago)
Author:
ymipsl
Message:

write file apbp.nc parameters for vertical discretisation

YM

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

Legend:

Unmodified
Added
Removed
  • codes/icosagcm/trunk/src/disvert.f90

    r64 r75  
    4747  END SUBROUTINE init_disvert   
    4848   
     49  SUBROUTINE write_apbp 
     50  USE icosa 
     51  USE netcdf_mod 
     52  IMPLICIT NONE 
     53    REAL(rstd) :: val(llm) 
     54    INTEGER :: status 
     55    INTEGER :: lev,ilev 
     56    INTEGER :: ncid,levid,ilevid,hyaiid,hybiid,hyamid,hybmid,P0id 
     57    INTEGER :: l 
     58     
     59    status = NF90_CREATE('apbp.nc', NF90_CLOBBER, ncid) 
     60    status = NF90_DEF_DIM(ncid,'lev',llm,lev) 
     61    status = NF90_DEF_DIM(ncid,'ilev',llm+1,ilev) 
     62     
     63    status = NF90_DEF_VAR(ncid,'lev',NF90_DOUBLE,(/ lev /),levid) 
     64    status = NF90_PUT_ATT(ncid,levid,"long_name","hybrid level at midpoints (1000*(A+B))") 
     65    status = NF90_PUT_ATT(ncid,levid,"units","Pa") 
     66    status = NF90_PUT_ATT(ncid,levid,"positive","up") 
     67    status = NF90_PUT_ATT(ncid,levid,"standard_name","atmosphere_hybrid_sigma_pressure_coordinate") 
     68    status = NF90_PUT_ATT(ncid,levid,"formula_terms","a: hyam b: hybm p0: P0 ps: PS") 
     69 
     70    status = NF90_DEF_VAR(ncid,'ilev',NF90_DOUBLE,(/ ilev /),ilevid) 
     71    status = NF90_PUT_ATT(ncid,ilevid,"long_name","hybrid level at interfaces (1000*(A+B))") 
     72    status = NF90_PUT_ATT(ncid,ilevid,"units","Pa") 
     73    status = NF90_PUT_ATT(ncid,ilevid,"positive","up") 
     74    status = NF90_PUT_ATT(ncid,ilevid,"standard_name","atmosphere_hybrid_sigma_pressure_coordinate") 
     75    status = NF90_PUT_ATT(ncid,ilevid,"formula_terms","a: hyai b: hybi p0: P0 ps: PS") 
     76    
     77    status = NF90_DEF_VAR(ncid,'hyai',NF90_DOUBLE,(/ ilev /),hyaiid) 
     78    status = NF90_PUT_ATT(ncid,hyaiid,"long_name","hybrid A coefficient at layer interfaces") 
     79 
     80    status = NF90_DEF_VAR(ncid,'hybi',NF90_DOUBLE,(/ ilev /),hybiid) 
     81    status = NF90_PUT_ATT(ncid,hybiid,"long_name","hybrid B coefficient at layer interfaces") 
     82 
     83    status = NF90_DEF_VAR(ncid,'hyam',NF90_DOUBLE,(/ lev /),hyamid) 
     84    status = NF90_PUT_ATT(ncid,hyamid,"long_name","hybrid A coefficient at midpoint interfaces") 
     85 
     86    status = NF90_DEF_VAR(ncid,'hybm',NF90_DOUBLE,(/ lev /),hybmid) 
     87    status = NF90_PUT_ATT(ncid,hybmid,"long_name","hybrid B coefficient at midpoint interfaces") 
     88     
     89    status = NF90_DEF_VAR(ncid,'P0',NF90_DOUBLE,varid=P0id) 
     90 
     91    status = NF90_ENDDEF(ncid)    
     92     
     93    PRINT*,ap 
     94    PRINT*,bp 
     95    status=NF90_PUT_VAR(ncid,ilevid, ap(:)+bp(:)*Preff) 
     96     
     97    DO l=1,llm 
     98      val(l)= 0.5*(ap(l+1)+ap(l)+Preff*(bp(l)+bp(l+1))) 
     99    ENDDO 
     100     
     101    status=NF90_PUT_VAR(ncid,levid, val) 
     102 
     103    status=NF90_PUT_VAR(ncid,hyaiid, ap(:)/Preff) 
     104    status=NF90_PUT_VAR(ncid,hybiid, bp(:)/Preff) 
     105     
     106    DO l=1,llm 
     107      val(l)= 0.5*(ap(l+1)+ap(l)) 
     108    ENDDO 
     109    status=NF90_PUT_VAR(ncid,hyamid, val(:)/Preff) 
     110    
     111     DO l=1,llm 
     112      val(l)= 0.5*(bp(l+1)+bp(l)) 
     113    ENDDO 
     114    status=NF90_PUT_VAR(ncid,hybmid, val(:)) 
     115  
     116    status=NF90_PUT_VAR(ncid,P0id, Preff) 
     117    
     118   status=NF90_CLOSE(ncid) 
     119  END SUBROUTINE write_apbp 
     120 
    49121END MODULE disvert_mod 
  • codes/icosagcm/trunk/src/icosa_gcm.f90

    r32 r75  
    7777  CALL WriteField("Ai",geom%Ai) 
    7878!  CALL WriteField("sum_ne",sum_ne) 
     79  CALL write_apbp 
    7980  CALL timeloop 
    8081 
Note: See TracChangeset for help on using the changeset viewer.