def stateVariables(self,m,feval=True): self.tag(m) Fork(time=4,ipn=self.ipn,nodes=self.nodes) for iexp in range(self.nexp): stag = '-%03d'%iexp ss = self.ss[iexp] rr = self.rr[iexp] wav = self.dS[iexp] datT = self.dR[iexp] vel = m swfl = 'tmp/swfl-'+self.mtag+stag mdatT = 'tmp/mdatT-'+self.mtag+stag mdat = 'tmp/mdat-'+self.mtag+stag dat = 'tmp/dat-'+self.mtag+stag corr = self.sdir+'corr-'+self.mtag+stag Ldat = aweop2d(vel,self.par,ss,rr,'',custom=self.customfd) Ldat.FORW(wav,mdatT) if not feval: Lswfl = aweop2d(vel,self.par,ss,'','', custom=self.customfd) Lswfl.FORW(wav,swfl) Flow(mdat,mdatT,'transp') Flow(dat ,datT,'transp') lcorr = Lcorr(dat,self.nlag,self.s3, self.par['ot'],self.par['dt'],self.par['nt'], self.par['ot'],self.par['dt'],int(self.par['nt'])) lcorr.FORW(mdat,corr) Iterate() Join()
def adjointStateVariables(self,m,feval=False): self.tag(m) zero = 'tmp/zero'+self.mtag Flow(zero,'tmp/dat-'+self.mtag+'-000','math output="0"') Fork(time=4,ipn=self.ipn,nodes=self.nodes) for iexp in range(self.nexp): stag = '-%03d'%iexp ss = self.ss[iexp] rr = self.rr[iexp] wav = self.dS[iexp] datT = self.dR[iexp] vel = m swfl = 'tmp/swfl-'+self.mtag+stag awfl = 'tmp/awfl-'+self.mtag+stag dat = 'tmp/dat-'+self.mtag+stag pcorr = 'tmp/pcorr-'+self.mtag+stag corr = self.sdir+'corr-'+self.mtag+stag iofd = 'tmp/iofd-'+self.mtag+stag # 1/denomitator norm nof = 'tmp/nof-'+self.mtag+stag # - of nadjtsrcT = 'tmp/nadjtsrcT-'+self.mtag+stag dadjtsrcT = 'tmp/dadjtsrcT-'+self.mtag+stag adjsrc = 'tmp/adjtsrc-'+self.mtag+stag grds = 'tmp/grd-'+self.mtag+stag lcorr = Lcorr(dat,self.nlag,self.s3, self.par['ot'],self.par['dt'],self.par['nt'], self.par['ot'],self.par['dt'],self.par['nt']) lcorr.ADJT(nadjtsrcT,pcorr) lcorr.ADJT(dadjtsrcT,corr) Flow(adjsrc,[dadjtsrcT,nadjtsrcT,nof,iofd,zero], ''' axplusy afile=${SOURCES[2]} y=${SOURCES[1]} | axplusy afile=${SOURCES[3]} y=${SOURCES[4]} | transp ''') Lrwfl = aweop2d(vel,self.par,'',rr,'', custom=self.customfd) Lrwfl.ADJT(awfl,adjsrc) Flow(grds,[swfl,awfl], ''' nderiv axis=3 order=2 |add mode=p ${SOURCES[1]} |stack axis=3 ''') Iterate() Join() Flow('tmp/partial-grad'+self.mtag, map(lambda x:'tmp/grd-'+self.mtag+'-%03d'%x,range(self.nexp)), 'add ${SOURCES[1:-1]}')
def adjointStateVariables(self,m,feval=False): self.tag(m) zero = 'tmp/zero'+self.mtag Flow(zero,'tmp/dat-'+self.mtag+'-000','math output="0"') Fork(time=4,ipn=self.ipn,nodes=self.nodes) for iexp in range(self.nexp): stag = '-%03d'%iexp ss = self.ss[iexp] rr = self.rr[iexp] wav = self.dS[iexp] datT = self.dR[iexp] vel = m swfl = 'tmp/swfl-'+self.mtag+stag awfl = 'tmp/awfl-'+self.mtag+stag dat = 'tmp/dat-'+self.mtag+stag pcorr = 'tmp/pcorr-'+self.mtag+stag corr = self.sdir+'corr-'+self.mtag+stag nadjtsrcT = 'tmp/nadjtsrcT-'+self.mtag+stag dadjtsrcT = 'tmp/dadjtsrcT-'+self.mtag+stag adjsrc = 'tmp/adjtsrc-'+self.mtag+stag grds = 'tmp/grd-'+self.mtag+stag lcorr = Lcorr(dat,self.nlag,self.s3, self.par['ot'],self.par['dt'],self.par['nt'], self.par['ot'],self.par['dt'],self.par['nt']) lcorr.ADJT(nadjtsrcT,pcorr) lcorr.ADJT(dadjtsrcT,corr) Flow(adjsrc,[dadjtsrcT,nadjtsrcT,self.nof,self.ndofd,zero], ''' axplusy afile=${SOURCES[2]} y=${SOURCES[1]} | axplusy afile=${SOURCES[3]} y=${SOURCES[4]} | transp ''') Lrwfl = aweop2d(vel,self.par,'',rr,'', custom=self.customfd) Lrwfl.ADJT(awfl,adjsrc) Flow(grds,[swfl,awfl], ''' nderiv axis=3 order=2 |add mode=p ${SOURCES[1]} | stack axis=3 >${SOURCES[0]}_tmp && nderiv axis=3 order=2 <$SOURCE | math output="input^2"| stack axis=3 |math output="sqrt(input)"| smooth rect1=10 rect2=10 repeat=4 >${SOURCES[0]}_tmp2 && math n=${SOURCES[0]}_tmp d=${SOURCES[0]}_tmp2 output="x1*n/d" >$TARGET&& rm ${SOURCES[0]}_tmp ${SOURCES[0]}_tmp2 ''',stdout=-1) Iterate() Join() Flow('tmp/partial-grad'+self.mtag, map(lambda x:'tmp/grd-'+self.mtag+'-%03d'%x,range(self.nexp)), 'add ${SOURCES[1:-1]}')
def adjointStateVariables(self,m,feval=False): self.tag(m) Fork(time=4,ipn=self.ipn,nodes=self.nodes) for iexp in range(self.nexp): stag = '-%03d'%iexp ss = self.ss[iexp] rr = self.rr[iexp] wav = self.dS[iexp] datT = self.dR[iexp] vel = m swfl = 'tmp/swfl-'+self.mtag+stag awfl = 'tmp/awfl-'+self.mtag+stag dat = 'tmp/dat-'+self.mtag+stag pcorr = 'tmp/pcorr-'+self.mtag+stag corr = self.sdir+'corr-'+self.mtag+stag of = 'tmp/of-'+self.mtag+stag # denomitator norm nof = 'tmp/nof-'+self.mtag+stag ofn = 'tmp/ofn-'+self.mtag+stag # numerator norm nofd = 'tmp/nofd-'+self.mtag+stag # numerator norm ofd = 'tmp/ofd-'+self.mtag+stag # denomitator norm dnofd = 'tmp/dnofd-'+self.mtag+stag # denomitator norm zero = ofn+'-zero' nadjtsrcT = 'tmp/nadjtsrcT-'+self.mtag+stag dadjtsrcT = 'tmp/dadjtsrcT-'+self.mtag+stag adjsrc = 'tmp/adjtsrc-'+self.mtag+stag Flow(nof,of,'scale rscale=-1') Flow(dnofd,ofd,'math output="-1/input"') grds = 'tmp/grd-'+self.mtag+stag lcorr = Lcorr(dat,self.nlag,self.s3, self.par['ot'],self.par['dt'],self.par['nt'], self.par['ot'],self.par['dt'],1+int(self.par['nt'])) lcorr.ADJT(nadjtsrcT,pcorr) lcorr.ADJT(dadjtsrcT,corr) Flow(zero,dadjtsrcT,'math output="0"') #Flow(adjsrc,[dadjtsrcT,nadjtsrcT,nof,dnofd,zero], # ''' # axplusy afile=${SOURCES[2]} y=${SOURCES[1]} | # axplusy afile=${SOURCES[3]} y=${SOURCES[4]} | # transp | # math output="input" # ''') Flow(adjsrc,[nadjtsrcT], ''' transp ''') Lrwfl = aweop2d(vel,self.par,'',rr,'', custom=self.customfd) Lrwfl.ADJT(awfl,adjsrc) Flow(grds,[swfl,awfl], 'nderiv axis=3 order=2 |add mode=p ${SOURCES[1]} |stack axis=3 ') Iterate() Join() Flow('tmp/partial-grad'+self.mtag, map(lambda x:'tmp/grd-'+self.mtag+'-%03d'%x,range(self.nexp)), 'add ${SOURCES[1:-1]}')