Changeset 119 for codes/icosagcm/trunk


Ignore:
Timestamp:
01/17/13 23:58:19 (11 years ago)
Author:
dubos
Message:

Fixed issues with optional args in write_field

File:
1 edited

Legend:

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

    r107 r119  
    7272      INTEGER,OPTIONAL,INTENT(IN) :: nind 
    7373      LOGICAL,OPTIONAL,INTENT(IN) :: once 
     74      LOGICAL                     :: once_ 
    7475       
    7576      TYPE(t_field),POINTER :: field_glo(:) 
    7677       
     78      IF(PRESENT(once)) THEN 
     79         once_=once 
     80      ELSE 
     81         once_=.FALSE. 
     82      END IF 
     83 
    7784      IF (field(1)%ndim==2) THEN 
    7885        CALL allocate_field_glo(field_glo,field(1)%field_type,field(1)%data_type) 
     
    8794      IF (mpi_rank==0) THEN 
    8895        IF (PRESENT(nind)) THEN 
    89          CALL writefield_gen(name_in,field_glo,domain_glo,nind,once=once) 
     96         CALL writefield_gen(name_in,field_glo,domain_glo,nind,once=once_) 
    9097        ELSE 
    91          CALL writefield_gen(name_in,field_glo,domain_glo,1,ndomain_glo,once=once) 
     98         CALL writefield_gen(name_in,field_glo,domain_glo,1,ndomain_glo,once=once_) 
    9299        ENDIF 
    93100      ENDIF 
     
    337344      REAL(r8),ALLOCATABLE :: field_val3d(:,:) 
    338345      REAL(r8),ALLOCATABLE :: field_val4d(:,:,:) 
    339       LOGICAL,OPTIONAL, INTENT(IN) :: once 
     346      LOGICAL, INTENT(IN) :: once 
    340347      TYPE(t_domain),POINTER :: d 
    341348      INTEGER :: Index 
     
    348355      INTEGER :: halo_size 
    349356      LOGICAL :: single 
    350        
    351357       
    352358      name=TRIM(ADJUSTL(name_in)) 
     
    412418          ENDDO 
    413419 
    414           IF (PRESENT(once) .AND. once) THEN  
     420          IF (once) THEN  
    415421            status=NF90_PUT_VAR(FieldId(Index),FieldVarId(index)%nc_id(1),Field_val2d,  & 
    416422                               start=(/ 1 /),count=(/ncell /)) 
     
    437443          ENDDO 
    438444            
    439           IF (PRESENT(once) .AND. once) THEN  
     445          IF (once) THEN  
    440446            status=NF90_PUT_VAR(FieldId(Index),FieldVarId(index)%nc_id(1),Field_val3d,start=(/ 1,1 /),   & 
    441447                                 count=(/ncell,size(field(1)%rval3d,2) /)) 
     
    465471            ENDDO 
    466472             
    467             IF (PRESENT(once) .AND. once) THEN  
     473            IF (once) THEN  
    468474              status=NF90_PUT_VAR(FieldId(Index),FieldVarId(index)%nc_id(q),Field_val3d,start=(/ 1,1 /),   & 
    469475                                 count=(/ncell,size(field(1)%rval4d,2),1 /)) 
     
    524530          ENDDO 
    525531           
    526           IF (PRESENT(once) .AND. once) THEN  
     532          IF (once) THEN  
    527533            status=NF90_PUT_VAR(FieldId(Index),FieldVarId(index)%nc_id(1),                       & 
    528534                                Field_val2d,start=(/ 1 /),count=(/ncell /)) 
     
    555561          ENDDO 
    556562           
    557           IF (PRESENT(once) .AND. once) THEN  
     563          IF (once) THEN  
    558564            status=NF90_PUT_VAR(FieldId(Index),FieldVarId(index)%nc_id(1),Field_val3d,start=(/ 1,1 /),   & 
    559565                                count=(/ncell,size(field(1)%rval3d,2) /)) 
     
    588594            ENDDO 
    589595 
    590             IF (PRESENT(once) .AND. once) THEN  
     596            IF (once) THEN  
    591597              status=NF90_PUT_VAR(FieldId(Index),FieldVarId(index)%nc_id(q),Field_val3d,start=(/ 1,1,1 /),   & 
    592598                                  count=(/ncell,size(field(1)%rval4d,2) /)) 
     
    11611167      INTEGER,OPTIONAL,INTENT(IN) :: ind_b_in 
    11621168      INTEGER,OPTIONAL,INTENT(IN) :: ind_e_in 
    1163       LOGICAL,OPTIONAL,INTENT(IN) :: once 
     1169      LOGICAL,INTENT(IN) :: once 
    11641170       
    11651171      INTEGER :: ncell 
     
    12581264 
    12591265        IF (Field(ind_b)%ndim==2) THEN 
    1260           IF (PRESENT(once) .AND. once) THEN  
     1266          IF (once) THEN  
    12611267            status = NF90_DEF_VAR(ncid,TRIM(ADJUSTL(name)),ncprec,(/ ncellId /),FieldVarId(NbField)%nc_id(1)) 
    12621268          ELSE 
     
    12651271          status = NF90_PUT_ATT(ncid,FieldVarId(NbField)%nc_id(1),"coordinates","lon_i lat_i") 
    12661272        ELSE IF (Field(ind_b)%ndim==3) THEN 
    1267           IF (PRESENT(once) .AND. once) THEN  
     1273          IF (once) THEN  
    12681274            status = NF90_DEF_VAR(ncid,TRIM(ADJUSTL(name)),ncprec,(/ ncellId,dim3id /),FieldVarId(NbField)%nc_id(1)) 
    12691275          ELSE 
     
    12731279        ELSE IF (Field(ind_b)%ndim==4) THEN 
    12741280          DO i=1,FieldVarId(NbField)%size 
    1275             IF (PRESENT(once) .AND. once) THEN  
     1281            IF (once) THEN  
    12761282              status = NF90_DEF_VAR(ncid,TRIM(ADJUSTL(name))//int2str(i),ncprec,(/ ncellId,dim3id /),  & 
    12771283                                    FieldVarId(NbField)%nc_id(i)) 
     
    13821388 
    13831389        IF (Field(ind_b)%ndim==2) THEN 
    1384           IF (PRESENT(once) .AND. once) THEN  
     1390          IF (once) THEN  
    13851391            status = NF90_DEF_VAR(ncid,TRIM(ADJUSTL(name)),ncprec,(/ ncellId /),FieldVarId(NbField)%nc_id(1)) 
    13861392          ELSE 
     
    13891395          status = NF90_PUT_ATT(ncid,FieldVarId(NbField)%nc_id(1),"coordinates","lon_v lat_v") 
    13901396        ELSE IF (Field(ind_b)%ndim==3) THEN 
    1391           IF (PRESENT(once) .AND. once) THEN  
     1397          IF (once) THEN  
    13921398            status = NF90_DEF_VAR(ncid,TRIM(ADJUSTL(name)),ncprec,(/ ncellId,dim3id /),FieldVarId(NbField)%nc_id(1)) 
    13931399          ELSE 
     
    13971403        ELSE IF (Field(ind_b)%ndim==4) THEN 
    13981404          DO q=1,FieldVarId(NbField)%size 
    1399             IF (PRESENT(once) .AND. once) THEN  
     1405            IF (once) THEN  
    14001406              status = NF90_DEF_VAR(ncid,TRIM(ADJUSTL(name)//int2str(q)),ncprec,             & 
    14011407                                    (/ ncellId,dim3id /),FieldVarId(NbField)%nc_id(q)) 
     
    15101516    IMPLICIT NONE 
    15111517      CHARACTER(LEN=*) :: name 
     1518      CHARACTER(LEN=LEN_TRIM(ADJUSTL(name))) :: name_adj 
    15121519      TYPE(t_field),POINTER :: field(:) 
    15131520      INTEGER,OPTIONAL,INTENT(IN) :: nind 
     
    15301537           
    15311538      NbField=NbField+1 
    1532       FieldName(NbField)=TRIM(ADJUSTL(name)) 
     1539      name_adj=TRIM(ADJUSTL(name))  ! work around ICE with pgf90 
     1540      FieldName(NbField)=name_adj 
    15331541      FieldIndex(NbField)=1 
    15341542       
     
    17361744        ELSE IF (Field(ind_b)%ndim==4) THEN 
    17371745          DO q=1,FieldVarId(NbField)%size 
    1738             status = NF90_DEF_VAR(ncid,TRIM(ADJUSTL(name)//int2str(q)),ncprec,             & 
     1746            status = NF90_DEF_VAR(ncid,name_adj//int2str(q),ncprec,             & 
    17391747                                  (/ ncellId,dim3id,timeId /),FieldVarId(NbField)%nc_id(q)) 
    17401748            status = NF90_PUT_ATT(ncid,FieldVarId(NbField)%nc_id(q),"coordinates","lon lat") 
Note: See TracChangeset for help on using the changeset viewer.