@@ -3673,8 +3673,45 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
36733673 CUPPT(i,j) = SPVAL
36743674 enddo
36753675 enddo
3676+
3677+ ! done with flux file, close it for now
3678+ call nemsio_close(ffile,iret=status)
3679+ deallocate(tmp,recname,reclevtyp,reclev)
3680+
36763681
36773682
3683+ ! Retrieve aer fields if it' s listed (GOCART)
3684+ print * , ' iostatus for aer file=' , iostatusAER
3685+ if (iostatusAER == 0 ) then ! start reading aer file
3686+ call nemsio_open(rfile,trim (fileNameAER),' read' ,mpi_comm_comp &
3687+ ,iret= status)
3688+ if ( Status /= 0 ) then
3689+ print * ,' error opening ' ,fileNameAER, ' Status = ' , Status
3690+ endif
3691+ call nemsio_getfilehead(rfile,iret= status,nrec= nrec)
3692+ print * ,' nrec for aer file=' ,nrec
3693+ allocate(recname(nrec),reclevtyp(nrec),reclev(nrec))
3694+ call nemsio_getfilehead(rfile,iret= iret,recname= recname &
3695+ ,reclevtyp= reclevtyp,reclev= reclev)
3696+ if (debugprint)then
3697+ if (me == 0 )then
3698+ do i= 1 ,nrec
3699+ print * ,' recname,reclevtyp,reclev=' ,trim (recname(i)),' ' , &
3700+ trim (reclevtyp(i)),reclev(i)
3701+ end do
3702+ end if
3703+ end if
3704+ ! start reading nemsio aer files using parallel read
3705+ fldsize= (jend- jsta+1 )* im
3706+ allocate(tmp(fldsize* nrec))
3707+ print * ,' allocate tmp successfully'
3708+ tmp= 0 .
3709+ call nemsio_denseread(rfile,1 ,im,jsta,jend,tmp,iret= iret)
3710+ if (iret/= 0 )then
3711+ print * ," fail to read aer file using mpi io read, stopping"
3712+ stop
3713+ end if
3714+
36783715! retrieve dust emission fluxes
36793716 do K = 1 , nbin_du
36803717 if ( K == 1 ) VarName= ' duem001'
@@ -3684,11 +3721,11 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
36843721 if ( K == 5 ) VarName= ' duem005'
36853722 VcoordName= ' sfc'
36863723 l= 1
3687- call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3688- ,l,nrec,fldsize,spval,tmp &
3689- ,recname,reclevtyp,reclev,VarName,VcoordName&
3724+ call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3725+ ,l,nrec,fldsize,spval,tmp &
3726+ ,recname,reclevtyp,reclev,VarName,VcoordName &
36903727 ,duem(1 ,jsta_2l,K))
3691- ! if(debugprint)print*,' sample ' ,VarName,' = ' ,duem(isa,jsa,k)
3728+ if (debugprint)print * ,' sample ' ,VarName,' = ' ,duem(isa,jsa,k)
36923729 enddo
36933730
36943731! retrieve dust sedimentation fluxes
@@ -3700,9 +3737,9 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
37003737 if ( K == 5 ) VarName= ' dust5sd'
37013738 VcoordName= ' sfc'
37023739 l= 1
3703- call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3704- ,l,nrec,fldsize,spval,tmp &
3705- ,recname,reclevtyp,reclev,VarName,VcoordName&
3740+ call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3741+ ,l,nrec,fldsize,spval,tmp &
3742+ ,recname,reclevtyp,reclev,VarName,VcoordName &
37063743 ,dusd(1 ,jsta_2l,K))
37073744! if (debugprint)print * ,' sample ' ,VarName,' = ' ,dusd(isa,jsa,k)
37083745 enddo
@@ -3716,10 +3753,10 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
37163753 if ( K == 5 ) VarName= ' dust5dp'
37173754 VcoordName= ' sfc'
37183755 l= 1
3719- call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3720- ,l,nrec,fldsize,spval,tmp &
3721- ,recname,reclevtyp,reclev,VarName,VcoordName&
3722- ,dudp(1,jsta_2l,K))
3756+ call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3757+ ,l,nrec,fldsize,spval,tmp &
3758+ ,recname,reclevtyp,reclev,VarName,VcoordName &
3759+ ,dudp(1 ,jsta_2l,K))
37233760 print * ,' dudp,ck=' ,maxval (dudp(1 :im,jsta:jend,k)), &
37243761 minval (dudp(1 :im,jsta:jend,k))
37253762! if (debugprint)print * ,' sample ' ,VarName,' = ' ,dudp(isa,jsa,k)
@@ -3734,9 +3771,9 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
37343771 if ( K == 5 ) VarName= ' dust5wtl'
37353772 VcoordName= ' sfc'
37363773 l= 1
3737- call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3738- ,l,nrec,fldsize,spval,tmp &
3739- ,recname,reclevtyp,reclev,VarName,VcoordName&
3774+ call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3775+ ,l,nrec,fldsize,spval,tmp &
3776+ ,recname,reclevtyp,reclev,VarName,VcoordName &
37403777 ,duwt(1 ,jsta_2l,K))
37413778 enddo
37423779! retrieve dust scavenging fluxes
@@ -3748,9 +3785,9 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
37483785 if ( K == 5 ) VarName= ' dust5wtc'
37493786 VcoordName= ' sfc'
37503787 l= 1
3751- call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3752- ,l,nrec,fldsize,spval,tmp &
3753- ,recname,reclevtyp,reclev,VarName,VcoordName&
3788+ call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3789+ ,l,nrec,fldsize,spval,tmp &
3790+ ,recname,reclevtyp,reclev,VarName,VcoordName &
37543791 ,dusv(1 ,jsta_2l,K))
37553792 enddo
37563793
@@ -3763,9 +3800,9 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
37633800 if ( K == 5 ) VarName= ' ssem005'
37643801 VcoordName= ' sfc'
37653802 l= 1
3766- call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3767- ,l,nrec,fldsize,spval,tmp &
3768- ,recname,reclevtyp,reclev,VarName,VcoordName&
3803+ call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3804+ ,l,nrec,fldsize,spval,tmp &
3805+ ,recname,reclevtyp,reclev,VarName,VcoordName &
37693806 ,ssem(1 ,jsta_2l,K))
37703807 enddo
37713808
@@ -3778,9 +3815,9 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
37783815 if ( K == 5 ) VarName= ' seas5sd'
37793816 VcoordName= ' sfc'
37803817 l= 1
3781- call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3782- ,l,nrec,fldsize,spval,tmp &
3783- ,recname,reclevtyp,reclev,VarName,VcoordName&
3818+ call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3819+ ,l,nrec,fldsize,spval,tmp &
3820+ ,recname,reclevtyp,reclev,VarName,VcoordName &
37843821 ,sssd(1 ,jsta_2l,K))
37853822 enddo
37863823
@@ -3793,9 +3830,9 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
37933830 if ( K == 5 ) VarName= ' seas5dp'
37943831 VcoordName= ' sfc'
37953832 l= 1
3796- call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3797- ,l,nrec,fldsize,spval,tmp &
3798- ,recname,reclevtyp,reclev,VarName,VcoordName&
3833+ call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3834+ ,l,nrec,fldsize,spval,tmp &
3835+ ,recname,reclevtyp,reclev,VarName,VcoordName &
37993836 ,ssdp(1 ,jsta_2l,K))
38003837 enddo
38013838
@@ -3808,9 +3845,9 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
38083845 if ( K == 5 ) VarName= ' seas5wtl'
38093846 VcoordName= ' sfc'
38103847 l= 1
3811- call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3812- ,l,nrec,fldsize,spval,tmp &
3813- ,recname,reclevtyp,reclev,VarName,VcoordName&
3848+ call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3849+ ,l,nrec,fldsize,spval,tmp &
3850+ ,recname,reclevtyp,reclev,VarName,VcoordName &
38143851 ,sswt(1 ,jsta_2l,K))
38153852 enddo
38163853
@@ -3823,9 +3860,9 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
38233860 if ( K == 5 ) VarName= ' seas1wtc'
38243861 VcoordName= ' sfc'
38253862 l= 1
3826- call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3827- ,l,nrec,fldsize,spval,tmp &
3828- ,recname,reclevtyp,reclev,VarName,VcoordName&
3863+ call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3864+ ,l,nrec,fldsize,spval,tmp &
3865+ ,recname,reclevtyp,reclev,VarName,VcoordName &
38293866 ,sssv(1 ,jsta_2l,K))
38303867 enddo
38313868
@@ -3835,9 +3872,9 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
38353872 if ( K == 2 ) VarName= ' bcembb'
38363873 VcoordName= ' sfc'
38373874 l= 1
3838- call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3839- ,l,nrec,fldsize,spval,tmp &
3840- ,recname,reclevtyp,reclev,VarName,VcoordName&
3875+ call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3876+ ,l,nrec,fldsize,spval,tmp &
3877+ ,recname,reclevtyp,reclev,VarName,VcoordName &
38413878 ,bcem(1 ,jsta_2l,K))
38423879 enddo
38433880
@@ -3847,9 +3884,9 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
38473884 if ( K == 2 ) VarName= ' bc2sd'
38483885 VcoordName= ' sfc'
38493886 l= 1
3850- call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3851- ,l,nrec,fldsize,spval,tmp &
3852- ,recname,reclevtyp,reclev,VarName,VcoordName&
3887+ call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3888+ ,l,nrec,fldsize,spval,tmp &
3889+ ,recname,reclevtyp,reclev,VarName,VcoordName &
38533890 ,bcsd(1 ,jsta_2l,K))
38543891 enddo
38553892
@@ -3859,9 +3896,9 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
38593896 if ( K == 2 ) VarName= ' bc2dp'
38603897 VcoordName= ' sfc'
38613898 l= 1
3862- call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3863- ,l,nrec,fldsize,spval,tmp &
3864- ,recname,reclevtyp,reclev,VarName,VcoordName&
3899+ call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3900+ ,l,nrec,fldsize,spval,tmp &
3901+ ,recname,reclevtyp,reclev,VarName,VcoordName &
38653902 ,bcdp(1 ,jsta_2l,K))
38663903 enddo
38673904
@@ -3871,9 +3908,9 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
38713908 if ( K == 2 ) VarName= ' bc2wtl'
38723909 VcoordName= ' sfc'
38733910 l= 1
3874- call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3875- ,l,nrec,fldsize,spval,tmp &
3876- ,recname,reclevtyp,reclev,VarName,VcoordName&
3911+ call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3912+ ,l,nrec,fldsize,spval,tmp &
3913+ ,recname,reclevtyp,reclev,VarName,VcoordName &
38773914 ,bcwt(1 ,jsta_2l,K))
38783915 enddo
38793916
@@ -3883,9 +3920,9 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
38833920 if ( K == 2 ) VarName= ' bc2wtc'
38843921 VcoordName= ' sfc'
38853922 l= 1
3886- call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3887- ,l,nrec,fldsize,spval,tmp &
3888- ,recname,reclevtyp,reclev,VarName,VcoordName&
3923+ call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3924+ ,l,nrec,fldsize,spval,tmp &
3925+ ,recname,reclevtyp,reclev,VarName,VcoordName &
38893926 ,bcsv(1 ,jsta_2l,K))
38903927 enddo
38913928
@@ -3895,9 +3932,9 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
38953932 if ( K == 2 ) VarName= ' ocembb'
38963933 VcoordName= ' sfc'
38973934 l= 1
3898- call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3899- ,l,nrec,fldsize,spval,tmp &
3900- ,recname,reclevtyp,reclev,VarName,VcoordName&
3935+ call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3936+ ,l,nrec,fldsize,spval,tmp &
3937+ ,recname,reclevtyp,reclev,VarName,VcoordName &
39013938 ,ocem(1 ,jsta_2l,K))
39023939 enddo
39033940
@@ -3907,9 +3944,9 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
39073944 if ( K == 2 ) VarName= ' oc2sd'
39083945 VcoordName= ' sfc'
39093946 l= 1
3910- call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3911- ,l,nrec,fldsize,spval,tmp &
3912- ,recname,reclevtyp,reclev,VarName,VcoordName&
3947+ call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3948+ ,l,nrec,fldsize,spval,tmp &
3949+ ,recname,reclevtyp,reclev,VarName,VcoordName &
39133950 ,ocsd(1 ,jsta_2l,K))
39143951 enddo
39153952
@@ -3919,9 +3956,9 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
39193956 if ( K == 2 ) VarName= ' oc2dp'
39203957 VcoordName= ' sfc'
39213958 l= 1
3922- call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3923- ,l,nrec,fldsize,spval,tmp &
3924- ,recname,reclevtyp,reclev,VarName,VcoordName&
3959+ call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3960+ ,l,nrec,fldsize,spval,tmp &
3961+ ,recname,reclevtyp,reclev,VarName,VcoordName &
39253962 ,ocdp(1 ,jsta_2l,K))
39263963 enddo
39273964
@@ -3931,9 +3968,9 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
39313968 if ( K == 2 ) VarName= ' oc2wtl'
39323969 VcoordName= ' sfc'
39333970 l= 1
3934- call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3935- ,l,nrec,fldsize,spval,tmp &
3936- ,recname,reclevtyp,reclev,VarName,VcoordName&
3971+ call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3972+ ,l,nrec,fldsize,spval,tmp &
3973+ ,recname,reclevtyp,reclev,VarName,VcoordName &
39373974 ,ocwt(1 ,jsta_2l,K))
39383975 enddo
39393976
@@ -3943,24 +3980,24 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
39433980 if ( K == 2 ) VarName= ' oc2wtc'
39443981 VcoordName= ' sfc'
39453982 l= 1
3946- call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3947- ,l,nrec,fldsize,spval,tmp &
3948- ,recname,reclevtyp,reclev,VarName,VcoordName&
3983+ call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3984+ ,l,nrec,fldsize,spval,tmp &
3985+ ,recname,reclevtyp,reclev,VarName,VcoordName &
39493986 ,ocsv(1 ,jsta_2l,K))
39503987 enddo
39513988! retrieve MIE AOD
39523989 VarName= ' maod'
39533990 VcoordName= ' sfc'
39543991 l= 1
3955- call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3956- ,l,nrec,fldsize,spval,tmp &
3957- ,recname,reclevtyp,reclev,VarName,VcoordName&
3992+ call assignnemsiovar(im,jsta,jend,jsta_2l,jend_2u &
3993+ ,l,nrec,fldsize,spval,tmp &
3994+ ,recname,reclevtyp,reclev,VarName,VcoordName &
39583995 ,maod(1 ,jsta_2l))
39593996
39603997
39613998! done with flux file, close it for now
3962- call nemsio_close(ffile,iret=status)
3963- deallocate(tmp,recname,reclevtyp,reclev)
3999+ ! call nemsio_close(ffile,iret= status)
4000+ ! deallocate(tmp,recname,reclevtyp,reclev)
39644001
39654002!lzhang
39664003!! retrieve sfc mass concentration
@@ -4005,6 +4042,12 @@ SUBROUTINE INITPOST_GFS_NEMS_MPIIO(iostatusAER)
40054042! ,recname,reclevtyp,reclev,VarName,VcoordName &
40064043! ,ducmass25)
40074044! if (debugprint)print * ,' sample ' ,VarName,' = ' ,ducmass25(isa,jsa)
4045+
4046+ if (me == 0 ) print * ,' after aer files reading,mype=' ,me
4047+ call nemsio_close(rfile,iret= status)
4048+ deallocate(tmp,recname,reclevtyp,reclev)
4049+ end if ! end of aer file read
4050+
40084051! pos east
40094052 call collect_loc(gdlat,dummy)
40104053 if (me == 0 )then
0 commit comments