@@ -38,10 +38,16 @@ class Marchenko():
3838 nsmooth : :obj:`int`, optional
3939 Number of samples of smoothing operator to apply to window
4040 saveRt : :obj:`bool`, optional
41- Save ``R`` and ``R^H`` to speed up the computation of adjoint of
41+ Save ``R`` and ``R^H`` to speed up the computation of the adjoint of
4242 :class:`pylops_distributed.signalprocessing.Fredholm1` (``True``) or
4343 create ``R^H`` on-the-fly (``False``) Note that ``saveRt=True`` will be
4444 faster but double the amount of required memory
45+ prescaled : :obj:`bool`, optional
46+ Apply scaling to ``R`` (``False``) or not (``False``)
47+ when performing spatial and temporal summations within the
48+ :class:`pylops.waveeqprocessing.MDC` operator. In case
49+ ``prescaled=True``, the ``R`` is assumed to have been pre-scaled by
50+ the user.
4551 dtype : :obj:`bool`, optional
4652 Type of elements in input array.
4753
@@ -73,7 +79,7 @@ class Marchenko():
7379
7480 """
7581 def __init__ (self , R , nt , dt = 0.004 , dr = 1. , wav = None , toff = 0.0 ,
76- nsmooth = 10 , saveRt = True , dtype = 'float64' ):
82+ nsmooth = 10 , saveRt = True , prescaled = False , dtype = 'float64' ):
7783 # Save inputs into class
7884 self .nt = nt
7985 self .dt = dt
@@ -82,6 +88,7 @@ def __init__(self, R, nt, dt=0.004, dr=1., wav=None, toff=0.0,
8288 self .toff = toff
8389 self .nsmooth = nsmooth
8490 self .saveRt = saveRt
91+ self .prescaled = prescaled
8592 self .dtype = dtype
8693 self .explicit = False
8794
@@ -163,9 +170,11 @@ def apply_onepoint(self, trav, dist=None, G0=None, nfft=None,
163170
164171 # Create operators
165172 Rop = MDC (self .Rtwosided_fft , self .nt2 , nv = 1 , dt = self .dt , dr = self .dr ,
166- twosided = True , conj = False , saveGt = self .saveRt )
173+ twosided = True , conj = False , saveGt = self .saveRt ,
174+ prescaled = self .prescaled )
167175 R1op = MDC (self .Rtwosided_fft , self .nt2 , nv = 1 , dt = self .dt , dr = self .dr ,
168- twosided = True , conj = True , saveGt = self .saveRt )
176+ twosided = True , conj = True , saveGt = self .saveRt ,
177+ prescaled = self .prescaled )
169178 Rollop = Roll (self .nt2 * self .ns ,
170179 dims = (self .nt2 , self .ns ),
171180 dir = 0 , shift = - 1 , dtype = self .dtype )
@@ -327,9 +336,11 @@ def apply_multiplepoints(self, trav, dist=None, G0=None, nfft=None,
327336
328337 # Create operators
329338 Rop = MDC (self .Rtwosided_fft , self .nt2 , nv = nvs , dt = self .dt ,
330- dr = self .dr , twosided = True , conj = False , saveGt = self .saveRt )
339+ dr = self .dr , twosided = True , conj = False , saveGt = self .saveRt ,
340+ prescaled = self .prescaled )
331341 R1op = MDC (self .Rtwosided_fft , self .nt2 , nv = nvs , dt = self .dt ,
332- dr = self .dr , twosided = True , conj = True , saveGt = self .saveRt )
342+ dr = self .dr , twosided = True , conj = True , saveGt = self .saveRt ,
343+ prescaled = self .prescaled )
333344 Rollop = Roll (self .ns * nvs * self .nt2 ,
334345 dims = (self .nt2 , self .ns , nvs ),
335346 dir = 0 , shift = - 1 , dtype = self .dtype )
0 commit comments