Changeset 82


Ignore:
Timestamp:
08/03/12 02:14:05 (12 years ago)
Author:
ymipsl
Message:

improvment of the output and CF conformity

YM

Location:
codes/icosagcm/trunk/src
Files:
1 added
3 edited

Legend:

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

    r75 r82  
    2323  CALL compute_domain 
    2424  CALL init_transfert 
     25  CALL init_writefield 
    2526!  CALL allocate_field(sum_ne,field_T,type_real) 
    2627!  CALL allocate_field_glo(sum_ne_glo,field_T,type_real) 
     
    7879!  CALL WriteField("sum_ne",sum_ne) 
    7980  CALL write_apbp 
     81  CALL create_time_counter_header 
    8082  CALL timeloop 
    8183 
    8284  CALL close_files 
     85  CALL close_time_counter 
    8386  CALL finalize_mpipara 
    8487   
  • codes/icosagcm/trunk/src/icosa_mod.f90

    r25 r82  
    1414  USE write_field 
    1515  USE transfert_mod 
     16  USE time_mod 
    1617   
    1718  ! Variables defined by run.def 
  • codes/icosagcm/trunk/src/write_field.f90

    r77 r82  
    22USE genmod 
    33implicit none 
    4  
     4   
     5  INTEGER,SAVE :: ncprec 
     6   
    57  TYPE ncvar 
    68    INTEGER :: size 
     
    1921  contains 
    2022   
     23    SUBROUTINE init_writeField 
     24    USE ioipsl 
     25    use netcdf_mod 
     26    IMPLICIT NONE 
     27      CHARACTER(LEN=255) :: netcdf_prec 
     28       
     29      netcdf_prec='float' 
     30      CALL getin("netcdf_prec",netcdf_prec) 
     31       
     32      SELECT CASE(TRIM(netcdf_prec)) 
     33        CASE('float') 
     34          ncprec=NF90_FLOAT 
     35        CASE('double') 
     36          ncprec=NF90_DOUBLE 
     37        CASE default 
     38        PRINT*,'Bad selector for variable netcdf_prec : <', TRIM(netcdf_prec),"> options are <float>, <double>"  
     39        STOP    
     40      END SELECT 
     41    END SUBROUTINE init_writeField 
     42     
    2143    function GetFieldIndex(name) 
    2244    implicit none 
     
    11981220 
    11991221        IF (Field(ind_b)%ndim==2) THEN 
    1200           status = NF90_DEF_VAR(ncid,TRIM(ADJUSTL(name)),NF90_DOUBLE,(/ ncellId,timeId /),FieldVarId(NbField)%nc_id(1)) 
     1222          status = NF90_DEF_VAR(ncid,TRIM(ADJUSTL(name)),ncprec,(/ ncellId,timeId /),FieldVarId(NbField)%nc_id(1)) 
    12011223          status = NF90_PUT_ATT(ncid,FieldVarId(NbField)%nc_id(1),"coordinates","lon_i lat_i") 
    12021224        ELSE IF (Field(ind_b)%ndim==3) THEN 
    1203           status = NF90_DEF_VAR(ncid,TRIM(ADJUSTL(name)),NF90_DOUBLE,(/ ncellId,dim3id,timeId /),FieldVarId(NbField)%nc_id(1)) 
     1225          status = NF90_DEF_VAR(ncid,TRIM(ADJUSTL(name)),ncprec,(/ ncellId,dim3id,timeId /),FieldVarId(NbField)%nc_id(1)) 
    12041226          status = NF90_PUT_ATT(ncid,FieldVarId(NbField)%nc_id(1),"coordinates","lon_i lat_i") 
    12051227        ELSE IF (Field(ind_b)%ndim==4) THEN 
    12061228          DO i=1,FieldVarId(NbField)%size 
    1207             status = NF90_DEF_VAR(ncid,TRIM(ADJUSTL(name))//int2str(i),NF90_DOUBLE,(/ ncellId,dim3id,timeId /),  & 
     1229            status = NF90_DEF_VAR(ncid,TRIM(ADJUSTL(name))//int2str(i),ncprec,(/ ncellId,dim3id,timeId /),  & 
    12081230                                  FieldVarId(NbField)%nc_id(i)) 
    12091231            status = NF90_PUT_ATT(ncid,FieldVarId(NbField)%nc_id(i),"coordinates","lon_i lat_i") 
     
    13091331 
    13101332        IF (Field(ind_b)%ndim==2) THEN 
    1311           status = NF90_DEF_VAR(ncid,TRIM(ADJUSTL(name)),NF90_DOUBLE,(/ ncellId,timeId /),FieldVarId(NbField)%nc_id(1)) 
     1333          status = NF90_DEF_VAR(ncid,TRIM(ADJUSTL(name)),ncprec,(/ ncellId,timeId /),FieldVarId(NbField)%nc_id(1)) 
    13121334          status = NF90_PUT_ATT(ncid,FieldVarId(NbField)%nc_id(1),"coordinates","lon_v lat_v") 
    13131335        ELSE IF (Field(ind_b)%ndim==3) THEN 
    1314           status = NF90_DEF_VAR(ncid,TRIM(ADJUSTL(name)),NF90_DOUBLE,(/ ncellId,dim3id,timeId /),FieldVarId(NbField)%nc_id(1)) 
     1336          status = NF90_DEF_VAR(ncid,TRIM(ADJUSTL(name)),ncprec,(/ ncellId,dim3id,timeId /),FieldVarId(NbField)%nc_id(1)) 
    13151337          status = NF90_PUT_ATT(ncid,FieldVarId(NbField)%nc_id(1),"coordinates","lon_v lat_v") 
    13161338        ELSE IF (Field(ind_b)%ndim==4) THEN 
    13171339          DO q=1,FieldVarId(NbField)%size 
    1318             status = NF90_DEF_VAR(ncid,TRIM(ADJUSTL(name)//int2str(q)),NF90_DOUBLE,             & 
     1340            status = NF90_DEF_VAR(ncid,TRIM(ADJUSTL(name)//int2str(q)),ncprec,             & 
    13191341                                  (/ ncellId,dim3id,timeId /),FieldVarId(NbField)%nc_id(q)) 
    13201342            status = NF90_PUT_ATT(ncid,FieldVarId(NbField)%nc_id(q),"coordinates","lon_v lat_v") 
     
    15171539 
    15181540        IF (Field(ind_b)%ndim==2) THEN 
    1519           status = NF90_DEF_VAR(ncid,TRIM(ADJUSTL(name)),NF90_DOUBLE,(/ ncellId,timeId /),FieldVarId(NbField)%nc_id(1)) 
     1541          status = NF90_DEF_VAR(ncid,TRIM(ADJUSTL(name)),ncprec,(/ ncellId,timeId /),FieldVarId(NbField)%nc_id(1)) 
    15201542          status = NF90_PUT_ATT(ncid,FieldVarId(NbField)%nc_id(1),"coordinates","lon lat") 
    15211543          status = NF90_DEF_VAR_CHUNKING(ncid, FieldVarId(NbField)%nc_id(1), NF90_CHUNKED, (/ncell_tot,1/)) 
    15221544        ELSE IF (Field(ind_b)%ndim==3) THEN 
    1523           status = NF90_DEF_VAR(ncid,TRIM(ADJUSTL(name)),NF90_DOUBLE,(/ ncellId,dim3id,timeId /),FieldVarId(NbField)%nc_id(1)) 
     1545          status = NF90_DEF_VAR(ncid,TRIM(ADJUSTL(name)),ncprec,(/ ncellId,dim3id,timeId /),FieldVarId(NbField)%nc_id(1)) 
    15241546          status = NF90_PUT_ATT(ncid,FieldVarId(NbField)%nc_id(1),"coordinates","lon lat") 
    15251547          status = NF90_DEF_VAR_CHUNKING(ncid, FieldVarId(NbField)%nc_id(1), NF90_CHUNKED,   & 
     
    15271549        ELSE IF (Field(ind_b)%ndim==4) THEN 
    15281550          DO i=1,FieldVarId(NbField)%size 
    1529             status = NF90_DEF_VAR(ncid,TRIM(ADJUSTL(name))//int2str(i),NF90_DOUBLE,(/ ncellId,dim3id,timeId /),  & 
     1551            status = NF90_DEF_VAR(ncid,TRIM(ADJUSTL(name))//int2str(i),ncprec,(/ ncellId,dim3id,timeId /),  & 
    15301552                                  FieldVarId(NbField)%nc_id(i)) 
    15311553            status = NF90_PUT_ATT(ncid,FieldVarId(NbField)%nc_id(i),"coordinates","lon lat") 
     
    16401662 
    16411663        IF (Field(ind_b)%ndim==2) THEN 
    1642           status = NF90_DEF_VAR(ncid,TRIM(ADJUSTL(name)),NF90_DOUBLE,(/ ncellId,timeId /),FieldVarId(NbField)%nc_id(1)) 
     1664          status = NF90_DEF_VAR(ncid,TRIM(ADJUSTL(name)),ncprec,(/ ncellId,timeId /),FieldVarId(NbField)%nc_id(1)) 
    16431665          status = NF90_PUT_ATT(ncid,FieldVarId(NbField)%nc_id(1),"coordinates","lon lat") 
    16441666          status = NF90_DEF_VAR_CHUNKING(ncid, FieldVarId(NbField)%nc_id(1), NF90_CHUNKED, (/ncell_tot,1/)) 
    16451667        ELSE IF (Field(ind_b)%ndim==3) THEN 
    1646           status = NF90_DEF_VAR(ncid,TRIM(ADJUSTL(name)),NF90_DOUBLE,(/ ncellId,dim3id,timeId /),FieldVarId(NbField)%nc_id(1)) 
     1668          status = NF90_DEF_VAR(ncid,TRIM(ADJUSTL(name)),ncprec,(/ ncellId,dim3id,timeId /),FieldVarId(NbField)%nc_id(1)) 
    16471669          status = NF90_PUT_ATT(ncid,FieldVarId(NbField)%nc_id(1),"coordinates","lon lat") 
    16481670          status = NF90_DEF_VAR_CHUNKING(ncid, FieldVarId(NbField)%nc_id(1), NF90_CHUNKED,   & 
     
    16501672        ELSE IF (Field(ind_b)%ndim==4) THEN 
    16511673          DO q=1,FieldVarId(NbField)%size 
    1652             status = NF90_DEF_VAR(ncid,TRIM(ADJUSTL(name)//int2str(q)),NF90_DOUBLE,             & 
     1674            status = NF90_DEF_VAR(ncid,TRIM(ADJUSTL(name)//int2str(q)),ncprec,             & 
    16531675                                  (/ ncellId,dim3id,timeId /),FieldVarId(NbField)%nc_id(q)) 
    16541676            status = NF90_PUT_ATT(ncid,FieldVarId(NbField)%nc_id(q),"coordinates","lon lat") 
Note: See TracChangeset for help on using the changeset viewer.