Changeset f3054ea in flexpart.git


Ignore:
Timestamp:
Aug 27, 2020, 8:00:15 PM (4 years ago)
Author:
Espen Sollum <eso@…>
Branches:
GFS_025, dev
Children:
4ab2fbf
Parents:
a756649
Message:

Changed from grib_api to eccodes. MPI: implemented linversionout=1; fixed calculation of grid_initial fields.

Files:
13 edited

Legend:

Unmodified
Added
Removed
  • pathnames

    ra756649 rf3054ea  
    1 ./options_test/
    2 ./output_test/
    3 /
    4 /xnilu_wrk/flex_wrk/WIND_FIELDS/AVAILABLE_ECMWF_OPER_fields_global
     1./options/
     2./output/
     3./preprocess/flex_extract/work/
     4./AVAILABLE
  • src/FLEXPART.f90

    ra756649 rf3054ea  
    8383  verbosity=0
    8484
    85   write(*,*) "flexversion: ", flexversion
    86 
    8785  ! Read the pathnames where input/output files are stored
    8886  !*******************************************************
  • src/concoutput_mpi.f90

    r6741557 rf3054ea  
    7777  real :: sp_fact
    7878  real :: outnum,densityoutrecept(maxreceptor),xl,yl
     79! RLT
     80  real :: densitydryrecept(maxreceptor)
     81  real :: factor_dryrecept(maxreceptor)
    7982
    8083!real densityoutgrid(0:numxgrid-1,0:numygrid-1,numzgrid),
     
    111114  character(LEN=8),save :: file_stat='REPLACE'
    112115  logical :: ldates_file
     116  logical :: lexist
    113117  integer :: ierr
    114118  character(LEN=100) :: dates_char
     
    212216        densityoutgrid(ix,jy,kz)=(rho(iix,jjy,kzz,mind)*dz1+ &
    213217             rho(iix,jjy,kzz-1,mind)*dz2)/dz
     218! RLT
     219        densitydrygrid(ix,jy,kz)=(rho_dry(iix,jjy,kzz,mind)*dz1+ &
     220             rho_dry(iix,jjy,kzz-1,mind)*dz2)/dz 
    214221      end do
    215222    end do
     
    223230    !densityoutrecept(i)=rho(iix,jjy,1,2)
    224231    densityoutrecept(i)=rho(iix,jjy,1,mind)
     232! RLT
     233    densitydryrecept(i)=rho_dry(iix,jjy,1,mind)
    225234  end do
    226235
     236! RLT
     237! conversion factor for output relative to dry air
     238  factor_drygrid=densityoutgrid/densitydrygrid
     239  factor_dryrecept=densityoutrecept/densitydryrecept
    227240
    228241! Output is different for forward and backward simulations
     
    277290        write(unitoutgrid) itime
    278291      endif
    279 
    280292      if ((iout.eq.2).or.(iout.eq.3)) then      ! mixing ratio
    281293        open(unitoutgridppt,file=path(2)(1:length(2))//'grid_pptv_'//adate// &
    282294             atime//'_'//anspec,form='unformatted')
    283 
    284295        write(unitoutgridppt) itime
    285296      endif
     
    625636  end do
    626637
     638! RLT Aug 2017
     639! Write out conversion factor for dry air
     640  inquire(file=path(2)(1:length(2))//'factor_drygrid',exist=lexist)
     641  if (lexist) then
     642    ! open and append
     643    open(unitoutfactor,file=path(2)(1:length(2))//'factor_drygrid',form='unformatted',&
     644            status='old',action='write',access='append')
     645  else
     646    ! create new
     647    open(unitoutfactor,file=path(2)(1:length(2))//'factor_drygrid',form='unformatted',&
     648            status='new',action='write')
     649  endif
     650  sp_count_i=0
     651  sp_count_r=0
     652  sp_fact=-1.
     653  sp_zer=.true.
     654  do kz=1,numzgrid
     655    do jy=0,numygrid-1
     656      do ix=0,numxgrid-1
     657        if (factor_drygrid(ix,jy,kz).gt.(1.+smallnum).or.factor_drygrid(ix,jy,kz).lt.(1.-smallnum)) then
     658          if (sp_zer.eqv..true.) then ! first value not equal to one
     659            sp_count_i=sp_count_i+1
     660            sparse_dump_i(sp_count_i)= &
     661                  ix+jy*numxgrid+kz*numxgrid*numygrid
     662            sp_zer=.false.
     663            sp_fact=sp_fact*(-1.)
     664          endif
     665          sp_count_r=sp_count_r+1
     666          sparse_dump_r(sp_count_r)= &
     667               sp_fact*factor_drygrid(ix,jy,kz)
     668        else ! factor is one
     669          sp_zer=.true.
     670        endif
     671      end do
     672    end do
     673  end do
     674  write(unitoutfactor) sp_count_i
     675  write(unitoutfactor) (sparse_dump_i(i),i=1,sp_count_i)
     676  write(unitoutfactor) sp_count_r
     677  write(unitoutfactor) (sparse_dump_r(i),i=1,sp_count_r)
     678  close(unitoutfactor)
     679
     680
    627681  if (gridtotal.gt.0.) gridtotalunc=gridsigmatotal/gridtotal
    628682  if (wetgridtotal.gt.0.) wetgridtotalunc=wetgridsigmatotal/ &
     
    651705  endif
    652706
    653 
     707! RLT Aug 2017
     708! Write out conversion factor for dry air
     709  if (numreceptor.gt.0) then
     710    inquire(file=path(2)(1:length(2))//'factor_dryreceptor',exist=lexist)
     711     if (lexist) then
     712     ! open and append
     713      open(unitoutfactor,file=path(2)(1:length(2))//'factor_dryreceptor',form='unformatted',&
     714              status='old',action='write',access='append')
     715    else
     716      ! create new
     717      open(unitoutfactor,file=path(2)(1:length(2))//'factor_dryreceptor',form='unformatted',&
     718              status='new',action='write')
     719    endif
     720    write(unitoutfactor) itime
     721    write(unitoutfactor) (factor_dryrecept(i),i=1,numreceptor)
     722    close(unitoutfactor)
     723  endif
    654724
    655725! Reinitialization of grid
  • src/concoutput_nest.f90

    r2eefa58 rf3054ea  
    606606  close(unitoutfactor)
    607607
    608 
    609608  ! Reinitialization of grid
    610609  !*************************
  • src/concoutput_nest_mpi.f90

    r16b61a5 rf3054ea  
    5858  !*****************************************************************************
    5959
    60 
    6160  use unc_mod
    6261  use point_mod
     
    7473  real :: sp_fact
    7574  real :: outnum,densityoutrecept(maxreceptor),xl,yl
     75! RLT
     76  real :: densitydryrecept(maxreceptor)
     77  real :: factor_dryrecept(maxreceptor)
    7678
    7779  !real densityoutgrid(0:numxgrid-1,0:numygrid-1,numzgrid),
     
    100102  character :: adate*8,atime*6
    101103  character(len=3) :: anspec
     104  logical :: lexist
    102105  integer :: mind
    103106! mind        eso:added to ensure identical results between 2&3-fields versions
     
    176179        densityoutgrid(ix,jy,kz)=(rho(iix,jjy,kzz,mind)*dz1+ &
    177180             rho(iix,jjy,kzz-1,mind)*dz2)/dz
     181! RLT
     182        densitydrygrid(ix,jy,kz)=(rho_dry(iix,jjy,kzz,mind)*dz1+ &
     183             rho_dry(iix,jjy,kzz-1,mind)*dz2)/dz
    178184      end do
    179185    end do
     
    187193    !densityoutrecept(i)=rho(iix,jjy,1,2)
    188194    densityoutrecept(i)=rho(iix,jjy,1,mind)
     195! RLT
     196    densitydryrecept(i)=rho_dry(iix,jjy,1,mind)
    189197  end do
    190198
     199! RLT
     200! conversion factor for output relative to dry air
     201  factor_drygrid=densityoutgrid/densitydrygrid
     202  factor_dryrecept=densityoutrecept/densitydryrecept
    191203
    192204  ! Output is different for forward and backward simulations
     
    211223
    212224  write(anspec,'(i3.3)') ks
     225 
     226  if (DRYBKDEP.or.WETBKDEP) then !scavdep output
     227      if (DRYBKDEP) &
     228      open(unitoutgrid,file=path(2)(1:length(2))//'grid_drydep_nest_'//adate// &
     229           atime//'_'//anspec,form='unformatted')
     230      if (WETBKDEP) &
     231      open(unitoutgrid,file=path(2)(1:length(2))//'grid_wetdep_nest_'//adate// &
     232           atime//'_'//anspec,form='unformatted')
     233      write(unitoutgrid) itime
     234  else
    213235  if ((iout.eq.1).or.(iout.eq.3).or.(iout.eq.5)) then
    214236    if (ldirect.eq.1) then
     
    223245     write(unitoutgrid) itime
    224246   endif
     247  endif
    225248
    226249  if ((iout.eq.2).or.(iout.eq.3)) then      ! mixing ratio
     
    553576  end do
    554577
    555 
    556 
    557   ! Reinitialization of grid
    558   !*************************
    559 
    560   do ks=1,nspec
    561     do kp=1,maxpointspec_act
    562       do i=1,numreceptor
    563         creceptor(i,ks)=0.
    564       end do
    565       do jy=0,numygridn-1
    566         do ix=0,numxgridn-1
    567           do l=1,nclassunc
    568             do nage=1,nageclass
    569               do kz=1,numzgrid
    570                 griduncn(ix,jy,kz,ks,kp,l,nage)=0.
    571               end do
    572             end do
    573           end do
    574         end do
     578! RLT Aug 2017
     579! Write out conversion factor for dry air
     580  inquire(file=path(2)(1:length(2))//'factor_drygrid_nest',exist=lexist)
     581  if (lexist) then
     582    ! open and append
     583    open(unitoutfactor,file=path(2)(1:length(2))//'factor_drygrid_nest',form='unformatted',&
     584            status='old',action='write',access='append')
     585  else
     586    ! create new
     587    open(unitoutfactor,file=path(2)(1:length(2))//'factor_drygrid_nest',form='unformatted',&
     588            status='new',action='write')
     589  endif
     590  sp_count_i=0
     591  sp_count_r=0
     592  sp_fact=-1.
     593  sp_zer=.true.
     594  do kz=1,numzgrid
     595    do jy=0,numygridn-1
     596      do ix=0,numxgridn-1
     597        if (factor_drygrid(ix,jy,kz).gt.(1.+smallnum).or.factor_drygrid(ix,jy,kz).lt.(1.-smallnum)) then
     598          if (sp_zer.eqv..true.) then ! first value not equal to one
     599            sp_count_i=sp_count_i+1
     600            sparse_dump_i(sp_count_i)= &
     601                  ix+jy*numxgridn+kz*numxgridn*numygridn
     602            sp_zer=.false.
     603            sp_fact=sp_fact*(-1.)
     604          endif
     605          sp_count_r=sp_count_r+1
     606          sparse_dump_r(sp_count_r)= &
     607               sp_fact*factor_drygrid(ix,jy,kz)
     608        else ! factor is one
     609          sp_zer=.true.
     610        endif
    575611      end do
    576612    end do
    577613  end do
    578 
     614  write(unitoutfactor) sp_count_i
     615  write(unitoutfactor) (sparse_dump_i(i),i=1,sp_count_i)
     616  write(unitoutfactor) sp_count_r
     617  write(unitoutfactor) (sparse_dump_r(i),i=1,sp_count_r)
     618  close(unitoutfactor)
     619
     620  ! Reinitialization of grid
     621  !*************************
     622
     623  ! do ks=1,nspec
     624  !   do kp=1,maxpointspec_act
     625  !     do i=1,numreceptor
     626  !       creceptor(i,ks)=0.
     627  !     end do
     628  !     do jy=0,numygridn-1
     629  !       do ix=0,numxgridn-1
     630  !         do l=1,nclassunc
     631  !           do nage=1,nageclass
     632  !             do kz=1,numzgrid
     633  !               griduncn(ix,jy,kz,ks,kp,l,nage)=0.
     634  !             end do
     635  !           end do
     636  !         end do
     637  !       end do
     638  !     end do
     639  !   end do
     640  ! end do
     641  creceptor(:,:)=0.
     642  griduncn(:,:,:,:,:,:,:)=0.
     643 
    579644  if (mp_measure_time) call mpif_mtime('iotime',1)
    580645  ! if (mp_measure_time) then
  • src/concoutput_surf_nest_mpi.f90

    r38b7917 rf3054ea  
    651651
    652652  do ks=1,nspec
    653   do kp=1,maxpointspec_act
    654     do i=1,numreceptor
    655       creceptor(i,ks)=0.
    656     end do
    657     do jy=0,numygridn-1
    658       do ix=0,numxgridn-1
    659         do l=1,nclassunc
    660           do nage=1,nageclass
    661             do kz=1,numzgrid
    662               griduncn(ix,jy,kz,ks,kp,l,nage)=0.
     653    do kp=1,maxpointspec_act
     654      do i=1,numreceptor
     655        creceptor(i,ks)=0.
     656      end do
     657      do jy=0,numygridn-1
     658        do ix=0,numxgridn-1
     659          do l=1,nclassunc
     660            do nage=1,nageclass
     661              do kz=1,numzgrid
     662                griduncn(ix,jy,kz,ks,kp,l,nage)=0.
     663              end do
    663664            end do
    664665          end do
     
    666667      end do
    667668    end do
    668   end do
    669669  end do
    670670
  • src/makefile

    rc56da45 rf3054ea  
    6363else
    6464# Compiled libraries under user ~flexpart, gfortran v5.4
    65         ROOT_DIR = /homevip/flexpart/
     65#       ROOT_DIR = /homevip/flexpart/
    6666
    6767        F90       = /usr/bin/gfortran
    6868        MPIF90    = /usr/bin/mpifort
    6969
    70         INCPATH1  = ${ROOT_DIR}/gcc-5.4.0/include       
     70# INCPATH1  = ${ROOT_DIR}/gcc-5.4.0/include     
     71# INCPATH2  = /usr/include
     72# LIBPATH1 = ${ROOT_DIR}/gcc-5.4.0/lib
     73        INCPATH1  = /usr/include       
    7174        INCPATH2  = /usr/include
    72         LIBPATH1 = ${ROOT_DIR}/gcc-5.4.0/lib
    7375endif
    7476
     
    9294
    9395## LIBRARIES
    94 #LIBS = -lgrib_api_f90 -lgrib_api -lm -ljasper -lnetcdff
    95 LIBS = -lgrib_api_f90 -lgrib_api -lm -ljasper $(NCOPT)
     96LIBS = -leccodes -leccodes_f90 -lm  $(NCOPT)
    9697
    9798FFLAGS   = -I$(INCPATH1) -I$(INCPATH2) -O$(O_LEV) -g -cpp -m64 -mcmodel=medium -fconvert=little-endian -frecord-marker=4 -fmessage-length=0 -flto=jobserver -O$(O_LEV) $(NCOPT) $(FUSER)  #-Warray-bounds -fcheck=all # -march=native
     
    128129        redist.o                \
    129130        concoutput_surf.o       concoutput_surf_nest.o  \
    130         concoutput_inversion_nest.o     \
    131         concoutput_inversion.o \
    132131        getfields.o \
    133         readwind_ecmwf.o
     132        readwind_ecmwf.o \
     133        initial_cond_output.o \
     134        initial_cond_output_inversion.o
    134135
    135136## For MPI version
     
    145146        concoutput_surf_mpi.o   concoutput_surf_nest_mpi.o      \
    146147        getfields_mpi.o \
    147         readwind_ecmwf_mpi.o
     148        readwind_ecmwf_mpi.o \
     149        initial_cond_output_mpi.o \
     150        initial_cond_output_inversion_mpi.o
    148151
    149152OBJECTS_NCF = netcdf_output_mod.o
    150153
    151154OBJECTS = \
     155initial_cond_calc.o \
    152156advance.o               initialize.o            \
    153157writeheader.o           writeheader_txt.o       \
     
    202206drydepokernel_nest.o    zenithangle.o \
    203207ohreaction.o            getvdep_nests.o \
    204 initial_cond_calc.o     initial_cond_output.o initial_cond_output_inversion.o \
    205208dynamic_viscosity.o     get_settling.o  \
    206209initialize_cbl_vel.o    re_initialize_particle.o \
    207 cbl.o
     210cbl.o \
     211concoutput_inversion_nest.o     \
     212concoutput_inversion.o \
     213
    208214
    209215ifeq ($(ncf), yes)
     
    325331init_domainfill_mpi.o: com_mod.o mpi_mod.o par_mod.o point_mod.o random_mod.o
    326332initial_cond_calc.o: com_mod.o outg_mod.o par_mod.o unc_mod.o
     333initial_cond_calc_mpi.o: com_mod.o outg_mod.o par_mod.o unc_mod.o
    327334initial_cond_output.o: com_mod.o outg_mod.o par_mod.o point_mod.o unc_mod.o
     335initial_cond_output_mpi.o: com_mod.o outg_mod.o par_mod.o point_mod.o unc_mod.o mpi_mod.o
    328336initial_cond_output_inversion.o: com_mod.o outg_mod.o par_mod.o point_mod.o \
     337        unc_mod.o
     338initial_cond_output_inversion_mpi.o: com_mod.o outg_mod.o par_mod.o point_mod.o \
    329339        unc_mod.o
    330340initialize.o: com_mod.o hanna_mod.o interpol_mod.o par_mod.o random_mod.o
  • src/mpi_mod.f90

    r0c8c7f2 rf3054ea  
    25972597601 end subroutine mpif_tm_reduce_grid_nest
    25982598
     2599
     2600  subroutine mpif_tm_reduce_initcond
     2601!***********************************************************************
     2602! Collect init_cond to PID 0, adding from all processes.
     2603!
     2604!
     2605!***********************************************************************
     2606    use com_mod
     2607    use unc_mod
     2608    use par_mod
     2609
     2610    implicit none
     2611
     2612    integer :: grid_size
     2613
     2614!**********************************************************************
     2615
     2616    grid_size=numxgrid*numygrid*numzgrid*maxspec* &
     2617         & maxpointspec_act
     2618
     2619! Time for MPI communications
     2620    if (mp_measure_time) call mpif_mtime('commtime',0)
     2621
     2622
     2623#ifdef USE_MPIINPLACE
     2624! Using in-place reduction
     2625    if (lroot) then
     2626      call MPI_Reduce(MPI_IN_PLACE, init_cond, grid_size, mp_sp, MPI_SUM, id_root, &
     2627           & mp_comm_used, mp_ierr)
     2628      if (mp_ierr /= 0) goto 600
     2629    else
     2630      call MPI_Reduce(init_cond, 0, grid_size, mp_sp, MPI_SUM, id_root, &
     2631           & mp_comm_used, mp_ierr)
     2632      if (mp_ierr /= 0) goto 600
     2633    end if
     2634
     2635#else
     2636    call MPI_Reduce(init_cond, init_cond0, grid_size, mp_sp, MPI_SUM, id_root, &
     2637         & mp_comm_used, mp_ierr)
     2638    if (mp_ierr /= 0) goto 600
     2639!    if (lroot) init_cond = init_cond0
     2640#endif
     2641
     2642    if (mp_measure_time) call mpif_mtime('commtime',1)
     2643
     2644    goto 601
     2645
     2646600 write(*,*) "mpi_mod> mp_ierr \= 0", mp_ierr
     2647    stop
     2648
     2649601 end subroutine mpif_tm_reduce_initcond
     2650   
    25992651
    26002652  subroutine mpif_mtime(ident,imode)
  • src/outgrid_init.f90

    r2eefa58 rf3054ea  
    315315         maxpointspec_act),stat=stat)
    316316    if (stat.ne.0) write(*,*)'ERROR: could not allocate init_cond'
     317    if (mpi_mode.gt.0) then
     318      if (lroot) then
     319        allocate(init_cond0(0:numxgrid-1,0:numygrid-1,numzgrid,maxspec, &
     320             maxpointspec_act),stat=stat)
     321      else
     322        allocate(init_cond0(1,1,1,1,1))
     323      end if
     324    end if
    317325  endif
    318326
  • src/timemanager.f90

    ra756649 rf3054ea  
    108108  implicit none
    109109
     110  integer(selected_int_kind(16)) :: idummy,idummy2
    110111  integer :: metdata_format
    111112  integer :: j,ks,kp,l,n,itime=0,nstop,nstop1
    112113! integer :: ksp
    113114  integer :: loutnext,loutstart,loutend
    114   integer :: ix,jy,ldeltat,itage,nage,idummy,idummy2
     115  integer :: ix,jy,ldeltat,itage,nage
    115116  integer :: i_nan=0,ii_nan,total_nan_intl=0  !added by mc to check instability in CBL scheme
    116117  real :: outnum,weight,prob_rec(maxspec),prob(maxspec),decfact,wetscav
     
    397398              call concoutput(itime,outnum,gridtotalunc,wetgridtotalunc,drygridtotalunc)
    398399            endif
    399           else
     400          else ! surf only
    400401            if (verbosity.eq.1) then
    401              print*,'call concoutput_surf '
    402              call system_clock(count_clock)
    403              write(*,*) 'system clock',count_clock - count_clock0   
     402              print*,'call concoutput_surf '
     403              call system_clock(count_clock)
     404              write(*,*) 'system clock',count_clock - count_clock0   
    404405            endif
    405406            if (lnetcdfout.eq.1) then
     
    416417                endif
    417418              else
    418               call concoutput_surf(itime,outnum,gridtotalunc,wetgridtotalunc,drygridtotalunc)
     419                call concoutput_surf(itime,outnum,gridtotalunc,wetgridtotalunc,drygridtotalunc)
    419420              endif
    420421              if (verbosity.eq.1) then
     
    434435                  call concoutput_inversion_nest(itime,outnum)
    435436                else
    436                 call concoutput_surf_nest(itime,outnum)
    437               endif
     437                  call concoutput_surf_nest(itime,outnum)
     438                endif
    438439              endif
    439440            else
  • src/timemanager_mpi.f90

    r0c8c7f2 rf3054ea  
    109109  implicit none
    110110
     111  integer(selected_int_kind(16)) :: idummy,idummy2
    111112  integer :: metdata_format
    112113  logical :: reqv_state=.false. ! .true. if waiting for a MPI_Irecv to complete
     
    115116  integer :: ip,irec
    116117  integer :: loutnext,loutstart,loutend
    117   integer :: ix,jy,ldeltat,itage,nage,idummy
     118  integer :: ix,jy,ldeltat,itage,nage
    118119  integer :: i_nan=0,ii_nan,total_nan_intl=0  !added by mc to check instability in CBL scheme
    119120  integer :: numpart_tot_mpi ! for summing particles on all processes
     
    177178!********************************************************************
    178179
    179     if (mp_dbg_mode) write(*,*) 'myid, itime: ',mp_pid,itime
     180!    if (mp_dbg_mode) write(*,*) 'myid, itime: ',mp_pid,itime
    180181   
    181182    if (WETDEP .and. itime .ne. 0 .and. numpart .gt. 0) then
     
    298299
    299300    if (lmpreader.and.lmp_use_reader) then
    300       if (itime.lt.ideltas*ldirect) then
     301      if (abs(itime).lt.ideltas*ldirect) then
    301302        cycle
    302303      else
     
    498499              creceptor(:,:)=0.
    499500            end if
    500           else
     501          else ! surf only
    501502            if (lroot) then
    502503              if (lnetcdfout.eq.1) then
     
    506507#endif
    507508              else
    508                 call concoutput_surf(itime,outnum,gridtotalunc,wetgridtotalunc,drygridtotalunc)
     509                if (linversionout.eq.1) then
     510                  call concoutput_inversion(itime,outnum,gridtotalunc,wetgridtotalunc,drygridtotalunc)
     511                else
     512                  call concoutput_surf(itime,outnum,gridtotalunc,wetgridtotalunc,drygridtotalunc)
     513                end if
    509514              end if
    510515            else
     
    534539
    535540              else
    536                 call concoutput_surf_nest(itime,outnum)
     541                if(linversionout.eq.1) then
     542                  if (lroot) then
     543                    call concoutput_inversion_nest(itime,outnum)
     544                  else
     545                    griduncn(:,:,:,:,:,:,:)=0.
     546                  end if
     547                else
     548                  if (lroot) then
     549                    call concoutput_surf_nest(itime,outnum)
     550                  else
     551                    griduncn(:,:,:,:,:,:,:)=0.
     552                  end if
     553                end if
    537554              end if
    538555            else
     
    742759       do ks=1,nspec
    743760         if  ((xscav_frac1(j,ks).lt.0)) then
    744             call get_wetscav(itime,lsynctime,loutnext,j,ks,grfraction,idummy,idummy,wetscav)
     761            call get_wetscav(itime,lsynctime,loutnext,j,ks,grfraction,idummy,idummy2,wetscav)
    745762            if (wetscav.gt.0) then
    746763                xscav_frac1(j,ks)=wetscav* &
     
    895912!*****************************************************************************
    896913
    897 ! eso :TODO: this not implemented yet (transfer particles to PID 0 or rewrite)
    898 ! the tools to do this are already in mpi_mod.f90
    899   if (lroot) then
    900     do j=1,numpart
    901       if (linit_cond.ge.1) call initial_cond_calc(itime,j)
    902     end do
    903   end if
    904 
    905 
     914  do j=1,numpart
     915    if (linit_cond.ge.1) call initial_cond_calc(itime,j)
     916  end do
     917
     918! Transfer sum of init_cond field to root process, for output
     919  call mpif_tm_reduce_initcond
     920   
    906921  if (ipout.eq.2) then
    907922! MPI process 0 creates the file, the other processes append to it
     
    915930  end if
    916931
    917 ! eso :TODO: MPI
    918   if (linit_cond.ge.1.and.lroot) call initial_cond_output(itime)   ! dump initial cond. field
     932 
     933  if (linit_cond.ge.1.and.lroot) then
     934    if(linversionout.eq.1) then
     935      call initial_cond_output_inversion(itime)   ! dump initial cond. field
     936    else
     937      call initial_cond_output(itime)   ! dump initial cond. fielf
     938    endif
     939  endif
    919940
    920941
  • src/unc_mod.f90

    r0ecc1fe rf3054ea  
    5353
    5454  real,allocatable, dimension (:,:,:,:,:) :: init_cond
     55  real,allocatable, dimension (:,:,:,:,:) :: init_cond0 ! for MPI
    5556
    5657end module unc_mod
  • src/writeheader.f90

    ra756649 rf3054ea  
    100100  !*****************************************************************************
    101101
    102   write(*,*) "writeheader/nspec", nspec
    103  
    104102  write(unitheader) 3*nspec,maxpointspec_act
    105103  do i=1,nspec
Note: See TracChangeset for help on using the changeset viewer.
hosted by ZAMG