anchor.diff:          enddo
           enddo
   
  - !        IF ( write_thompson_tables .AND. wrf_dm_on_monitor() ) THEN
  - !          CALL wrf_message("Writing freezeH2O.dat in Thompson MP init")
  - !          OPEN(63,file="freezeH2O.dat",form="unformatted",err=9234)
  - !          WRITE(63,err=9234)tpi_qrfz
  - !          WRITE(63,err=9234)tni_qrfz
  - !          WRITE(63,err=9234)tpg_qrfz
  - !          WRITE(63,err=9234)tnr_qrfz
  - !          WRITE(63,err=9234)tpi_qcfz
  - !          WRITE(63,err=9234)tni_qcfz
  - !          CLOSE(63)
  - !          RETURN    ! ----- RETURN
  - ! 9234     CONTINUE
  - !          CALL wrf_error_fatal("Error writing freezeH2O.dat")
  - !        ENDIF
  +        IF ( this_image() == 1 ) THEN
  +          print *, "Writing freezeH2O.dat in Thompson MP init"
  +          OPEN(63,file="freezeH2O.dat",form="unformatted",err=9234)
  +          WRITE(63,err=9234)tpi_qrfz
  +          WRITE(63,err=9234)tni_qrfz
  +          WRITE(63,err=9234)tpg_qrfz
  +          WRITE(63,err=9234)tnr_qrfz
  +          WRITE(63,err=9234)tpi_qcfz
  +          WRITE(63,err=9234)tni_qcfz
  +          CLOSE(63)
  +          RETURN    ! ----- RETURN
  + 9234     CONTINUE
  +          print*, "Error writing freezeH2O.dat"
  +        ENDIF
         ENDIF
   
         end subroutine freezeH2O
  
positive.code:       sync all()
  
        IF ( good .NE. 1 ) THEN
          print *, "ThompMP: computing qr_acr_qg"
          do n2 = 1, nbr
  !        vr(n2) = av_r*Dr(n2)**bv_r * DEXP(-fv_r*Dr(n2))
           vr(n2) = -0.1021 + 4.932E3*Dr(n2) - 0.9551E6*Dr(n2)*Dr(n2)     &
  
negative.code:       DOUBLE PRECISION:: y1, y2, y3, y4
        LOGICAL force_read_thompson, write_thompson_tables
        LOGICAL lexist,lopen
        INTEGER, allocatable :: good[:]
      !   LOGICAL, EXTERNAL :: wrf_dm_on_monitor
        allocate(good[*])
  
  !+---+
  
  