Changeset 119 for codes/icosagcm/trunk
- Timestamp:
- 01/17/13 23:58:19 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
codes/icosagcm/trunk/src/write_field.f90
r107 r119 72 72 INTEGER,OPTIONAL,INTENT(IN) :: nind 73 73 LOGICAL,OPTIONAL,INTENT(IN) :: once 74 LOGICAL :: once_ 74 75 75 76 TYPE(t_field),POINTER :: field_glo(:) 76 77 78 IF(PRESENT(once)) THEN 79 once_=once 80 ELSE 81 once_=.FALSE. 82 END IF 83 77 84 IF (field(1)%ndim==2) THEN 78 85 CALL allocate_field_glo(field_glo,field(1)%field_type,field(1)%data_type) … … 87 94 IF (mpi_rank==0) THEN 88 95 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_) 90 97 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_) 92 99 ENDIF 93 100 ENDIF … … 337 344 REAL(r8),ALLOCATABLE :: field_val3d(:,:) 338 345 REAL(r8),ALLOCATABLE :: field_val4d(:,:,:) 339 LOGICAL, OPTIONAL,INTENT(IN) :: once346 LOGICAL, INTENT(IN) :: once 340 347 TYPE(t_domain),POINTER :: d 341 348 INTEGER :: Index … … 348 355 INTEGER :: halo_size 349 356 LOGICAL :: single 350 351 357 352 358 name=TRIM(ADJUSTL(name_in)) … … 412 418 ENDDO 413 419 414 IF ( PRESENT(once) .AND.once) THEN420 IF (once) THEN 415 421 status=NF90_PUT_VAR(FieldId(Index),FieldVarId(index)%nc_id(1),Field_val2d, & 416 422 start=(/ 1 /),count=(/ncell /)) … … 437 443 ENDDO 438 444 439 IF ( PRESENT(once) .AND.once) THEN445 IF (once) THEN 440 446 status=NF90_PUT_VAR(FieldId(Index),FieldVarId(index)%nc_id(1),Field_val3d,start=(/ 1,1 /), & 441 447 count=(/ncell,size(field(1)%rval3d,2) /)) … … 465 471 ENDDO 466 472 467 IF ( PRESENT(once) .AND.once) THEN473 IF (once) THEN 468 474 status=NF90_PUT_VAR(FieldId(Index),FieldVarId(index)%nc_id(q),Field_val3d,start=(/ 1,1 /), & 469 475 count=(/ncell,size(field(1)%rval4d,2),1 /)) … … 524 530 ENDDO 525 531 526 IF ( PRESENT(once) .AND.once) THEN532 IF (once) THEN 527 533 status=NF90_PUT_VAR(FieldId(Index),FieldVarId(index)%nc_id(1), & 528 534 Field_val2d,start=(/ 1 /),count=(/ncell /)) … … 555 561 ENDDO 556 562 557 IF ( PRESENT(once) .AND.once) THEN563 IF (once) THEN 558 564 status=NF90_PUT_VAR(FieldId(Index),FieldVarId(index)%nc_id(1),Field_val3d,start=(/ 1,1 /), & 559 565 count=(/ncell,size(field(1)%rval3d,2) /)) … … 588 594 ENDDO 589 595 590 IF ( PRESENT(once) .AND.once) THEN596 IF (once) THEN 591 597 status=NF90_PUT_VAR(FieldId(Index),FieldVarId(index)%nc_id(q),Field_val3d,start=(/ 1,1,1 /), & 592 598 count=(/ncell,size(field(1)%rval4d,2) /)) … … 1161 1167 INTEGER,OPTIONAL,INTENT(IN) :: ind_b_in 1162 1168 INTEGER,OPTIONAL,INTENT(IN) :: ind_e_in 1163 LOGICAL, OPTIONAL,INTENT(IN) :: once1169 LOGICAL,INTENT(IN) :: once 1164 1170 1165 1171 INTEGER :: ncell … … 1258 1264 1259 1265 IF (Field(ind_b)%ndim==2) THEN 1260 IF ( PRESENT(once) .AND.once) THEN1266 IF (once) THEN 1261 1267 status = NF90_DEF_VAR(ncid,TRIM(ADJUSTL(name)),ncprec,(/ ncellId /),FieldVarId(NbField)%nc_id(1)) 1262 1268 ELSE … … 1265 1271 status = NF90_PUT_ATT(ncid,FieldVarId(NbField)%nc_id(1),"coordinates","lon_i lat_i") 1266 1272 ELSE IF (Field(ind_b)%ndim==3) THEN 1267 IF ( PRESENT(once) .AND.once) THEN1273 IF (once) THEN 1268 1274 status = NF90_DEF_VAR(ncid,TRIM(ADJUSTL(name)),ncprec,(/ ncellId,dim3id /),FieldVarId(NbField)%nc_id(1)) 1269 1275 ELSE … … 1273 1279 ELSE IF (Field(ind_b)%ndim==4) THEN 1274 1280 DO i=1,FieldVarId(NbField)%size 1275 IF ( PRESENT(once) .AND.once) THEN1281 IF (once) THEN 1276 1282 status = NF90_DEF_VAR(ncid,TRIM(ADJUSTL(name))//int2str(i),ncprec,(/ ncellId,dim3id /), & 1277 1283 FieldVarId(NbField)%nc_id(i)) … … 1382 1388 1383 1389 IF (Field(ind_b)%ndim==2) THEN 1384 IF ( PRESENT(once) .AND.once) THEN1390 IF (once) THEN 1385 1391 status = NF90_DEF_VAR(ncid,TRIM(ADJUSTL(name)),ncprec,(/ ncellId /),FieldVarId(NbField)%nc_id(1)) 1386 1392 ELSE … … 1389 1395 status = NF90_PUT_ATT(ncid,FieldVarId(NbField)%nc_id(1),"coordinates","lon_v lat_v") 1390 1396 ELSE IF (Field(ind_b)%ndim==3) THEN 1391 IF ( PRESENT(once) .AND.once) THEN1397 IF (once) THEN 1392 1398 status = NF90_DEF_VAR(ncid,TRIM(ADJUSTL(name)),ncprec,(/ ncellId,dim3id /),FieldVarId(NbField)%nc_id(1)) 1393 1399 ELSE … … 1397 1403 ELSE IF (Field(ind_b)%ndim==4) THEN 1398 1404 DO q=1,FieldVarId(NbField)%size 1399 IF ( PRESENT(once) .AND.once) THEN1405 IF (once) THEN 1400 1406 status = NF90_DEF_VAR(ncid,TRIM(ADJUSTL(name)//int2str(q)),ncprec, & 1401 1407 (/ ncellId,dim3id /),FieldVarId(NbField)%nc_id(q)) … … 1510 1516 IMPLICIT NONE 1511 1517 CHARACTER(LEN=*) :: name 1518 CHARACTER(LEN=LEN_TRIM(ADJUSTL(name))) :: name_adj 1512 1519 TYPE(t_field),POINTER :: field(:) 1513 1520 INTEGER,OPTIONAL,INTENT(IN) :: nind … … 1530 1537 1531 1538 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 1533 1541 FieldIndex(NbField)=1 1534 1542 … … 1736 1744 ELSE IF (Field(ind_b)%ndim==4) THEN 1737 1745 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, & 1739 1747 (/ ncellId,dim3id,timeId /),FieldVarId(NbField)%nc_id(q)) 1740 1748 status = NF90_PUT_ATT(ncid,FieldVarId(NbField)%nc_id(q),"coordinates","lon lat")
Note: See TracChangeset
for help on using the changeset viewer.