Changeset 3967


Ignore:
Timestamp:
Jul 26, 2021, 11:24:59 AM (3 years ago)
Author:
acozic
Message:

get_var2 can now work with 3d variables which don't have a fourth time axis dimension in start.nc

Solve first part of ticket #133

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ6/trunk/libf/dyn3dmem/dynetat0_loc.F90

    r3043 r3967  
    225225END SUBROUTINE get_var1
    226226
    227 
    228227SUBROUTINE get_var2(var,v)
    229228  CHARACTER(LEN=*), INTENT(IN)  :: var
    230229  REAL,             INTENT(OUT) :: v(:,:)
    231   REAL,             ALLOCATABLE :: w4(:,:,:,:)
     230  REAL,             ALLOCATABLE :: w4(:,:,:,:), w3(:,:,:)
    232231  INTEGER :: nn(4), dids(4), k, nd
     232
     233
    233234  CALL err(NF90_INQ_VARID(fID,var,vID),"inq",var)
    234   ierr=NF90_INQUIRE_VARIABLE(fID,vID,dimids=dids,ndims=nd)
     235  ierr=NF90_INQUIRE_VARIABLE(fID,vID,ndims=nd)
     236
     237  IF(nd==1) THEN
     238    CALL err(NF90_GET_VAR(fID,vID,v),"get",var); RETURN
     239  END IF
     240  ierr=NF90_INQUIRE_VARIABLE(fID,vID,dimids=dids)
     241
    235242  DO k=1,nd; ierr=NF90_INQUIRE_DIMENSION(fID,dids(k),len=nn(k)); END DO
    236   ALLOCATE(w4(nn(1),nn(2),nn(3),nn(4)))
    237   CALL err(NF90_GET_VAR(fID,vID,w4),"get",var)
    238   v=RESHAPE(w4,[nn(1)*nn(2),nn(3)]); DEALLOCATE(w4)
     243
     244  SELECT CASE(nd)
     245  CASE(3); ALLOCATE(w3(nn(1),nn(2),nn(3)))
     246     CALL err(NF90_GET_VAR(fID,vID,w3),"get",var)
     247     v=RESHAPE(w3,[nn(1)*nn(2),nn(3)]); DEALLOCATE(w3)
     248  CASE(4);  ALLOCATE(w4(nn(1),nn(2),nn(3),nn(4)))
     249     CALL err(NF90_GET_VAR(fID,vID,w4),"get",var)
     250     v=RESHAPE(w4,[nn(1)*nn(2),nn(3)]); DEALLOCATE(w4)
     251  END SELECT
    239252END SUBROUTINE get_var2
    240253
Note: See TracChangeset for help on using the changeset viewer.