#Do the Inversion (time the inversion)
    start1 = time.time()
    ra.inv.maxIter = maxIterations
    #ra.invert(data=ra.data,mesh=mesh,lam=smoothing,zWeight=vertWeight,useGradient=True,vTop=minVel,vBottom=maxVel,maxIter=maxIterations,limits=[100,5000])
    #ra2.invert(data=ra2.data,mesh=mesh,lam=smoothing,zWeight=vertWeight,useGradient=True,vTop=minVel-minVel/1.6,vBottom=maxVel-maxVel/1.6,maxIter=maxIterations,limits=[25,3000])
    ra.invert(data=ra.data,
              mesh=mesh,
              lam=smoothing,
              zWeight=vertWeight,
              useGradient=True,
              vTop=minVel,
              vBottom=maxVel,
              verbose=True)
    end1 = time.time()

    vel = ra.paraModel()
    vel2Start = vel / 2
    ra2.inv.startModel = vel2Start
    ra2.inv.maxIter = maxIterations
    start2 = time.time()
    ra2.invert(data=ra2.data,
               mesh=mesh,
               lam=smoothing,
               zWeight=vertWeight,
               verbose=True,
               startModel=1 / vel2Start)
    #ra2.invert(data=ra2.data,mesh=mesh,lam=smoothing,zWeight=vertWeight,useGradient=True,vTop=minVel/2,vBottom=maxVel/2,verbose=True)
    end2 = time.time()

    #Print out important model Inversion results
    print('***********P-WAVE RESULTS***********')
        (end1 - start1) / 60)) + " min\n"
    s2 = "Chi2 = " + str("{:0.4f}".format(ra.inv.chi2())) + "\n"
    s3 = "RMS = " + str("{:0.4f}".format(
        1000 * ra.inv._inv.absrms())) + " ms\n"
    s4 = "Total Iterations = " + str("{:0.0f}".format(ra.inv.maxIter)) + "\n"
    print(s1)
    print(s2)
    print(s3)
    print(s4)
    outFile = open('InversionStats.txt', 'w')
    outFile.write(s1 + s2 + s3 + s4)
    outFile.close()
    #*************************************************************************

    #Calculate Vertical Gradient
    vel = ra.paraModel()

    vertGrad = pg.solver.grad(mesh, vel)
    #pr = np.array(pr)
    #ind = np.where(pr<0)
    #pr[ind] = 0
    #ind = np.where(pr>0.5)
    #pr[ind] = 0.5

    #Save Results as a .vtk file (Paraview)
    mesh.addData('P-wave Velocity', vel)
    mesh.addData('Vertical Velocity Gradient', vertGrad)
    mesh.addData('cov', ra.coverage())
    mesh.addData('stdCov', ra.standardizedCoverage())
    mesh.exportVTK(pickFile.split('.')[0] + '_gimliResults.vtk')
            #Do the Inversion (time the inversion)
            start = time.time()
            ra.inv.maxIter = maxIterations
            ra.invert(data=ra.data,
                      mesh=mesh,
                      lam=smoothing,
                      zWeight=vertWeight,
                      useGradient=True,
                      vTop=minVel,
                      vBottom=maxVel)
            end = time.time()

            if i == 0:
                velModels = np.zeros((len(mesh.cellCenters()), nRuns))
                velModels[:, i] = ra.paraModel()
            else:
                velModels[:, i] = ra.paraModel()
                np.savetxt(
                    path2Runs + 'allVelocityModels.txt', velModels
                )  #fail safe write the data each iteration in case of crash

            print('\n\nCompleted Run ' + str(i + 1) + ' of ' + str(nRuns) +
                  ' Inversion...\n\n')
            plotAndSaveResults(path2Runs,
                               folderName,
                               mesh,
                               ra,
                               start,
                               end,
                               finalModel=False)