From 4e9f1e991305cd4277e89f3dca011ff89d67b8ac Mon Sep 17 00:00:00 2001 From: Jan Thorbecke <janth@xs4all.nl> Date: Thu, 2 Nov 2017 15:08:44 +0100 Subject: [PATCH] cleaning up raytime --- extrap/demo/model.scr | 8 + extrap/demo/syncline.makemod | 46 + fdelmodc/applySource.c.old | 309 ------- fdelmodc/boundaries.c.botok | 1430 ----------------------------- fdelmodc/boundaries.c.ok | 1364 ---------------------------- fdelmodc/boundaries.c.ok2 | 1057 ---------------------- fdelmodc/boundaries.c.ok3 | 1057 ---------------------- fdelmodc/boundaries.c.ok4 | 1075 ---------------------- fdelmodc/boundaries.c.try | 1654 --------------------------------- fdelmodc/boundaries.c.try2 | 1658 ---------------------------------- fdelmodc/fdelmodc | Bin 586080 -> 0 bytes raytime/JespersRayTracer.c | 3 - raytime/Makefile | 2 +- raytime/getParameters.c | 187 +--- raytime/raytime.c | 28 +- raytime/readModel.c | 8 +- 16 files changed, 70 insertions(+), 9816 deletions(-) create mode 100755 extrap/demo/model.scr create mode 100644 extrap/demo/syncline.makemod delete mode 100644 fdelmodc/applySource.c.old delete mode 100644 fdelmodc/boundaries.c.botok delete mode 100644 fdelmodc/boundaries.c.ok delete mode 100644 fdelmodc/boundaries.c.ok2 delete mode 100644 fdelmodc/boundaries.c.ok3 delete mode 100644 fdelmodc/boundaries.c.ok4 delete mode 100644 fdelmodc/boundaries.c.try delete mode 100644 fdelmodc/boundaries.c.try2 delete mode 100755 fdelmodc/fdelmodc diff --git a/extrap/demo/model.scr b/extrap/demo/model.scr new file mode 100755 index 0000000..692e646 --- /dev/null +++ b/extrap/demo/model.scr @@ -0,0 +1,8 @@ +#!/bin/bash + +makemod par=syncline.makemod + +makewave \ + fmax=60 db=-30 shift=1 \ + dt=0.004 nt=512 file_out=ricker.su + diff --git a/extrap/demo/syncline.makemod b/extrap/demo/syncline.makemod new file mode 100644 index 0000000..a915da5 --- /dev/null +++ b/extrap/demo/syncline.makemod @@ -0,0 +1,46 @@ +# +file_base=syncline.su +cp0=2000 +ro0=1500 +sizex=3000 +sizez=2000 +dx=2.5 +dz=2.5 +orig=0,0 +writeint=1 + +intt=def +poly=0 +cp=2200 +ro=2200 +x=0,3000 +z=300,300 + +intt=def +poly=2 +cp=2700 +ro=2800 +x=0,500,1000,1100,1500,1900,3000 +z=700,700,750,800,950,800,500 + +intt=def +poly=0 +cp=2400 +ro=2200 +x=1500,3000 +z=1200,1200 + +intt=def +poly=0 +cp=3000 +ro=3200 +x=0,1500,3000 +z=1200,1200,1400 + +#intt=diffr +#cp=0 +#ro=2200 +#x=750 +#z=1000 + + diff --git a/fdelmodc/applySource.c.old b/fdelmodc/applySource.c.old deleted file mode 100644 index b8ecf49..0000000 --- a/fdelmodc/applySource.c.old +++ /dev/null @@ -1,309 +0,0 @@ -#include<stdlib.h> -#include<stdio.h> -#include<math.h> -#include<assert.h> -#include"fdelmodc.h" - -void vmess(char *fmt, ...); - -/********************************************************************* - * - * Add's the source amplitude(s) to the grid. - * - * For the acoustic schemes, the source-type must not be txx tzz or txz. - * - * AUTHOR: - * Jan Thorbecke (janth@xs4all.nl) - * The Netherlands - * - **********************************************************************/ - -int applySource(modPar mod, srcPar src, wavPar wav, bndPar bnd, int itime, int ixsrc, int izsrc, float *vx, float *vz, float *tzz, float *txx, float *txz, float *rox, float *roz, float *l2m, float **src_nwav, int verbose) -{ - int is0, ibndz, ibndx; - int isrc, ix, iz, n1; - int id1, id2; - float src_ampl, time, scl, dt, sdx; - static int first=1; - - if (src.type==6) { - ibndz = mod.ioXz; - ibndx = mod.ioXx; - } - else if (src.type==7) { - ibndz = mod.ioZz; - ibndx = mod.ioZx; - } - else if (src.type==2) { - ibndz = mod.ioTz; - ibndx = mod.ioTx; - } - else { - ibndz = mod.ioPz; - ibndx = mod.ioPx; - } - n1 = mod.naz; - dt = mod.dt; - sdx = 1.0/mod.dx; - - /* special txz source activated? */ - - if ((bnd.top==1) && (src.type==2)) { - iz = izsrc + ibndz; - if (iz==ibndz) { - if (src.orient != 1) { - if (first) { - vmess("Only monopole Txz source allowed at surface. Reset to monopole"); - first = 0; - } - src.orient=1; - } - } - } - -/* -* for plane wave sources the sources are placed -* around the central shot position -* the first source position has an offset in x of is0 -* -* itime = 0 corresponds with time=0 -* itime = 1 corresponds with time=dt -* src[0] (the first sample) corresponds with time = 0 -*/ - - is0 = -1*floor((src.n-1)/2); -#pragma omp for private (isrc, src_ampl, ix, iz, time, id1, id2, scl) - for (isrc=0; isrc<src.n; isrc++) { - src_ampl=0.0; - /* calculate the source position */ - if (src.random) { - ix = src.x[isrc] + ibndx; - iz = src.z[isrc] + ibndz; - } - else { /* plane wave and point sources */ - ix = ixsrc + ibndx + is0 + isrc; - iz = izsrc + ibndz; - } - time = itime*dt - src.tbeg[isrc]; - id1 = floor(time/dt); - id2 = id1+1; - - /* delay not reached or no samples left in source wavelet? */ - if ( (time < 0.0) || ( (itime*dt) >= src.tend[isrc]) ) continue; - -// fprintf(stderr,"isrc=%d ix=%d iz=%d src.x=%d src.z=%d\n", isrc, ix, iz, src.x[isrc], src.z[isrc]); - - if (!src.multiwav) { /* only one wavelet for all sources */ - src_ampl = src_nwav[0][id1]*(id2-time/dt) + src_nwav[0][id2]*(time/dt-id1); - } - else { /* multi-wavelet sources */ - src_ampl = src_nwav[isrc][id1]*(id2-time/dt) + src_nwav[isrc][id2]*(time/dt-id1); - } - - if (src_ampl==0.0) continue; - if ( ((ix-ibndx)<0) || ((ix-ibndx)>mod.nx) ) continue; /* source outside grid */ - - if (verbose>4) { - fprintf(stderr,"Source %d at grid [ix=%d,iz=%d] at itime %d has value %e\n",isrc, ix,iz, itime, src_ampl); - } - - /* cosine squared windowing to reduce edge effects on shot arrays */ - if ( (src.n>1) && src.window) { - if (isrc < src.window) { - scl = cos(0.5*M_PI*(src.window - isrc)/src.window); - } - else if (isrc > src.n-src.window+1) { - scl = cos(0.5*M_PI*(src.window - (src.n-isrc+1))/src.window); - } - src_ampl *= scl*scl; - } - - /* source scaling factor to compensate for discretisation */ - - /* old amplitude setting does not obey reciprocity */ - // src_ampl *= rox[ix*n1+iz]*l2m[ix*n1+iz]/(dt); - - src_ampl *= (1.0/mod.dx)*l2m[ix*n1+iz]; - - /* Force source */ - - if (src.type == 6) { -// vx[ix*n1+iz] += src_ampl*(dt/mod.dx)/(l2m[ix*n1+iz]); - vx[ix*n1+iz] += src_ampl*rox[ix*n1+iz]/(l2m[ix*n1+iz]); - } - else if (src.type == 7) { -// fprintf(stderr,"l2m=%e rox=%e rho=%e dt=%e dx=%e\n", l2m[ix*n1+iz], roz[ix*n1+iz], dt/(mod.dx*roz[ix*n1+iz]), dt, mod.dx); - /* old amplitude setting does not obey reciprocity */ -// vz[ix*n1+iz] += src_ampl*(dt/mod.dx)/(l2m[ix*n1+iz]); - vz[ix*n1+iz] += src_ampl*roz[ix*n1+iz]/(l2m[ix*n1+iz]); - } /* src.type */ - - - /* Stress source */ - - if (mod.ischeme <= 2) { /* Acoustic scheme */ - /* Compressional source */ - if (src.type == 1) { - if (src.orient != 1) src_ampl=src_ampl/mod.dx; - - if (src.orient==1) { /* monopole */ - tzz[ix*n1+iz] += src_ampl; - } - else if (src.orient==2) { /* dipole +/- */ - tzz[ix*n1+iz] += src_ampl; - tzz[ix*n1+iz+1] -= src_ampl; - } - else if (src.orient==3) { /* dipole - + */ - tzz[ix*n1+iz] += src_ampl; - tzz[(ix-1)*n1+iz] -= src_ampl; - } - else if (src.orient==4) { /* dipole +/0/- */ - if (iz > ibndz) - tzz[ix*n1+iz-1]+= 0.5*src_ampl; - if (iz < mod.nz+ibndz-1) - tzz[ix*n1+iz+1] -= 0.5*src_ampl; - } - else if (src.orient==5) { /* dipole + - */ - tzz[ix*n1+iz] += src_ampl; - tzz[(ix+1)*n1+iz] -= src_ampl; - } - } - } - else { /* Elastic scheme */ - /* Compressional source */ - if (src.type == 1) { - if (src.orient==1) { /* monopole */ - txx[ix*n1+iz] += src_ampl; - tzz[ix*n1+iz] += src_ampl; - } - else if (src.orient==2) { /* dipole +/- */ - txx[ix*n1+iz] += src_ampl; - tzz[ix*n1+iz] += src_ampl; - txx[ix*n1+iz+1] -= src_ampl; - tzz[ix*n1+iz+1] -= src_ampl; - } - else if (src.orient==3) { /* dipole - + */ - txx[ix*n1+iz] += src_ampl; - tzz[ix*n1+iz] += src_ampl; - txx[(ix-1)*n1+iz] -= src_ampl; - tzz[(ix-1)*n1+iz] -= src_ampl; - } - else if (src.orient==4) { /* dipole +/0/- */ - if (iz > ibndz) { - txx[ix*n1+iz-1]+= 0.5*src_ampl; - tzz[ix*n1+iz-1]+= 0.5*src_ampl; - } - if (iz < mod.nz+ibndz-1) { - txx[ix*n1+iz+1] -= 0.5*src_ampl; - tzz[ix*n1+iz+1] -= 0.5*src_ampl; - } - } - else if (src.orient==5) { /* dipole + - */ - txx[ix*n1+iz] += src_ampl; - tzz[ix*n1+iz] += src_ampl; - txx[(ix+1)*n1+iz] -= src_ampl; - tzz[(ix+1)*n1+iz] -= src_ampl; - } - } - else if (src.type == 2) { - /* Txz source */ - if ((iz == ibndz) && bnd.top==1) { - txz[(ix-1)*n1+iz-1] += src_ampl; - txz[ix*n1+iz-1] += src_ampl; - } - else { - txz[ix*n1+iz] += src_ampl; - } - /* possible dipole orientations for a txz source */ - if (src.orient == 2) { /* dipole +/- */ - txz[ix*n1+iz+1] -= src_ampl; - } - else if (src.orient == 3) { /* dipole - + */ - txz[(ix-1)*n1+iz] -= src_ampl; - } - else if (src.orient == 4) { /* dipole +/O/- */ - /* correction: subtrace previous value to prevent z-1 values. */ - txz[ix*n1+iz] -= 2.0*src_ampl; - txz[ix*n1+iz+1] += src_ampl; - } - else if (src.orient == 5) { /* dipole + - */ - txz[(ix+1)*n1+iz] -= src_ampl; - } - } - /* Tzz source */ - else if(src.type == 3) { - tzz[ix*n1+iz] += src_ampl; - } - /* Txx source */ - else if(src.type == 4) { - txx[ix*n1+iz] += src_ampl; - } - -/*********************************************************************** -* pure potential shear S source (experimental) -***********************************************************************/ - else if(src.type == 5) { - src_ampl = src_ampl*rox[ix*n1+iz]/(l2m[ix*n1+iz]); - if (src.orient == 3 || src.orient == 4) src_ampl = -src_ampl; - vx[ix*n1+iz] += src_ampl*sdx; - vx[ix*n1+iz-1] -= src_ampl*sdx; - vz[ix*n1+iz] -= src_ampl*sdx; - vz[(ix-1)*n1+iz] += src_ampl*sdx; - /* determine second position of dipole */ - if (src.orient == 2) { /* dipole +/- */ - iz += 1; - } - else if (src.orient == 3) { /* dipole - + */ - ix += 1; - } - else if (src.orient == 4) { /* dipole +/0/- */ - iz += 1; - } - else if (src.orient == 5) { /* dipole + - */ - ix += 1; - } - if (src.orient != 1) { - src_ampl = -src_ampl; - vx[ix*n1+iz] -= src_ampl; - vz[ix*n1+iz] += src_ampl; - vx[ix*n1+iz-1] += src_ampl; - vz[(ix-1)*n1+iz] -= src_ampl; - } - } -/*********************************************************************** -* pure potential pressure P source (experimental) -***********************************************************************/ - else if(src.type == 8) { - src_ampl = src_ampl*rox[ix*n1+iz]/(l2m[ix*n1+iz]); - if (src.orient == 3 || src.orient == 4) src_ampl = -src_ampl; - vx[(ix+1)*n1+iz] += src_ampl*sdx; - vx[ix*n1+iz] -= src_ampl*sdx; - vz[ix*n1+iz+1] += src_ampl*sdx; - vz[ix*n1+iz] -= src_ampl*sdx; - /* determine second position of dipole */ - if (src.orient == 2) { /* dipole +/- */ - iz += 1; - } - else if (src.orient == 3) { /* dipole - + */ - ix += 1; - } - else if (src.orient == 4) { /* dipole +/0/- */ - iz += 1; - } - else if (src.orient == 5) { /* dipole + - */ - ix += 1; - } - if (src.orient != 1) { - src_ampl = -src_ampl; - vx[ix*n1+iz] -= src_ampl; - vz[ix*n1+iz] -= src_ampl; - vx[ix*n1+iz-1] += src_ampl; - vz[(ix-1)*n1+iz] += src_ampl; - } - - } /* src.type */ - } /* ischeme */ - } /* loop over isrc */ - - return 0; -} diff --git a/fdelmodc/boundaries.c.botok b/fdelmodc/boundaries.c.botok deleted file mode 100644 index 3f8e12c..0000000 --- a/fdelmodc/boundaries.c.botok +++ /dev/null @@ -1,1430 +0,0 @@ -#include<stdlib.h> -#include<stdio.h> -#include<math.h> -#include<assert.h> -#include"fdelmodc.h" - -float *exL, *exR, *eyT, *eyB; -int first=0; - -int boundariesP(modPar mod, bndPar bnd, float *vx, float *vz, float *tzz, float *txx, float *txz, float *rox, float *roz, float *l2m, float *lam, float *mul, int verbose) -{ -/********************************************************************* - - AUTHOR: - Jan Thorbecke (janth@xs4all.nl) - The Netherlands - -***********************************************************************/ - - float c1, c2; - float dp, dvx, dvz; - int ix, iz, ixs, izs, ibnd, ib, ibx, ibz; - int nx, nz, n1; - int is0, isrc, ioXx, ioXz, ioZz, ioZx, ioPx, ioPz, ioTx, ioTz; - int ixo, ixe, izo, ize; - - - c1 = 9.0/8.0; - c2 = -1.0/24.0; - nx = mod.nx; - nz = mod.nz; - n1 = mod.naz; - - ibnd = mod.iorder/2-1; - /* Vx: rox */ - ioXx=mod.ioXx; - ioXz=mod.ioXz; - /* Vz: roz */ - ioZz=mod.ioZz; - ioZx=mod.ioZz; - /* P, Txx, Tzz: lam, l2m */ - ioPx=mod.ioPx; - ioPz=mod.ioPz; - /* Txz: muu */ - ioTx=mod.ioTx; - ioTz=mod.ioTz; - -/************************************************************/ -/* rigid boundary condition clears velocities on boundaries */ -/************************************************************/ - - if (bnd.top==3) { /* rigid surface at top */ -#pragma omp for private (ix, iz) nowait -#pragma ivdep - for (ix=1; ix<=nx; ix++) { - vx[ix*n1+ibnd] = 0.0; - vz[ix*n1+ibnd] = -vz[ix*n1+ibnd+1]; - if (mod.iorder >= 4) vz[ix*n1+ibnd-1] = -vz[ix*n1+ibnd+2]; - if (mod.iorder >= 6) vz[ix*n1+ibnd-2] = -vz[ix*n1+ibnd+3]; - } - } - if (bnd.rig==3) { /* rigid surface at right */ -#pragma omp for private (ix, iz) nowait -#pragma ivdep - for (iz=1; iz<=nz; iz++) { - vz[(nx+ibnd-1)*n1+iz] = 0.0; - vx[(nx+ibnd)*n1+iz] = -vx[(nx+ibnd-1)*n1+iz]; - if (mod.iorder == 4) vx[(nx+2)*n1+iz] = -vx[(nx-1)*n1+iz]; - if (mod.iorder == 6) { - vx[(nx+1)*n1+iz] = -vx[(nx)*n1+iz]; - vx[(nx+3)*n1+iz] = -vx[(nx-2)*n1+iz]; - } - } - } - if (bnd.bot==3) { /* rigid surface at bottom */ -#pragma omp for private (ix, iz) nowait -#pragma ivdep - for (ix=1; ix<=nx; ix++) { - vx[ix*n1+nz+ibnd-1] = 0.0; - vz[ix*n1+nz+ibnd] = -vz[ix*n1+nz+ibnd-1]; - if (mod.iorder == 4) vz[ix*n1+nz+2] = -vz[ix*n1+nz-1]; - if (mod.iorder == 6) { - vz[ix*n1+nz+1] = -vz[ix*n1+nz]; - vz[ix*n1+nz+3] = -vz[ix*n1+nz-2]; - } - } - } - if (bnd.lef==3) { /* rigid surface at left */ -#pragma omp for private (ix, iz) nowait -#pragma ivdep - for (iz=1; iz<=nz; iz++) { - vz[ibnd*n1+iz] = 0.0; - vx[ibnd*n1+iz] = -vx[(ibnd+1)*n1+iz]; - if (mod.iorder == 4) vx[0*n1+iz] = -vx[3*n1+iz]; - if (mod.iorder == 6) { - vx[1*n1+iz] = -vx[4*n1+iz]; - vx[0*n1+iz] = -vx[5*n1+iz]; - } - } - } - -/************************************************************/ -/* PML boundaries : only for acoustic 4th order scheme */ -/************************************************************/ - - if (bnd.top==2) { /* PML at top */ - } - -/************************************************************/ -/* Tapered boundaries for both elastic and acoustic schemes */ -/* compute all field values in tapered areas */ -/************************************************************/ - - /*********/ - /* Top */ - /*********/ - if (bnd.top==4) { - - if (mod.ischeme <= 2) { /* Acoustic scheme */ - - /* Vx field */ - ixo = mod.ioXx; - ixe = mod.ieXx; -// if (bnd.lef==4) ixo -= bnd.ntap; -// if (bnd.rig==4) ixe += bnd.ntap; - izo = mod.ioXz-bnd.ntap; - ize = mod.ioXz; - - ib = (bnd.ntap+izo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - - vx[ix*n1+iz] *= bnd.tapx[ib-iz]; - } - } - /* right top corner */ - if (bnd.rig==4) { - ixo = mod.ieXx; - ixe = ixo+bnd.ntap; - ibz = (bnd.ntap+izo-1); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - - vx[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(ibz-iz)]; - } - } - } - /* left top corner */ - if (bnd.lef==4) { - ixo = mod.ioXx-bnd.ntap; - ixe = mod.ioXx; - ibz = (bnd.ntap+izo-1); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - - vx[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(ibz-iz)]; - } - } - } - - - /* Vz field */ - ixo = mod.ioZx; - ixe = mod.ieZx; -// if (bnd.lef==4) ixo -= bnd.ntap; -// if (bnd.rig==4) ixe += bnd.ntap; - izo = mod.ioZz-bnd.ntap; - ize = mod.ioZz; - - ib = (bnd.ntap+izo-1); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - - vz[ix*n1+iz] *= bnd.tapz[ib-iz]; - } - } - /* right top corner */ - if (bnd.rig==4) { - ixo = mod.ieZx; - ixe = ixo+bnd.ntap; - ibz = (bnd.ntap+izo-1); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - - vz[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(ibz-iz)]; - } - } - } - /* left top corner */ - if (bnd.lef==4) { - ixo = mod.ioZx-bnd.ntap; - ixe = mod.ioZx; - ibz = (bnd.ntap+izo-1); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - - vz[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(ibz-iz)]; - } - } - } - - } - else { /* Elastic scheme */ - - /* Vx field */ - ixo = mod.ioXx; - ixe = mod.ieXx; -// if (bnd.lef==4) ixo -= bnd.ntap; -// if (bnd.rig==4) ixe += bnd.ntap; - izo = mod.ioXz-bnd.ntap; - ize = mod.ioXz; - - ib = (bnd.ntap+izo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapx[ib-iz]; - } - } - /* right top corner */ - if (bnd.rig==4) { - ixo = mod.ieXx; - ixe = ixo+bnd.ntap; - ibz = (bnd.ntap+izo-1); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(ibz-iz)]; - } - } - } - /* left top corner */ - if (bnd.lef==4) { - ixo = mod.ioXx-bnd.ntap; - ixe = mod.ioXx; - ibz = (bnd.ntap+izo-1); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(ibz-iz)]; - } - } - } - - /* Vz field */ - ixo = mod.ioZx; - ixe = mod.ieZx; -// if (bnd.lef==4) ixo -= bnd.ntap; -// if (bnd.rig==4) ixe += bnd.ntap; - izo = mod.ioZz-bnd.ntap; - ize = mod.ioZz; - - ib = (bnd.ntap+izo-1); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapz[ib-iz]; - } - } - /* right top corner */ - if (bnd.rig==4) { - ixo = mod.ieZx; - ixe = ixo+bnd.ntap; - ibz = (bnd.ntap+izo-1); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(ibz-iz)]; - } - } - } - /* left top corner */ - if (bnd.lef==4) { - ixo = mod.ioZx-bnd.ntap; - ixe = mod.ioZx; - ibz = (bnd.ntap+izo-1); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(ibz-iz)]; - } - } - } - - - } /* end elastic scheme */ - } - - /*********/ - /* Bottom */ - /*********/ - if (bnd.bot==4) { - - if (mod.ischeme <= 2) { /* Acoustic scheme */ - - /* Vx field */ - ixo = mod.ioXx; - ixe = mod.ieXx; -// if (bnd.lef==4) ixo -= bnd.ntap; -// if (bnd.rig==4) ixe += bnd.ntap; - izo = mod.ieXz; - ize = mod.ieXz+bnd.ntap; - - ib = (ize-bnd.ntap); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - vx[ix*n1+iz] *= bnd.tapx[iz-ib]; - } - } - /* right bottom corner */ - if (bnd.rig==4) { - ixo = mod.ieXx; - ixe = ixo+bnd.ntap; - ibz = (izo); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - - vx[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(iz-ibz)]; - } - } - } - /* left bottom corner */ - if (bnd.lef==4) { - ixo = mod.ioXx-bnd.ntap; - ixe = mod.ioXx; - ibz = (izo); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - - vx[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(iz-ibz)]; - } - } - } - - - /* Vz field */ - ixo = mod.ioZx; - ixe = mod.ieZx; -// if (bnd.lef==4) ixo -= bnd.ntap; -// if (bnd.rig==4) ixe += bnd.ntap; - izo = mod.ieZz; - ize = mod.ieZz+bnd.ntap; - - ib = (ize-bnd.ntap); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - vz[ix*n1+iz] *= bnd.tapz[iz-ib]; - } - } - /* right bottom corner */ - if (bnd.rig==4) { - ixo = mod.ieZx; - ixe = ixo+bnd.ntap; - ibz = (izo); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - - vz[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(iz-ibz)]; - } - } - } - /* left bottom corner */ - if (bnd.lef==4) { - ixo = mod.ioZx-bnd.ntap; - ixe = mod.ioZx; - ibz = (izo); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - - vz[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(iz-ibz)]; - } - } - } - - - } - else { /* Elastic scheme */ - - /* Vx field */ - ixo = mod.ioXx; - ixe = mod.ieXx; -// if (bnd.lef==4) ixo -= bnd.ntap; -// if (bnd.rig==4) ixe += bnd.ntap; - izo = mod.ieXz; - ize = mod.ieXz+bnd.ntap; - - ib = (ize-bnd.ntap); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapx[iz-ib]; - } - } - /* right bottom corner */ - if (bnd.rig==4) { - ixo = mod.ieXx; - ixe = ixo+bnd.ntap; - ibz = (izo); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(iz-ibz)]; - } - } - } - /* left bottom corner */ - if (bnd.lef==4) { - ixo = mod.ioXx-bnd.ntap; - ixe = mod.ioXx; - ibz = (izo); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(iz-ibz)]; - } - } - } - - /* Vz field */ - ixo = mod.ioZx; - ixe = mod.ieZx; -// if (bnd.lef==4) ixo -= bnd.ntap; -// if (bnd.rig==4) ixe += bnd.ntap; - izo = mod.ieZz; - ize = mod.ieZz+bnd.ntap; - - ib = (ize-bnd.ntap); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapz[iz-ib]; - } - } - /* right bottom corner */ - if (bnd.rig==4) { - ixo = mod.ieZx; - ixe = ixo+bnd.ntap; - ibz = (izo); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(iz-ibz)]; - } - } - } - /* left bottom corner */ - if (bnd.lef==4) { - ixo = mod.ioZx-bnd.ntap; - ixe = mod.ioZx; - ibz = (izo); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(iz-ibz)]; - } - } - } - - - } /* end elastic scheme */ - - } - - /*********/ - /* Left */ - /*********/ - if (bnd.lef==4) { - - if (mod.ischeme <= 2) { /* Acoustic scheme */ - - /* Vx field */ - ixo = mod.ioXx-bnd.ntap; - ixe = mod.ioXx; - izo = mod.ioXz; - ize = mod.ieXz; - - ib = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - - vx[ix*n1+iz] *= bnd.tapx[ib-ix]; - } - } - - /* Vz field */ - ixo = mod.ioZx-bnd.ntap; - ixe = mod.ioZx; - izo = mod.ioZz; - ize = mod.ieZz; - - ib = (bnd.ntap+ixo-1); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - - vz[ix*n1+iz] *= bnd.tapz[ib-ix]; - } - } - - } - else { /* Elastic scheme */ - - /* Vx field */ - ixo = mod.ioXx-bnd.ntap; - ixe = mod.ioXx; - izo = mod.ioXz; - ize = mod.ieXz; - - ib = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapx[ib-ix]; - } - } - - /* Vz field */ - ixo = mod.ioZx-bnd.ntap; - ixe = mod.ioZx; - izo = mod.ioZz; - ize = mod.ieZz; - - ib = (bnd.ntap+ixo-1); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapz[ib-ix]; - } - } - } /* end elastic scheme */ - - } - - /*********/ - /* Right */ - /*********/ - if (bnd.rig==4) { - - if (mod.ischeme <= 2) { /* Acoustic scheme */ - - /* Vx field */ - ixo = mod.ieXx; - ixe = mod.ieXx+bnd.ntap; - izo = mod.ioXz; - ize = mod.ieXz; - - ib = (ixe-bnd.ntap); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - - vx[ix*n1+iz] *= bnd.tapx[ix-ib]; - } - } - - /* Vz field */ - ixo = mod.ieZx; - ixe = mod.ieZx+bnd.ntap; - izo = mod.ioZz; - ize = mod.ieZz; - - ib = (ixe-bnd.ntap); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - - vz[ix*n1+iz] *= bnd.tapz[ix-ib]; - } - } - - } - else { /* Elastic scheme */ - - /* Vx field */ - ixo = mod.ieXx; - ixe = mod.ieXx+bnd.ntap; - izo = mod.ioXz; - ize = mod.ieXz; - - ib = (ixe-bnd.ntap); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapx[ix-ib]; - } - } - - /* Vz field */ - ixo = mod.ieZx; - ixe = mod.ieZx+bnd.ntap; - izo = mod.ioZz; - ize = mod.ieZz; - - ib = (ixe-bnd.ntap); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapz[ix-ib]; - } - } - - } /* end elastic scheme */ - - } - - - return 0; -} - -int boundariesV(modPar mod, bndPar bnd, float *vx, float *vz, float *tzz, float *txx, float *txz, float *rox, float *roz, float *l2m, float *lam, float *mul, int verbose) -{ -/********************************************************************* - - AUTHOR: - Jan Thorbecke (janth@xs4all.nl) - The Netherlands - -***********************************************************************/ - - float c1, c2; - float dp, dvx, dvz; - int ix, iz, ixs, izs, izp; - int nx, nz, n1; - int is0, isrc; - int ixo, ixe, izo, ize; - - c1 = 9.0/8.0; - c2 = -1.0/24.0; - nx = mod.nx; - nz = mod.nz; - n1 = mod.naz; - -/************************************************************/ -/* Tapered boundaries for both elastic and acoustic schemes */ -/* compute all field values in tapered areas */ -/************************************************************/ - - /*********/ - /* Top */ - /*********/ - if (bnd.top==4) { - - if (mod.ischeme <= 2) { /* Acoustic scheme */ - - /* P field */ - ixo = mod.ioPx; - ixe = mod.iePx; - if (bnd.lef==4) ixo -= bnd.ntap; - if (bnd.rig==4) ixe += bnd.ntap; - izo = mod.ioPz-bnd.ntap; - ize = mod.ioPz; - -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - tzz[ix*n1+iz] -= l2m[ix*n1+iz]*( - c1*(vx[(ix+1)*n1+iz] - vx[ix*n1+iz]) + - c2*(vx[(ix+2)*n1+iz] - vx[(ix-1)*n1+iz]) + - c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1])); - } - } - } - else { /* Elastic scheme */ - - /* Txx Tzz field */ - ixo = mod.ioPx; - ixe = mod.iePx; - if (bnd.lef==4) ixo -= bnd.ntap; - if (bnd.rig==4) ixe += bnd.ntap; - izo = mod.ioPz-bnd.ntap; - ize = mod.ioPz; - -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - dvx = c1*(vx[(ix+1)*n1+iz] - vx[ix*n1+iz]) + - c2*(vx[(ix+2)*n1+iz] - vx[(ix-1)*n1+iz]); - dvz = c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1]); - txx[ix*n1+iz] -= l2m[ix*n1+iz]*dvx + lam[ix*n1+iz]*dvz; - tzz[ix*n1+iz] -= l2m[ix*n1+iz]*dvz + lam[ix*n1+iz]*dvx; - } - } - - /* Txz field */ - ixo = mod.ioTx; - ixe = mod.ieTx; - if (bnd.lef==4) ixo -= bnd.ntap; - if (bnd.rig==4) ixe += bnd.ntap; - izo = mod.ioTz-bnd.ntap; - ize = mod.ioTz; - -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - txz[ix*n1+iz] -= mul[ix*n1+iz]*( - c1*(vx[ix*n1+iz] - vx[ix*n1+iz-1] + - vz[ix*n1+iz] - vz[(ix-1)*n1+iz]) + - c2*(vx[ix*n1+iz+1] - vx[ix*n1+iz-2] + - vz[(ix+1)*n1+iz] - vz[(ix-2)*n1+iz]) ); - } - } - } /* end elastic scheme */ - } - - /*********/ - /* Bottom */ - /*********/ - if (bnd.bot==4) { - - if (mod.ischeme <= 2) { /* Acoustic scheme */ - - /* P field */ - ixo = mod.ioPx; - ixe = mod.iePx; - if (bnd.lef==4) ixo -= bnd.ntap; - if (bnd.rig==4) ixe += bnd.ntap; - izo = mod.iePz; - ize = mod.iePz+bnd.ntap; - -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - tzz[ix*n1+iz] -= l2m[ix*n1+iz]*( - c1*(vx[(ix+1)*n1+iz] - vx[ix*n1+iz]) + - c2*(vx[(ix+2)*n1+iz] - vx[(ix-1)*n1+iz]) + - c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1])); - } - } - } - else { /* Elastic scheme */ - - /* Txx Tzz field */ - ixo = mod.ioPx; - ixe = mod.iePx; - if (bnd.lef==4) ixo -= bnd.ntap; - if (bnd.rig==4) ixe += bnd.ntap; - izo = mod.iePz; - ize = mod.iePz+bnd.ntap; - -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - dvx = c1*(vx[(ix+1)*n1+iz] - vx[ix*n1+iz]) + - c2*(vx[(ix+2)*n1+iz] - vx[(ix-1)*n1+iz]); - dvz = c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1]); - txx[ix*n1+iz] -= l2m[ix*n1+iz]*dvx + lam[ix*n1+iz]*dvz; - tzz[ix*n1+iz] -= l2m[ix*n1+iz]*dvz + lam[ix*n1+iz]*dvx; - } - } - - /* Txz field */ - ixo = mod.ioTx; - ixe = mod.ieTx; - if (bnd.lef==4) ixo -= bnd.ntap; - if (bnd.rig==4) ixe += bnd.ntap; - izo = mod.ieTz; - ize = mod.ieTz+bnd.ntap; - -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - txz[ix*n1+iz] -= mul[ix*n1+iz]*( - c1*(vx[ix*n1+iz] - vx[ix*n1+iz-1] + - vz[ix*n1+iz] - vz[(ix-1)*n1+iz]) + - c2*(vx[ix*n1+iz+1] - vx[ix*n1+iz-2] + - vz[(ix+1)*n1+iz] - vz[(ix-2)*n1+iz]) ); - } - } - } /* end elastic scheme */ - - } - - /*********/ - /* Left */ - /*********/ - if (bnd.lef==4) { - - if (mod.ischeme <= 2) { /* Acoustic scheme */ - - /* P field */ - ixo = mod.ioPx-bnd.ntap; - ixe = mod.ioPx; - izo = mod.ioPz; - ize = mod.iePz; - -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - tzz[ix*n1+iz] -= l2m[ix*n1+iz]*( - c1*(vx[(ix+1)*n1+iz] - vx[ix*n1+iz]) + - c2*(vx[(ix+2)*n1+iz] - vx[(ix-1)*n1+iz]) + - c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1])); - } - } - } - else { /* Elastic scheme */ - - /* Txx Tzz field */ - ixo = mod.ioPx-bnd.ntap; - ixe = mod.ioPx; - izo = mod.ioPz; - ize = mod.iePz; - -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - dvx = c1*(vx[(ix+1)*n1+iz] - vx[ix*n1+iz]) + - c2*(vx[(ix+2)*n1+iz] - vx[(ix-1)*n1+iz]); - dvz = c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1]); - txx[ix*n1+iz] -= l2m[ix*n1+iz]*dvx + lam[ix*n1+iz]*dvz; - tzz[ix*n1+iz] -= l2m[ix*n1+iz]*dvz + lam[ix*n1+iz]*dvx; - } - } - - /* Txz field */ - ixo = mod.ioTx-bnd.ntap; - ixe = mod.ioTx; - izo = mod.ioTz; - ize = mod.ieTz; - -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - txz[ix*n1+iz] -= mul[ix*n1+iz]*( - c1*(vx[ix*n1+iz] - vx[ix*n1+iz-1] + - vz[ix*n1+iz] - vz[(ix-1)*n1+iz]) + - c2*(vx[ix*n1+iz+1] - vx[ix*n1+iz-2] + - vz[(ix+1)*n1+iz] - vz[(ix-2)*n1+iz]) ); - } - } - } /* end elastic scheme */ - - } - - /*********/ - /* Right */ - /*********/ - if (bnd.rig==4) { - - if (mod.ischeme <= 2) { /* Acoustic scheme */ - - /* P field */ - ixo = mod.iePx; - ixe = mod.iePx+bnd.ntap; - izo = mod.ioPz; - ize = mod.iePz; - -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - tzz[ix*n1+iz] -= l2m[ix*n1+iz]*( - c1*(vx[(ix+1)*n1+iz] - vx[ix*n1+iz]) + - c2*(vx[(ix+2)*n1+iz] - vx[(ix-1)*n1+iz]) + - c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1])); - } - } - } - else { /* Elastic scheme */ - - /* Txx Tzz field */ - ixo = mod.iePx; - ixe = mod.iePx+bnd.ntap; - izo = mod.ioPz; - ize = mod.iePz; - -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - dvx = c1*(vx[(ix+1)*n1+iz] - vx[ix*n1+iz]) + - c2*(vx[(ix+2)*n1+iz] - vx[(ix-1)*n1+iz]); - dvz = c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1]); - txx[ix*n1+iz] -= l2m[ix*n1+iz]*dvx + lam[ix*n1+iz]*dvz; - tzz[ix*n1+iz] -= l2m[ix*n1+iz]*dvz + lam[ix*n1+iz]*dvx; - } - } - - /* Txz field */ - ixo = mod.ieTx; - ixe = mod.ieTx+bnd.ntap; - izo = mod.ioTz; - ize = mod.ieTz; - -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - txz[ix*n1+iz] -= mul[ix*n1+iz]*( - c1*(vx[ix*n1+iz] - vx[ix*n1+iz-1] + - vz[ix*n1+iz] - vz[(ix-1)*n1+iz]) + - c2*(vx[ix*n1+iz+1] - vx[ix*n1+iz-2] + - vz[(ix+1)*n1+iz] - vz[(ix-2)*n1+iz]) ); - } - } - } /* end elastic scheme */ - - } - - /****************/ - /* Free surface */ - - ixo = mod.ioPx; - ixe = mod.iePx; - if (bnd.lef==4) ixo -= bnd.ntap; - if (bnd.rig==4) ixe += bnd.ntap; - izo = mod.ioPz; - ize = mod.iePz; - if (bnd.top==4) izo -= bnd.ntap; - if (bnd.bot==4) ize += bnd.ntap; - - if (mod.ischeme <= 2) { /* Acoustic scheme */ - - if (bnd.top==1) { /* free surface at top */ -#pragma omp for private (ix) nowait - for (ix=ixo; ix<ixe; ix++) { - iz = bnd.surface[ix]; - tzz[ix*n1+iz] = 0.0; - } - } - if (bnd.rig==1) { /* free surface at right */ -#pragma omp for private (iz) nowait - for (iz=izo; iz<ize; iz++) { - tzz[ixe*n1+iz] = 0.0; - } - } - if (bnd.bot==1) { /* free surface at bottom */ -#pragma omp for private (ix) nowait - for (ix=ixo; ix<ixe; ix++) { - tzz[ix*n1+ize] = 0.0; - } - } - if (bnd.lef==1) { /* free surface at left */ -#pragma omp for private (iz) nowait - for (iz=izo; iz<ize; iz++) { - tzz[ixo*n1+iz] = 0.0; - } - } - } - else { /* Elastic scheme */ - - /* Free surface: calculate free surface conditions for stresses - * Conditions (for upper boundary): - * 1. Tzz = 0 - * 2. Txz = 0 - * 3. Txx: remove term with dVz/dz, computed in e2/e4 routines - * and add extra term with dVx/dx, - * corresponding to free-surface condition for Txx. - * In this way, dVz/dz is not needed in computing Txx - * on the upper stress free boundary. Other boundaries - * are treated similar. - * For the 4th order schemes, the whole virtual boundary - * must be taken into account in the removal terms, - * because the algorithm sets - * velocities on this boundary! - * - * Compute the velocities on the virtual boundary to make interpolation - * possible for receivers. - */ - - if (bnd.top==1) { /* free surface at top */ - izp = bnd.surface[ixo]; -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { - iz = bnd.surface[ix-1]; - if ( izp==iz ) { - /* clear normal pressure */ - tzz[ix*n1+iz] = 0.0; - /* This update to Vz might become unstable (2nd order scheme) */ -// vz[ix*n1+iz] = vz[ix*n1+iz+1] - (vx[(ix+1)*n1+iz]-vx[ix*n1+iz])* -// lam[ix*n1+iz]/l2m[ix*n1+iz]; - } - izp=iz; - } - - izp = bnd.surface[ixo]; -#pragma omp for private (ix, iz) - for (ix=ixo+1; ix<ixe+1; ix++) { - iz = bnd.surface[ix-1]; - if ( izp==iz ) { - /* assure that txz=0 on boundary by filling virtual boundary */ - txz[ix*n1+iz] = -txz[ix*n1+iz+1]; - /* extra line of txz has to be copied */ - txz[ix*n1+iz-1] = -txz[ix*n1+iz+2]; - } - izp=iz; - } - - /* calculate txx on top stress-free boundary */ - izp = bnd.surface[ixo]; -#pragma omp for private (ix, iz, dp, dvx) - for (ix=ixo; ix<ixe; ix++) { - iz = bnd.surface[ix-1]; - if ( izp==iz ) { - dp = l2m[ix*n1+iz]-lam[ix*n1+iz]*lam[ix*n1+iz]/l2m[ix*n1+iz]; - dvx = c1*(vx[(ix+1)*n1+iz] - vx[(ix)*n1+iz]) + - c2*(vx[(ix+2)*n1+iz] - vx[(ix-1)*n1+iz]); - txx[ix*n1+iz] = -dvx*dp; - } - izp=iz; - } - - - /* if surface has also left or right edges */ - izp = bnd.surface[ixo]; -#pragma omp for private (ix, iz, dp, dvz) - for (ix=ixo+1; ix<ixe; ix++) { - iz = bnd.surface[ix-1]; - if ( izp < iz ) { /* right boundary */ -// fprintf(stderr,"right boundary\n"); - /* clear normal pressure */ - txx[ix*n1+iz] = 0.0; - if ( (iz-izp) >= 2 ) { /* VR point */ - /* assure that txz=0 on boundary */ - txz[(ix+1)*n1+iz] = -txz[ix*n1+iz]; - txz[(ix+2)*n1+iz] = -txz[(ix-1)*n1+iz] ; - /* calculate tzz on right stress-free boundary */ - dvz = c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1]); - dp = l2m[ix*n1+iz]-lam[ix*n1+iz]*lam[ix*n1+iz]/l2m[ix*n1+iz]; - tzz[ix*n1+iz] = -dvz*dp; - } - else { - // if (izp) { /* IR point */ - // txz[ix*n1+iz] = -txz[ix*n1+iz+1] ; - // txz[ix*n1+iz-1] = -txz[ix*n1+iz+2]; - txz[(ix+1)*n1+iz] = -txz[ix*n1+iz]; - txz[(ix+2)*n1+iz] = -txz[(ix-1)*n1+iz] ; - tzz[ix*n1+iz] = 0.0; - // } - // else { /* OR point */ - txz[(ix-1)*n1+iz] = 0.0; - txz[(ix+1)*n1+iz] = -txz[ix*n1+iz]; - txz[(ix+2)*n1+iz] = -txz[(ix-1)*n1+iz] ; - vz[ix*n1+iz] = vz[ix*n1+iz+1] - (vx[(ix+1)*n1+iz]-vx[ix*n1+iz])* - lam[ix*n1+iz]/l2m[ix*n1+iz]; - // } - } - - } /* end if right */ - if ( izp > iz ) { /* left boundary */ -// fprintf(stderr,"left boundary\n"); - /* clear normal pressure */ - txx[ix*n1+iz] = 0.0; - /* assure that txz=0 on boundary */ - txz[(ix-1)*n1+iz] = -txz[ix*n1+iz]; - /* extra line of txz has to be copied */ - txz[(ix-2)*n1+iz] = -txz[(ix+1)*n1+iz] ; - /* calculate tzz on left stress-free boundary */ - dvz = c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1]); - dp = l2m[ix*n1+iz]-lam[ix*n1+iz]*lam[ix*n1+iz]/l2m[ix*n1+iz]; - tzz[ix*n1+iz] = -dvz*dp; - } /* end if left */ - izp=iz; - // izp=bnd.surface[MAX(ix-2,0)];; - } /* end ix loop */ - } - - /* when all boundaries are rigid then the behaviour of left top - is different than right bottom. This is not yet solved */ - - if (bnd.rig==1) { /* free surface at right */ - ix = ixe-1; -#pragma omp for private (ix, iz) - for (iz=izo; iz<ize; iz++) { - /* clear normal pressure */ - txx[(ix)*n1+iz] = 0.0; - } - ix = ixe-1; -#pragma omp for private (ix, iz) - for (iz=izo+1; iz<ize+1; iz++) { - /* assure that txz=0 on boundary by filling virtual boundary */ - txz[(ix)*n1+iz] = -txz[(ix-1)*n1+iz]; - /* extra line of txz has to be copied */ - txz[(ix+1)*n1+iz] = -txz[(ix-2)*n1+iz] ; - } - /* calculate tzz on right stress-free boundary */ - ix = ixe-1; -#pragma omp for private (iz) - for (iz=izo; iz<ize; iz++) { - dvz = c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1]); - dp = l2m[(ix)*n1+iz]-lam[(ix)*n1+iz]*lam[(ix)*n1+iz]/l2m[(ix)*n1+iz]; - tzz[(ix)*n1+iz] = -dvz*dp; - } - /* - if (bnd.top==1) { - iz = izo; - tzz[ix*n1+iz] = 0.0; - txx[ix*n1+iz] = 0.0; - - // assure that txz=0 on boundary by filling virtual boundary - txz[ix*n1+iz] = -txz[(ix-1)*n1+iz+1]; - txz[ix*n1+iz+1] = -txz[(ix-1)*n1+iz+1]; - txz[(ix-1)*n1+iz] = -txz[(ix-1)*n1+iz+1]; - // extra line of txz has to be copied - txz[(ix+1)*n1+iz+1] = -txz[(ix-2)*n1+iz+1]; - txz[(ix-1)*n1+iz-1] = -txz[(ix-1)*n1+iz+2]; - txz[(ix)*n1+iz-1] = -txz[(ix-1)*n1+iz+2]; - txz[(ix+1)*n1+iz] = -txz[(ix-2)*n1+iz+1]; - txz[(ix+1)*n1+iz-1] = -txz[(ix-2)*n1+iz+2]; - - dp = l2m[ix*n1+iz]-lam[ix*n1+iz]*lam[ix*n1+iz]/l2m[ix*n1+iz]; - dvx = c1*(vx[(ix+1)*n1+iz] - vx[(ix)*n1+iz]) + - c2*(vx[(ix+2)*n1+iz] - vx[(ix-1)*n1+iz]); - txx[ix*n1+iz] = -dvx*dp; - - dvz = c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1]); - dp = l2m[(ix)*n1+iz]-lam[(ix)*n1+iz]*lam[(ix)*n1+iz]/l2m[(ix)*n1+iz]; - tzz[(ix)*n1+iz] = -dvz*dp; - } - - if (bnd.bot==1) { - iz = ize-1; - tzz[ix*n1+iz] = 0.0; - - // assure that txz=0 on boundary by filling virtual boundary - txz[ix*n1+iz] = -txz[ix*n1+iz+1]; - // extra line of txz has to be copied - txz[ix*n1+iz-1] = -txz[ix*n1+iz+2]; - - dp = l2m[ix*n1+iz]-lam[ix*n1+iz]*lam[ix*n1+iz]/l2m[ix*n1+iz]; - dvx = c1*(vx[(ix+1)*n1+iz] - vx[(ix)*n1+iz]) + - c2*(vx[(ix+2)*n1+iz] - vx[(ix-1)*n1+iz]); - txx[ix*n1+iz] = -dvx*dp; - } - */ - - } - - if (bnd.bot==1) { /* free surface at bottom */ - iz = ize-1; -#pragma omp for private (ix) - for (ix=ixo; ix<ixe; ix++) { - /* clear normal pressure */ - tzz[ix*n1+iz] = 0.0; - } -#pragma omp for private (ix) - iz = ize; - for (ix=ixo+1; ix<ixe+1; ix++) { - /* assure that txz=0 on boundary by filling virtual boundary */ - txz[ix*n1+iz] = -txz[ix*n1+iz-1]; - /* extra line of txz has to be copied */ - txz[ix*n1+iz+1] = -txz[ix*n1+iz-2]; - } - /* calculate txx on bottom stress-free boundary */ -#pragma omp for private (ix) - iz = ize-1; - for (ix=ixo; ix<ixe; ix++) { - dp = l2m[ix*n1+iz]-lam[ix*n1+iz]*lam[ix*n1+iz]/l2m[ix*n1+iz]; - dvx = c1*(vx[(ix+1)*n1+iz] - vx[ix*n1+iz]) + - c2*(vx[(ix+2)*n1+iz] - vx[(ix-1)*n1+iz]); - txx[ix*n1+iz] = -dvx*dp; - } - } - - if (bnd.lef==1) { /* free surface at left */ - ix = ixo; -#pragma omp for private (iz) - for (iz=izo; iz<ize; iz++) { - /* clear normal pressure */ - txx[ix*n1+iz] = 0.0; - } -#pragma omp for private (iz) - for (iz=izo+1; iz<ize+1; iz++) { - /* assure that txz=0 on boundary by filling virtual boundary */ - txz[(ix)*n1+iz] = -txz[(ix+1)*n1+iz]; - /* extra line of txz has to be copied */ - txz[(ix-1)*n1+iz] = -txz[(ix+2)*n1+iz] ; - } - /* calculate tzz on left stress-free boundary */ -#pragma omp for private (iz) - for (iz=izo; iz<ize; iz++) { - dvz = c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1]); - dp = l2m[ix*n1+iz]-lam[ix*n1+iz]*lam[ix*n1+iz]/l2m[ix*n1+iz]; - tzz[ix*n1+iz] = -dvz*dp; - } - } -/* - fprintf(stderr,"ixo=%d ixe=%d\n", ixo, ixe);; - for (iz=0; iz<6; iz++) { - fprintf(stderr,"Top left z=%d: %e %e %e %e %e\n",iz,txz[0*n1+iz], txz[1*n1+iz], txz[2*n1+iz], txz[3*n1+iz], txz[4*n1+iz]); - fprintf(stderr,"Top right z=%d: %e %e %e %e %e\n",iz,txz[(ixe+2)*n1+iz], txz[(ixe+1)*n1+iz], txz[(ixe)*n1+iz], txz[(ixe-1)*n1+iz], txz[(ixe-2)*n1+iz]); - - } -*/ - ix = 201; - for (iz=0; iz<6; iz++) { - fprintf(stderr,"Top z=%d: %e %e %e %e %e\n",iz,txz[ix*n1+iz], txz[(ix+1)*n1+iz], txz[(ix+2)*n1+iz], txz[(ix+3)*n1+iz], txz[(ix+4)*n1+iz]); - } - for (iz=n1-1; iz>n1-7; iz--) { - fprintf(stderr,"Bottom z=%d: %e %e %e %e %e\n",iz,txz[ix*n1+iz], txz[(ix+1)*n1+iz], txz[(ix+2)*n1+iz], txz[(ix+3)*n1+iz], txz[(ix+4)*n1+iz]); - - } - - - } - - - - - return 0; -} - - diff --git a/fdelmodc/boundaries.c.ok b/fdelmodc/boundaries.c.ok deleted file mode 100644 index 673823c..0000000 --- a/fdelmodc/boundaries.c.ok +++ /dev/null @@ -1,1364 +0,0 @@ -#include<stdlib.h> -#include<stdio.h> -#include<math.h> -#include<assert.h> -#include"fdelmodc.h" - -float *exL, *exR, *eyT, *eyB; -int first=0; - -int boundariesP(modPar mod, bndPar bnd, float *vx, float *vz, float *tzz, float *txx, float *txz, float *rox, float *roz, float *l2m, float *lam, float *mul, int verbose) -{ -/********************************************************************* - - AUTHOR: - Jan Thorbecke (janth@xs4all.nl) - The Netherlands - -***********************************************************************/ - - float c1, c2; - float dp, dvx, dvz; - int ix, iz, ixs, izs, ibnd, ib, ibx, ibz; - int nx, nz, n1; - int is0, isrc, ioXx, ioXz, ioZz, ioZx, ioPx, ioPz, ioTx, ioTz; - int ixo, ixe, izo, ize; - - - c1 = 9.0/8.0; - c2 = -1.0/24.0; - nx = mod.nx; - nz = mod.nz; - n1 = mod.naz; - - ibnd = mod.iorder/2-1; - /* Vx: rox */ - ioXx=mod.ioXx; - ioXz=mod.ioXz; - /* Vz: roz */ - ioZz=mod.ioZz; - ioZx=mod.ioZz; - /* P, Txx, Tzz: lam, l2m */ - ioPx=mod.ioPx; - ioPz=mod.ioPz; - /* Txz: muu */ - ioTx=mod.ioTx; - ioTz=mod.ioTz; - -/************************************************************/ -/* rigid boundary condition clears velocities on boundaries */ -/************************************************************/ - - if (bnd.top==3) { /* rigid surface at top */ -#pragma omp for private (ix, iz) nowait -#pragma ivdep - for (ix=1; ix<=nx; ix++) { - vx[ix*n1+ibnd] = 0.0; - vz[ix*n1+ibnd] = -vz[ix*n1+ibnd+1]; - if (mod.iorder >= 4) vz[ix*n1+ibnd-1] = -vz[ix*n1+ibnd+2]; - if (mod.iorder >= 6) vz[ix*n1+ibnd-2] = -vz[ix*n1+ibnd+3]; - } - } - if (bnd.rig==3) { /* rigid surface at right */ -#pragma omp for private (ix, iz) nowait -#pragma ivdep - for (iz=1; iz<=nz; iz++) { - vz[(nx+ibnd-1)*n1+iz] = 0.0; - vx[(nx+ibnd)*n1+iz] = -vx[(nx+ibnd-1)*n1+iz]; - if (mod.iorder == 4) vx[(nx+2)*n1+iz] = -vx[(nx-1)*n1+iz]; - if (mod.iorder == 6) { - vx[(nx+1)*n1+iz] = -vx[(nx)*n1+iz]; - vx[(nx+3)*n1+iz] = -vx[(nx-2)*n1+iz]; - } - } - } - if (bnd.bot==3) { /* rigid surface at bottom */ -#pragma omp for private (ix, iz) nowait -#pragma ivdep - for (ix=1; ix<=nx; ix++) { - vx[ix*n1+nz+ibnd-1] = 0.0; - vz[ix*n1+nz+ibnd] = -vz[ix*n1+nz+ibnd-1]; - if (mod.iorder == 4) vz[ix*n1+nz+2] = -vz[ix*n1+nz-1]; - if (mod.iorder == 6) { - vz[ix*n1+nz+1] = -vz[ix*n1+nz]; - vz[ix*n1+nz+3] = -vz[ix*n1+nz-2]; - } - } - } - if (bnd.lef==3) { /* rigid surface at left */ -#pragma omp for private (ix, iz) nowait -#pragma ivdep - for (iz=1; iz<=nz; iz++) { - vz[ibnd*n1+iz] = 0.0; - vx[ibnd*n1+iz] = -vx[(ibnd+1)*n1+iz]; - if (mod.iorder == 4) vx[0*n1+iz] = -vx[3*n1+iz]; - if (mod.iorder == 6) { - vx[1*n1+iz] = -vx[4*n1+iz]; - vx[0*n1+iz] = -vx[5*n1+iz]; - } - } - } - -/************************************************************/ -/* PML boundaries : only for acoustic 4th order scheme */ -/************************************************************/ - - if (bnd.top==2) { /* PML at top */ - } - -/************************************************************/ -/* Tapered boundaries for both elastic and acoustic schemes */ -/* compute all field values in tapered areas */ -/************************************************************/ - - /*********/ - /* Top */ - /*********/ - if (bnd.top==4) { - - if (mod.ischeme <= 2) { /* Acoustic scheme */ - - /* Vx field */ - ixo = mod.ioXx; - ixe = mod.ieXx; -// if (bnd.lef==4) ixo -= bnd.ntap; -// if (bnd.rig==4) ixe += bnd.ntap; - izo = mod.ioXz-bnd.ntap; - ize = mod.ioXz; - - ib = (bnd.ntap+izo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - - vx[ix*n1+iz] *= bnd.tapx[ib-iz]; - } - } - /* right top corner */ - if (bnd.rig==4) { - ixo = mod.ieXx; - ixe = ixo+bnd.ntap; - ibz = (bnd.ntap+izo-1); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - - vx[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(ibz-iz)]; - } - } - } - /* left top corner */ - if (bnd.lef==4) { - ixo = mod.ioXx-bnd.ntap; - ixe = mod.ioXx; - ibz = (bnd.ntap+izo-1); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - - vx[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(ibz-iz)]; - } - } - } - - - /* Vz field */ - ixo = mod.ioZx; - ixe = mod.ieZx; -// if (bnd.lef==4) ixo -= bnd.ntap; -// if (bnd.rig==4) ixe += bnd.ntap; - izo = mod.ioZz-bnd.ntap; - ize = mod.ioZz; - - ib = (bnd.ntap+izo-1); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - - vz[ix*n1+iz] *= bnd.tapz[ib-iz]; - } - } - /* right top corner */ - if (bnd.rig==4) { - ixo = mod.ieZx; - ixe = ixo+bnd.ntap; - ibz = (bnd.ntap+izo-1); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - - vz[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(ibz-iz)]; - } - } - } - /* left top corner */ - if (bnd.lef==4) { - ixo = mod.ioZx-bnd.ntap; - ixe = mod.ioZx; - ibz = (bnd.ntap+izo-1); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - - vz[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(ibz-iz)]; - } - } - } - - } - else { /* Elastic scheme */ - - /* Vx field */ - ixo = mod.ioXx; - ixe = mod.ieXx; -// if (bnd.lef==4) ixo -= bnd.ntap; -// if (bnd.rig==4) ixe += bnd.ntap; - izo = mod.ioXz-bnd.ntap; - ize = mod.ioXz; - - ib = (bnd.ntap+izo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapx[ib-iz]; - } - } - /* right top corner */ - if (bnd.rig==4) { - ixo = mod.ieXx; - ixe = ixo+bnd.ntap; - ibz = (bnd.ntap+izo-1); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(ibz-iz)]; - } - } - } - /* left top corner */ - if (bnd.lef==4) { - ixo = mod.ioXx-bnd.ntap; - ixe = mod.ioXx; - ibz = (bnd.ntap+izo-1); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(ibz-iz)]; - } - } - } - - /* Vz field */ - ixo = mod.ioZx; - ixe = mod.ieZx; -// if (bnd.lef==4) ixo -= bnd.ntap; -// if (bnd.rig==4) ixe += bnd.ntap; - izo = mod.ioZz-bnd.ntap; - ize = mod.ioZz; - - ib = (bnd.ntap+izo-1); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapz[ib-iz]; - } - } - /* right top corner */ - if (bnd.rig==4) { - ixo = mod.ieZx; - ixe = ixo+bnd.ntap; - ibz = (bnd.ntap+izo-1); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(ibz-iz)]; - } - } - } - /* left top corner */ - if (bnd.lef==4) { - ixo = mod.ioZx-bnd.ntap; - ixe = mod.ioZx; - ibz = (bnd.ntap+izo-1); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(ibz-iz)]; - } - } - } - - - } /* end elastic scheme */ - } - - /*********/ - /* Bottom */ - /*********/ - if (bnd.bot==4) { - - if (mod.ischeme <= 2) { /* Acoustic scheme */ - - /* Vx field */ - ixo = mod.ioXx; - ixe = mod.ieXx; -// if (bnd.lef==4) ixo -= bnd.ntap; -// if (bnd.rig==4) ixe += bnd.ntap; - izo = mod.ieXz; - ize = mod.ieXz+bnd.ntap; - - ib = (ize-bnd.ntap); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - vx[ix*n1+iz] *= bnd.tapx[iz-ib]; - } - } - /* right bottom corner */ - if (bnd.rig==4) { - ixo = mod.ieXx; - ixe = ixo+bnd.ntap; - ibz = (izo); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - - vx[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(iz-ibz)]; - } - } - } - /* left bottom corner */ - if (bnd.lef==4) { - ixo = mod.ioXx-bnd.ntap; - ixe = mod.ioXx; - ibz = (izo); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - - vx[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(iz-ibz)]; - } - } - } - - - /* Vz field */ - ixo = mod.ioZx; - ixe = mod.ieZx; -// if (bnd.lef==4) ixo -= bnd.ntap; -// if (bnd.rig==4) ixe += bnd.ntap; - izo = mod.ieZz; - ize = mod.ieZz+bnd.ntap; - - ib = (ize-bnd.ntap); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - vz[ix*n1+iz] *= bnd.tapz[iz-ib]; - } - } - /* right bottom corner */ - if (bnd.rig==4) { - ixo = mod.ieZx; - ixe = ixo+bnd.ntap; - ibz = (izo); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - - vz[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(iz-ibz)]; - } - } - } - /* left bottom corner */ - if (bnd.lef==4) { - ixo = mod.ioZx-bnd.ntap; - ixe = mod.ioZx; - ibz = (izo); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - - vz[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(iz-ibz)]; - } - } - } - - - } - else { /* Elastic scheme */ - - /* Vx field */ - ixo = mod.ioXx; - ixe = mod.ieXx; -// if (bnd.lef==4) ixo -= bnd.ntap; -// if (bnd.rig==4) ixe += bnd.ntap; - izo = mod.ieXz; - ize = mod.ieXz+bnd.ntap; - - ib = (ize-bnd.ntap); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapx[iz-ib]; - } - } - /* right bottom corner */ - if (bnd.rig==4) { - ixo = mod.ieXx; - ixe = ixo+bnd.ntap; - ibz = (izo); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(iz-ibz)]; - } - } - } - /* left bottom corner */ - if (bnd.lef==4) { - ixo = mod.ioXx-bnd.ntap; - ixe = mod.ioXx; - ibz = (izo); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(iz-ibz)]; - } - } - } - - /* Vz field */ - ixo = mod.ioZx; - ixe = mod.ieZx; -// if (bnd.lef==4) ixo -= bnd.ntap; -// if (bnd.rig==4) ixe += bnd.ntap; - izo = mod.ieZz; - ize = mod.ieZz+bnd.ntap; - - ib = (ize-bnd.ntap); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapz[iz-ib]; - } - } - /* right bottom corner */ - if (bnd.rig==4) { - ixo = mod.ieZx; - ixe = ixo+bnd.ntap; - ibz = (izo); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(iz-ibz)]; - } - } - } - /* left bottom corner */ - if (bnd.lef==4) { - ixo = mod.ioZx-bnd.ntap; - ixe = mod.ioZx; - ibz = (izo); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(iz-ibz)]; - } - } - } - - - } /* end elastic scheme */ - - } - - /*********/ - /* Left */ - /*********/ - if (bnd.lef==4) { - - if (mod.ischeme <= 2) { /* Acoustic scheme */ - - /* Vx field */ - ixo = mod.ioXx-bnd.ntap; - ixe = mod.ioXx; - izo = mod.ioXz; - ize = mod.ieXz; - - ib = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - - vx[ix*n1+iz] *= bnd.tapx[ib-ix]; - } - } - - /* Vz field */ - ixo = mod.ioZx-bnd.ntap; - ixe = mod.ioZx; - izo = mod.ioZz; - ize = mod.ieZz; - - ib = (bnd.ntap+ixo-1); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - - vz[ix*n1+iz] *= bnd.tapz[ib-ix]; - } - } - - } - else { /* Elastic scheme */ - - /* Vx field */ - ixo = mod.ioXx-bnd.ntap; - ixe = mod.ioXx; - izo = mod.ioXz; - ize = mod.ieXz; - - ib = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapx[ib-ix]; - } - } - - /* Vz field */ - ixo = mod.ioZx-bnd.ntap; - ixe = mod.ioZx; - izo = mod.ioZz; - ize = mod.ieZz; - - ib = (bnd.ntap+ixo-1); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapz[ib-ix]; - } - } - } /* end elastic scheme */ - - } - - /*********/ - /* Right */ - /*********/ - if (bnd.rig==4) { - - if (mod.ischeme <= 2) { /* Acoustic scheme */ - - /* Vx field */ - ixo = mod.ieXx; - ixe = mod.ieXx+bnd.ntap; - izo = mod.ioXz; - ize = mod.ieXz; - - ib = (ixe-bnd.ntap); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - - vx[ix*n1+iz] *= bnd.tapx[ix-ib]; - } - } - - /* Vz field */ - ixo = mod.ieZx; - ixe = mod.ieZx+bnd.ntap; - izo = mod.ioZz; - ize = mod.ieZz; - - ib = (ixe-bnd.ntap); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - - vz[ix*n1+iz] *= bnd.tapz[ix-ib]; - } - } - - } - else { /* Elastic scheme */ - - /* Vx field */ - ixo = mod.ieXx; - ixe = mod.ieXx+bnd.ntap; - izo = mod.ioXz; - ize = mod.ieXz; - - ib = (ixe-bnd.ntap); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapx[ix-ib]; - } - } - - /* Vz field */ - ixo = mod.ieZx; - ixe = mod.ieZx+bnd.ntap; - izo = mod.ioZz; - ize = mod.ieZz; - - ib = (ixe-bnd.ntap); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapz[ix-ib]; - } - } - - } /* end elastic scheme */ - - } - - - return 0; -} - -int boundariesV(modPar mod, bndPar bnd, float *vx, float *vz, float *tzz, float *txx, float *txz, float *rox, float *roz, float *l2m, float *lam, float *mul, int verbose) -{ -/********************************************************************* - - AUTHOR: - Jan Thorbecke (janth@xs4all.nl) - The Netherlands - -***********************************************************************/ - - float c1, c2; - float dp, dvx, dvz; - int ix, iz, ixs, izs, izp; - int nx, nz, n1; - int is0, isrc; - int ixo, ixe, izo, ize; - - c1 = 9.0/8.0; - c2 = -1.0/24.0; - nx = mod.nx; - nz = mod.nz; - n1 = mod.naz; - -/************************************************************/ -/* Tapered boundaries for both elastic and acoustic schemes */ -/* compute all field values in tapered areas */ -/************************************************************/ - - /*********/ - /* Top */ - /*********/ - if (bnd.top==4) { - - if (mod.ischeme <= 2) { /* Acoustic scheme */ - - /* P field */ - ixo = mod.ioPx; - ixe = mod.iePx; - if (bnd.lef==4) ixo -= bnd.ntap; - if (bnd.rig==4) ixe += bnd.ntap; - izo = mod.ioPz-bnd.ntap; - ize = mod.ioPz; - -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - tzz[ix*n1+iz] -= l2m[ix*n1+iz]*( - c1*(vx[(ix+1)*n1+iz] - vx[ix*n1+iz]) + - c2*(vx[(ix+2)*n1+iz] - vx[(ix-1)*n1+iz]) + - c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1])); - } - } - } - else { /* Elastic scheme */ - - /* Txx Tzz field */ - ixo = mod.ioPx; - ixe = mod.iePx; - if (bnd.lef==4) ixo -= bnd.ntap; - if (bnd.rig==4) ixe += bnd.ntap; - izo = mod.ioPz-bnd.ntap; - ize = mod.ioPz; - -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - dvx = c1*(vx[(ix+1)*n1+iz] - vx[ix*n1+iz]) + - c2*(vx[(ix+2)*n1+iz] - vx[(ix-1)*n1+iz]); - dvz = c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1]); - txx[ix*n1+iz] -= l2m[ix*n1+iz]*dvx + lam[ix*n1+iz]*dvz; - tzz[ix*n1+iz] -= l2m[ix*n1+iz]*dvz + lam[ix*n1+iz]*dvx; - } - } - - /* Txz field */ - ixo = mod.ioTx; - ixe = mod.ieTx; - if (bnd.lef==4) ixo -= bnd.ntap; - if (bnd.rig==4) ixe += bnd.ntap; - izo = mod.ioTz-bnd.ntap; - ize = mod.ioTz; - -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - txz[ix*n1+iz] -= mul[ix*n1+iz]*( - c1*(vx[ix*n1+iz] - vx[ix*n1+iz-1] + - vz[ix*n1+iz] - vz[(ix-1)*n1+iz]) + - c2*(vx[ix*n1+iz+1] - vx[ix*n1+iz-2] + - vz[(ix+1)*n1+iz] - vz[(ix-2)*n1+iz]) ); - } - } - } /* end elastic scheme */ - } - - /*********/ - /* Bottom */ - /*********/ - if (bnd.bot==4) { - - if (mod.ischeme <= 2) { /* Acoustic scheme */ - - /* P field */ - ixo = mod.ioPx; - ixe = mod.iePx; - if (bnd.lef==4) ixo -= bnd.ntap; - if (bnd.rig==4) ixe += bnd.ntap; - izo = mod.iePz; - ize = mod.iePz+bnd.ntap; - -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - tzz[ix*n1+iz] -= l2m[ix*n1+iz]*( - c1*(vx[(ix+1)*n1+iz] - vx[ix*n1+iz]) + - c2*(vx[(ix+2)*n1+iz] - vx[(ix-1)*n1+iz]) + - c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1])); - } - } - } - else { /* Elastic scheme */ - - /* Txx Tzz field */ - ixo = mod.ioPx; - ixe = mod.iePx; - if (bnd.lef==4) ixo -= bnd.ntap; - if (bnd.rig==4) ixe += bnd.ntap; - izo = mod.iePz; - ize = mod.iePz+bnd.ntap; - -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - dvx = c1*(vx[(ix+1)*n1+iz] - vx[ix*n1+iz]) + - c2*(vx[(ix+2)*n1+iz] - vx[(ix-1)*n1+iz]); - dvz = c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1]); - txx[ix*n1+iz] -= l2m[ix*n1+iz]*dvx + lam[ix*n1+iz]*dvz; - tzz[ix*n1+iz] -= l2m[ix*n1+iz]*dvz + lam[ix*n1+iz]*dvx; - } - } - - /* Txz field */ - ixo = mod.ioTx; - ixe = mod.ieTx; - if (bnd.lef==4) ixo -= bnd.ntap; - if (bnd.rig==4) ixe += bnd.ntap; - izo = mod.ieTz; - ize = mod.ieTz+bnd.ntap; - -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - txz[ix*n1+iz] -= mul[ix*n1+iz]*( - c1*(vx[ix*n1+iz] - vx[ix*n1+iz-1] + - vz[ix*n1+iz] - vz[(ix-1)*n1+iz]) + - c2*(vx[ix*n1+iz+1] - vx[ix*n1+iz-2] + - vz[(ix+1)*n1+iz] - vz[(ix-2)*n1+iz]) ); - } - } - } /* end elastic scheme */ - - } - - /*********/ - /* Left */ - /*********/ - if (bnd.lef==4) { - - if (mod.ischeme <= 2) { /* Acoustic scheme */ - - /* P field */ - ixo = mod.ioPx-bnd.ntap; - ixe = mod.ioPx; - izo = mod.ioPz; - ize = mod.iePz; - -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - tzz[ix*n1+iz] -= l2m[ix*n1+iz]*( - c1*(vx[(ix+1)*n1+iz] - vx[ix*n1+iz]) + - c2*(vx[(ix+2)*n1+iz] - vx[(ix-1)*n1+iz]) + - c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1])); - } - } - } - else { /* Elastic scheme */ - - /* Txx Tzz field */ - ixo = mod.ioPx-bnd.ntap; - ixe = mod.ioPx; - izo = mod.ioPz; - ize = mod.iePz; - -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - dvx = c1*(vx[(ix+1)*n1+iz] - vx[ix*n1+iz]) + - c2*(vx[(ix+2)*n1+iz] - vx[(ix-1)*n1+iz]); - dvz = c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1]); - txx[ix*n1+iz] -= l2m[ix*n1+iz]*dvx + lam[ix*n1+iz]*dvz; - tzz[ix*n1+iz] -= l2m[ix*n1+iz]*dvz + lam[ix*n1+iz]*dvx; - } - } - - /* Txz field */ - ixo = mod.ioTx-bnd.ntap; - ixe = mod.ioTx; - izo = mod.ioTz; - ize = mod.ieTz; - -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - txz[ix*n1+iz] -= mul[ix*n1+iz]*( - c1*(vx[ix*n1+iz] - vx[ix*n1+iz-1] + - vz[ix*n1+iz] - vz[(ix-1)*n1+iz]) + - c2*(vx[ix*n1+iz+1] - vx[ix*n1+iz-2] + - vz[(ix+1)*n1+iz] - vz[(ix-2)*n1+iz]) ); - } - } - } /* end elastic scheme */ - - } - - /*********/ - /* Right */ - /*********/ - if (bnd.rig==4) { - - if (mod.ischeme <= 2) { /* Acoustic scheme */ - - /* P field */ - ixo = mod.iePx; - ixe = mod.iePx+bnd.ntap; - izo = mod.ioPz; - ize = mod.iePz; - -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - tzz[ix*n1+iz] -= l2m[ix*n1+iz]*( - c1*(vx[(ix+1)*n1+iz] - vx[ix*n1+iz]) + - c2*(vx[(ix+2)*n1+iz] - vx[(ix-1)*n1+iz]) + - c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1])); - } - } - } - else { /* Elastic scheme */ - - /* Txx Tzz field */ - ixo = mod.iePx; - ixe = mod.iePx+bnd.ntap; - izo = mod.ioPz; - ize = mod.iePz; - -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - dvx = c1*(vx[(ix+1)*n1+iz] - vx[ix*n1+iz]) + - c2*(vx[(ix+2)*n1+iz] - vx[(ix-1)*n1+iz]); - dvz = c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1]); - txx[ix*n1+iz] -= l2m[ix*n1+iz]*dvx + lam[ix*n1+iz]*dvz; - tzz[ix*n1+iz] -= l2m[ix*n1+iz]*dvz + lam[ix*n1+iz]*dvx; - } - } - - /* Txz field */ - ixo = mod.ieTx; - ixe = mod.ieTx+bnd.ntap; - izo = mod.ioTz; - ize = mod.ieTz; - -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - txz[ix*n1+iz] -= mul[ix*n1+iz]*( - c1*(vx[ix*n1+iz] - vx[ix*n1+iz-1] + - vz[ix*n1+iz] - vz[(ix-1)*n1+iz]) + - c2*(vx[ix*n1+iz+1] - vx[ix*n1+iz-2] + - vz[(ix+1)*n1+iz] - vz[(ix-2)*n1+iz]) ); - } - } - } /* end elastic scheme */ - - } - - - - - - ixo = mod.ioPx; - ixe = mod.iePx; - if (bnd.lef==4) ixo -= bnd.ntap; - if (bnd.rig==4) ixe += bnd.ntap; - izo = mod.ioPz; - ize = mod.iePz; - if (bnd.top==4) izo -= bnd.ntap; - if (bnd.bot==4) ize += bnd.ntap; - - if (mod.ischeme <= 2) { /* Acoustic scheme */ - - if (bnd.top==1) { /* free surface at top */ -#pragma omp for private (ix) nowait - for (ix=ixo; ix<ixe; ix++) { - iz = bnd.surface[ix]; - tzz[ix*n1+iz] = 0.0; - } - } - if (bnd.rig==1) { /* free surface at right */ -#pragma omp for private (iz) nowait - for (iz=izo; iz<ize; iz++) { - tzz[ixe*n1+iz] = 0.0; - } - } - if (bnd.bot==1) { /* free surface at bottom */ -#pragma omp for private (ix) nowait - for (ix=ixo; ix<ixe; ix++) { - tzz[ix*n1+ize] = 0.0; - } - } - if (bnd.lef==1) { /* free surface at left */ -#pragma omp for private (iz) nowait - for (iz=izo; iz<ize; iz++) { - tzz[ixo*n1+iz] = 0.0; - } - } - } - else { /* Elastic scheme */ - - /* Free surface: calculate free surface conditions for stresses - * Conditions (for upper boundary): - * 1. Tzz = 0 - * 2. Txz = 0 - * 3. Txx: remove term with dVz/dz, computed in e2/e4 routines - * and add extra term with dVx/dx, - * corresponding to free-surface condition for Txx. - * In this way, dVz/dz is not needed in computing Txx - * on the upper stress free boundary. Other boundaries - * are treated similar. - * For the 4th order schemes, the whole virtual boundary - * must be taken into account in the removal terms, - * because the algorithm sets - * velocities on this boundary! - * - * Compute the velocities on the virtual boundary to make interpolation - * possible for receivers. - */ - - if (bnd.top==1) { /* free surface at top */ - izp = bnd.surface[ixo]; -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { - iz = bnd.surface[ix]; - if ( izp==iz ) { - /* clear normal pressure */ - tzz[ix*n1+iz] = 0.0; - /* extra line of txz has to be copied */ -// txz[ix*n1+iz-1] = -txz[ix*n1+iz+2]; - /* This update to Vz might become unstable (2nd order scheme) */ -// vz[ix*n1+iz] = vz[ix*n1+iz+1] - (vx[(ix+1)*n1+iz]-vx[ix*n1+iz])* -// lam[ix*n1+iz]/l2m[ix*n1+iz]; - } - izp=iz; - } - - izp = bnd.surface[ixo]; -#pragma omp for private (ix, iz) - for (ix=ixo+1; ix<ixe+1; ix++) { - iz = bnd.surface[ix-1]; - if ( izp==iz ) { - /* assure that txz=0 on boundary by filling virtual boundary */ - txz[ix*n1+iz] = -txz[ix*n1+iz+1]; - /* extra line of txz has to be copied */ - txz[ix*n1+iz-1] = -txz[ix*n1+iz+2]; - } - izp=iz; - } - - /* calculate txx on top stress-free boundary */ - izp = bnd.surface[ixo]; -#pragma omp for private (ix, iz, dp, dvx) - for (ix=ixo; ix<ixe; ix++) { - iz = bnd.surface[ix]; - if ( izp==iz ) { - dp = l2m[ix*n1+iz]-lam[ix*n1+iz]*lam[ix*n1+iz]/l2m[ix*n1+iz]; - dvx = c1*(vx[(ix+1)*n1+iz] - vx[(ix)*n1+iz]) + - c2*(vx[(ix+2)*n1+iz] - vx[(ix-1)*n1+iz]); - txx[ix*n1+iz] = -dvx*dp; - } - izp=iz; - } - - - /* if surface has also left or right edges */ - izp = bnd.surface[ixo]; -#pragma omp for private (ix, iz, dp, dvz) - for (ix=ixo+1; ix<ixe; ix++) { - iz = bnd.surface[ix-1]; - if ( izp < iz ) { /* right boundary */ - /* clear normal pressure */ - txx[ix*n1+iz] = 0.0; - if ( (iz-izp) >= 2 ) { /* VR point */ - /* assure that txz=0 on boundary */ - txz[(ix+1)*n1+iz] = -txz[ix*n1+iz]; - txz[(ix+2)*n1+iz] = -txz[(ix-1)*n1+iz] ; - /* calculate tzz on right stress-free boundary */ - dvz = c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1]); - dp = l2m[ix*n1+iz]-lam[ix*n1+iz]*lam[ix*n1+iz]/l2m[ix*n1+iz]; - tzz[ix*n1+iz] = -dvz*dp; - } - else { - // if (izp) { /* IR point */ - // txz[ix*n1+iz] = -txz[ix*n1+iz+1] ; - // txz[ix*n1+iz-1] = -txz[ix*n1+iz+2]; - txz[(ix+1)*n1+iz] = -txz[ix*n1+iz]; - txz[(ix+2)*n1+iz] = -txz[(ix-1)*n1+iz] ; - tzz[ix*n1+iz] = 0.0; - // } - // else { /* OR point */ - txz[(ix-1)*n1+iz] = 0.0; - txz[(ix+1)*n1+iz] = -txz[ix*n1+iz]; - txz[(ix+2)*n1+iz] = -txz[(ix-1)*n1+iz] ; - vz[ix*n1+iz] = vz[ix*n1+iz+1] - (vx[(ix+1)*n1+iz]-vx[ix*n1+iz])* - lam[ix*n1+iz]/l2m[ix*n1+iz]; - // } - } - - } /* end if right */ - if ( izp > iz ) { /* left boundary */ - /* clear normal pressure */ - txx[ix*n1+iz] = 0.0; - /* assure that txz=0 on boundary */ - txz[(ix-1)*n1+iz] = -txz[ix*n1+iz]; - /* extra line of txz has to be copied */ - txz[(ix-2)*n1+iz] = -txz[(ix+1)*n1+iz] ; - /* calculate tzz on left stress-free boundary */ - dvz = c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1]); - dp = l2m[ix*n1+iz]-lam[ix*n1+iz]*lam[ix*n1+iz]/l2m[ix*n1+iz]; - tzz[ix*n1+iz] = -dvz*dp; - } /* end if left */ - izp=iz; - // izp=bnd.surface[MAX(ix-2,0)];; - } /* end ix loop */ - } - - - if (bnd.rig==1) { /* free surface at right */ - ix = ixe; -#pragma omp for private (ix, iz) - for (iz=izo; iz<ize; iz++) { - /* clear normal pressure */ - txx[(ix)*n1+iz] = 0.0; - } -#pragma omp for private (ix, iz) - for (iz=izo+1; iz<ize+1; iz++) { - /* assure that txz=0 on boundary by filling virtual boundary */ - txz[(ix+1)*n1+iz] = -txz[(ix)*n1+iz]; - /* extra line of txz has to be copied */ - txz[(ix+2)*n1+iz] = -txz[(ix-1)*n1+iz] ; - } - /* calculate tzz on right stress-free boundary */ -#pragma omp for private (iz) - for (iz=izo; iz<ize; iz++) { - dvz = c1*(vz[(ix)*n1+iz+1] - vz[(ix)*n1+iz]) + - c2*(vz[(ix)*n1+iz+2] - vz[(ix)*n1+iz-1]); - dp = l2m[(ix)*n1+iz]-lam[(ix)*n1+iz]*lam[(ix)*n1+iz]/l2m[(ix)*n1+iz]; - tzz[(ix)*n1+iz] = -dvz*dp; - } - } - - - if (bnd.bot==1) { /* free surface at bottom */ - iz = ize; -#pragma omp for private (ix) - for (ix=ixo; ix<ixe; ix++) { - /* clear normal pressure */ - tzz[ix*n1+iz] = 0.0; - } -#pragma omp for private (ix) - for (ix=ixo+1; ix<ixe+1; ix++) { - /* assure that txz=0 on boundary by filling virtual boundary */ - txz[ix*n1+iz+1] = -txz[ix*n1+iz]; - /* extra line of txz has to be copied */ - txz[ix*n1+iz+2] = -txz[ix*n1+iz-1]; - } - /* calculate txx on bottom stress-free boundary */ -#pragma omp for private (ix) - for (ix=ixo; ix<ixe; ix++) { - dvx = c1*(vx[(ix+1)*n1+iz] - vx[ix*n1+iz]) + - c2*(vx[(ix+2)*n1+iz] - vx[(ix-1)*n1+iz]); - dp = l2m[ix*n1+iz]-lam[ix*n1+iz]*lam[ix*n1+iz]/l2m[ix*n1+iz]; - txx[ix*n1+iz] = -dvx*dp; - } - } - - if (bnd.lef==1) { /* free surface at left */ - ix = ixo; -#pragma omp for private (iz) - for (iz=izo; iz<ize; iz++) { - /* clear normal pressure */ - txx[ix*n1+iz] = 0.0; - } -#pragma omp for private (iz) - for (iz=izo+1; iz<ize+1; iz++) { - /* assure that txz=0 on boundary by filling virtual boundary */ - txz[(ix)*n1+iz] = -txz[(ix+1)*n1+iz]; - /* extra line of txz has to be copied */ - txz[(ix-1)*n1+iz] = -txz[(ix+2)*n1+iz] ; - } - /* calculate tzz on left stress-free boundary */ -#pragma omp for private (iz) - for (iz=izo; iz<ize; iz++) { - dvz = c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1]); - dp = l2m[ix*n1+iz]-lam[ix*n1+iz]*lam[ix*n1+iz]/l2m[ix*n1+iz]; - tzz[ix*n1+iz] = -dvz*dp; - } - } - - - } - - - - - return 0; -} diff --git a/fdelmodc/boundaries.c.ok2 b/fdelmodc/boundaries.c.ok2 deleted file mode 100644 index 0bcfc58..0000000 --- a/fdelmodc/boundaries.c.ok2 +++ /dev/null @@ -1,1057 +0,0 @@ -#include<stdlib.h> -#include<stdio.h> -#include<math.h> -#include<assert.h> -#include"fdelmodc.h" - -float *exL, *exR, *eyT, *eyB; -int first=0; - -int boundariesP(modPar mod, bndPar bnd, float *vx, float *vz, float *tzz, float *txx, float *txz, float *rox, float *roz, float *l2m, float *lam, float *mul, int verbose) -{ -/********************************************************************* - - AUTHOR: - Jan Thorbecke (janth@xs4all.nl) - The Netherlands - -***********************************************************************/ - - float c1, c2; - float dp, dvx, dvz; - int ix, iz, ixs, izs, ibnd, ib, ibx, ibz; - int nx, nz, n1; - int is0, isrc; - int ixo, ixe, izo, ize; - - - c1 = 9.0/8.0; - c2 = -1.0/24.0; - nx = mod.nx; - nz = mod.nz; - n1 = mod.naz; - - ibnd = mod.iorder/2-1; - -/************************************************************/ -/* rigid boundary condition clears velocities on boundaries */ -/************************************************************/ - - if (bnd.top==3) { /* rigid surface at top */ -#pragma omp for private (ix, iz) nowait -#pragma ivdep - for (ix=1; ix<=nx; ix++) { - vx[ix*n1+ibnd] = 0.0; - vz[ix*n1+ibnd] = -vz[ix*n1+ibnd+1]; - if (mod.iorder >= 4) vz[ix*n1+ibnd-1] = -vz[ix*n1+ibnd+2]; - if (mod.iorder >= 6) vz[ix*n1+ibnd-2] = -vz[ix*n1+ibnd+3]; - } - } - if (bnd.rig==3) { /* rigid surface at right */ -#pragma omp for private (ix, iz) nowait -#pragma ivdep - for (iz=1; iz<=nz; iz++) { - vz[(nx+ibnd-1)*n1+iz] = 0.0; - vx[(nx+ibnd)*n1+iz] = -vx[(nx+ibnd-1)*n1+iz]; - if (mod.iorder == 4) vx[(nx+2)*n1+iz] = -vx[(nx-1)*n1+iz]; - if (mod.iorder == 6) { - vx[(nx+1)*n1+iz] = -vx[(nx)*n1+iz]; - vx[(nx+3)*n1+iz] = -vx[(nx-2)*n1+iz]; - } - } - } - if (bnd.bot==3) { /* rigid surface at bottom */ -#pragma omp for private (ix, iz) nowait -#pragma ivdep - for (ix=1; ix<=nx; ix++) { - vx[ix*n1+nz+ibnd-1] = 0.0; - vz[ix*n1+nz+ibnd] = -vz[ix*n1+nz+ibnd-1]; - if (mod.iorder == 4) vz[ix*n1+nz+2] = -vz[ix*n1+nz-1]; - if (mod.iorder == 6) { - vz[ix*n1+nz+1] = -vz[ix*n1+nz]; - vz[ix*n1+nz+3] = -vz[ix*n1+nz-2]; - } - } - } - if (bnd.lef==3) { /* rigid surface at left */ -#pragma omp for private (ix, iz) nowait -#pragma ivdep - for (iz=1; iz<=nz; iz++) { - vz[ibnd*n1+iz] = 0.0; - vx[ibnd*n1+iz] = -vx[(ibnd+1)*n1+iz]; - if (mod.iorder == 4) vx[0*n1+iz] = -vx[3*n1+iz]; - if (mod.iorder == 6) { - vx[1*n1+iz] = -vx[4*n1+iz]; - vx[0*n1+iz] = -vx[5*n1+iz]; - } - } - } - -/************************************************************/ -/* PML boundaries : only for acoustic 4th order scheme */ -/************************************************************/ - - if (bnd.top==2) { /* PML at top */ - } - -/************************************************************/ -/* Tapered boundaries for both elastic and acoustic schemes */ -/* compute all field values in tapered areas */ -/************************************************************/ - - /*********/ - /* Top */ - /*********/ - if (bnd.top==4) { - - if (mod.ischeme <= 2) { /* Acoustic scheme */ - - /* Vx field */ - ixo = mod.ioXx; - ixe = mod.ieXx; - izo = mod.ioXz-bnd.ntap; - ize = mod.ioXz; - - ib = (bnd.ntap+izo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - - vx[ix*n1+iz] *= bnd.tapx[ib-iz]; - } - } - /* right top corner */ - if (bnd.rig==4) { - ixo = mod.ieXx; - ixe = ixo+bnd.ntap; - ibz = (bnd.ntap+izo-1); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - - vx[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(ibz-iz)]; - } - } - } - /* left top corner */ - if (bnd.lef==4) { - ixo = mod.ioXx-bnd.ntap; - ixe = mod.ioXx; - ibz = (bnd.ntap+izo-1); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - - vx[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(ibz-iz)]; - } - } - } - - - /* Vz field */ - ixo = mod.ioZx; - ixe = mod.ieZx; - izo = mod.ioZz-bnd.ntap; - ize = mod.ioZz; - - ib = (bnd.ntap+izo-1); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - - vz[ix*n1+iz] *= bnd.tapz[ib-iz]; - } - } - /* right top corner */ - if (bnd.rig==4) { - ixo = mod.ieZx; - ixe = ixo+bnd.ntap; - ibz = (bnd.ntap+izo-1); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - - vz[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(ibz-iz)]; - } - } - } - /* left top corner */ - if (bnd.lef==4) { - ixo = mod.ioZx-bnd.ntap; - ixe = mod.ioZx; - ibz = (bnd.ntap+izo-1); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - - vz[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(ibz-iz)]; - } - } - } - - } - else { /* Elastic scheme */ - - /* Vx field */ - ixo = mod.ioXx; - ixe = mod.ieXx; - izo = mod.ioXz-bnd.ntap; - ize = mod.ioXz; - - ib = (bnd.ntap+izo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapx[ib-iz]; - } - } - /* right top corner */ - if (bnd.rig==4) { - ixo = mod.ieXx; - ixe = ixo+bnd.ntap; - ibz = (bnd.ntap+izo-1); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(ibz-iz)]; - } - } - } - /* left top corner */ - if (bnd.lef==4) { - ixo = mod.ioXx-bnd.ntap; - ixe = mod.ioXx; - ibz = (bnd.ntap+izo-1); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(ibz-iz)]; - } - } - } - - /* Vz field */ - ixo = mod.ioZx; - ixe = mod.ieZx; - izo = mod.ioZz-bnd.ntap; - ize = mod.ioZz; - - ib = (bnd.ntap+izo-1); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapz[ib-iz]; - } - } - /* right top corner */ - if (bnd.rig==4) { - ixo = mod.ieZx; - ixe = ixo+bnd.ntap; - ibz = (bnd.ntap+izo-1); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(ibz-iz)]; - } - } - } - /* left top corner */ - if (bnd.lef==4) { - ixo = mod.ioZx-bnd.ntap; - ixe = mod.ioZx; - ibz = (bnd.ntap+izo-1); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(ibz-iz)]; - } - } - } - - - } /* end elastic scheme */ - } - - /*********/ - /* Bottom */ - /*********/ - if (bnd.bot==4) { - - if (mod.ischeme <= 2) { /* Acoustic scheme */ - - /* Vx field */ - ixo = mod.ioXx; - ixe = mod.ieXx; - izo = mod.ieXz; - ize = mod.ieXz+bnd.ntap; - - ib = (ize-bnd.ntap); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - vx[ix*n1+iz] *= bnd.tapx[iz-ib]; - } - } - /* right bottom corner */ - if (bnd.rig==4) { - ixo = mod.ieXx; - ixe = ixo+bnd.ntap; - ibz = (izo); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - - vx[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(iz-ibz)]; - } - } - } - /* left bottom corner */ - if (bnd.lef==4) { - ixo = mod.ioXx-bnd.ntap; - ixe = mod.ioXx; - ibz = (izo); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - - vx[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(iz-ibz)]; - } - } - } - - - /* Vz field */ - ixo = mod.ioZx; - ixe = mod.ieZx; - izo = mod.ieZz; - ize = mod.ieZz+bnd.ntap; - - ib = (ize-bnd.ntap); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - vz[ix*n1+iz] *= bnd.tapz[iz-ib]; - } - } - /* right bottom corner */ - if (bnd.rig==4) { - ixo = mod.ieZx; - ixe = ixo+bnd.ntap; - ibz = (izo); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - - vz[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(iz-ibz)]; - } - } - } - /* left bottom corner */ - if (bnd.lef==4) { - ixo = mod.ioZx-bnd.ntap; - ixe = mod.ioZx; - ibz = (izo); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - - vz[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(iz-ibz)]; - } - } - } - - - } - else { /* Elastic scheme */ - - /* Vx field */ - ixo = mod.ioXx; - ixe = mod.ieXx; - izo = mod.ieXz; - ize = mod.ieXz+bnd.ntap; - - ib = (ize-bnd.ntap); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapx[iz-ib]; - } - } - /* right bottom corner */ - if (bnd.rig==4) { - ixo = mod.ieXx; - ixe = ixo+bnd.ntap; - ibz = (izo); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(iz-ibz)]; - } - } - } - /* left bottom corner */ - if (bnd.lef==4) { - - - ixo = mod.ioXx-bnd.ntap; - ixe = mod.ioXx; - ibz = (izo); - ibx = (bnd.ntap+ixo-1); - - -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(iz-ibz)]; - } - } - } - - /* Vz field */ - ixo = mod.ioZx; - ixe = mod.ieZx; - izo = mod.ieZz; - ize = mod.ieZz+bnd.ntap; - - ib = (ize-bnd.ntap); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapz[iz-ib]; - } - } - /* right bottom corner */ - if (bnd.rig==4) { - ixo = mod.ieZx; - ixe = ixo+bnd.ntap; - ibz = (izo); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(iz-ibz)]; - } - } - } - /* left bottom corner */ - if (bnd.lef==4) { - ixo = mod.ioZx-bnd.ntap; - ixe = mod.ioZx; - ibz = (izo); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(iz-ibz)]; - } - } - } - - - } /* end elastic scheme */ - - } - - /*********/ - /* Left */ - /*********/ - if (bnd.lef==4) { - - if (mod.ischeme <= 2) { /* Acoustic scheme */ - - /* Vx field */ - ixo = mod.ioXx-bnd.ntap; - ixe = mod.ioXx; - izo = mod.ioXz; - ize = mod.ieXz; - - ib = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - - vx[ix*n1+iz] *= bnd.tapx[ib-ix]; - } - } - - /* Vz field */ - ixo = mod.ioZx-bnd.ntap; - ixe = mod.ioZx; - izo = mod.ioZz; - ize = mod.ieZz; - - ib = (bnd.ntap+ixo-1); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - - vz[ix*n1+iz] *= bnd.tapz[ib-ix]; - } - } - - } - else { /* Elastic scheme */ - - /* Vx field */ - ixo = mod.ioXx-bnd.ntap; - ixe = mod.ioXx; - izo = mod.ioXz; - ize = mod.ieXz; - - ib = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapx[ib-ix]; - } - } - - /* Vz field */ - ixo = mod.ioZx-bnd.ntap; - ixe = mod.ioZx; - izo = mod.ioZz; - ize = mod.ieZz; - - ib = (bnd.ntap+ixo-1); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapz[ib-ix]; - } - } - } /* end elastic scheme */ - - } - - /*********/ - /* Right */ - /*********/ - if (bnd.rig==4) { - - if (mod.ischeme <= 2) { /* Acoustic scheme */ - - /* Vx field */ - ixo = mod.ieXx; - ixe = mod.ieXx+bnd.ntap; - izo = mod.ioXz; - ize = mod.ieXz; - - ib = (ixe-bnd.ntap); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - - vx[ix*n1+iz] *= bnd.tapx[ix-ib]; - } - } - - /* Vz field */ - ixo = mod.ieZx; - ixe = mod.ieZx+bnd.ntap; - izo = mod.ioZz; - ize = mod.ieZz; - - ib = (ixe-bnd.ntap); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - - vz[ix*n1+iz] *= bnd.tapz[ix-ib]; - } - } - - } - else { /* Elastic scheme */ - - /* Vx field */ - ixo = mod.ieXx; - ixe = mod.ieXx+bnd.ntap; - izo = mod.ioXz; - ize = mod.ieXz; - - ib = (ixe-bnd.ntap); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapx[ix-ib]; - } - } - - /* Vz field */ - ixo = mod.ieZx; - ixe = mod.ieZx+bnd.ntap; - izo = mod.ioZz; - ize = mod.ieZz; - - ib = (ixe-bnd.ntap); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapz[ix-ib]; - } - } - - } /* end elastic scheme */ - - } - - - return 0; -} - -int boundariesV(modPar mod, bndPar bnd, float *vx, float *vz, float *tzz, float *txx, float *txz, float *rox, float *roz, float *l2m, float *lam, float *mul, int verbose) -{ -/********************************************************************* - - AUTHOR: - Jan Thorbecke (janth@xs4all.nl) - The Netherlands - -***********************************************************************/ - - float c1, c2; - float dp, dvx, dvz; - int ix, iz, ixs, izs, izp; - int n1; - int is0, isrc; - int ixo, ixe, izo, ize; - - c1 = 9.0/8.0; - c2 = -1.0/24.0; - n1 = mod.naz; - -/************************************************************/ -/* Tapered boundaries for both elastic and acoustic schemes */ -/* compute all field values in tapered areas */ -/************************************************************/ - - -/****************************************************************/ -/* Free surface: calculate free surface conditions for stresses */ -/****************************************************************/ - - - ixo = mod.ioPx; - ixe = mod.iePx; - izo = mod.ioPz; - ize = mod.iePz; - - if (mod.ischeme <= 2) { /* Acoustic scheme */ - - if (bnd.top==1) { /* free surface at top */ -#pragma omp for private (ix) nowait - for (ix=mod.ioPx; ix<mod.iePx; ix++) { - iz = bnd.surface[ix]; - tzz[ix*n1+iz] = 0.0; - } - } - if (bnd.rig==1) { /* free surface at right */ -#pragma omp for private (iz) nowait - for (iz=mod.ioPz; iz<mod.iePz; iz++) { - tzz[(mod.iePx-1)*n1+iz] = 0.0; - } - } - if (bnd.bot==1) { /* free surface at bottom */ -#pragma omp for private (ix) nowait - for (ix=mod.ioPx; ix<mod.iePx; ix++) { - tzz[ix*n1+mod.iePz-1] = 0.0; - } - } - if (bnd.lef==1) { /* free surface at left */ -#pragma omp for private (iz) nowait - for (iz=mod.ioPz; iz<mod.iePz; iz++) { - tzz[(mod.ioPx-1)*n1+iz] = 0.0; - } - } - } - else { /* Elastic scheme */ - - /* Free surface: calculate free surface conditions for stresses - * Conditions (for upper boundary): - * 1. Tzz = 0 - * 2. Txz = 0 - * 3. Txx: remove term with dVz/dz, computed in e2/e4 routines - * and add extra term with dVx/dx, - * corresponding to free-surface condition for Txx. - * In this way, dVz/dz is not needed in computing Txx - * on the upper stress free boundary. Other boundaries - * are treated similar. - * For the 4th order schemes, the whole virtual boundary - * must be taken into account in the removal terms, - * because the algorithm sets - * velocities on this boundary! - * - * Compute the velocities on the virtual boundary to make interpolation - * possible for receivers. - */ - - if (bnd.top==1) { /* free surface at top */ - izp = bnd.surface[ixo]; -#pragma omp for private (ix, iz) - for (ix=mod.ioPx; ix<mod.iePx; ix++) { - iz = bnd.surface[ix]; - if ( izp==iz ) { - /* clear normal pressure */ - tzz[ix*n1+iz] = 0.0; - /* extra line of txz has to be copied */ -// txz[ix*n1+iz-1] = -txz[ix*n1+iz+2]; - /* This update to Vz might become unstable (2nd order scheme) */ -// vz[ix*n1+iz] = vz[ix*n1+iz+1] - (vx[(ix+1)*n1+iz]-vx[ix*n1+iz])* -// lam[ix*n1+iz]/l2m[ix*n1+iz]; - } - izp=iz; - } - - izp = bnd.surface[ixo]; -#pragma omp for private (ix, iz) - for (ix=mod.ioTx; ix<mod.ieTx; ix++) { - iz = bnd.surface[ix]; - if ( izp==iz ) { - /* assure that txz=0 on boundary by filling virtual boundary */ - txz[ix*n1+iz] = -txz[ix*n1+iz+1]; - /* extra line of txz has to be copied */ - txz[ix*n1+iz-1] = -txz[ix*n1+iz+2]; - } - izp=iz; - } - - /* calculate txx on top stress-free boundary */ - izp = bnd.surface[ixo]; -#pragma omp for private (ix, iz, dp, dvx) - for (ix=mod.ioPx; ix<mod.iePx; ix++) { - iz = bnd.surface[ix]; - if ( izp==iz ) { - dp = l2m[ix*n1+iz]-lam[ix*n1+iz]*lam[ix*n1+iz]/l2m[ix*n1+iz]; - dvx = c1*(vx[(ix+1)*n1+iz] - vx[(ix)*n1+iz]) + - c2*(vx[(ix+2)*n1+iz] - vx[(ix-1)*n1+iz]); - txx[ix*n1+iz] = -dvx*dp; - } - izp=iz; - } - - - /* if surface has also left or right edges */ - izp = bnd.surface[ixo]; -#pragma omp for private (ix, iz, dp, dvz) - for (ix=mod.ioPx+1; ix<mod.iePx; ix++) { - iz = bnd.surface[ix-1]; - if ( izp < iz ) { /* right boundary */ - /* clear normal pressure */ - txx[ix*n1+iz] = 0.0; - if ( (iz-izp) >= 2 ) { /* VR point */ - /* assure that txz=0 on boundary */ - txz[(ix+1)*n1+iz] = -txz[ix*n1+iz]; - txz[(ix+2)*n1+iz] = -txz[(ix-1)*n1+iz] ; - /* calculate tzz on right stress-free boundary */ - dvz = c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1]); - dp = l2m[ix*n1+iz]-lam[ix*n1+iz]*lam[ix*n1+iz]/l2m[ix*n1+iz]; - tzz[ix*n1+iz] = -dvz*dp; - } - else { - // if (izp) { /* IR point */ - // txz[ix*n1+iz] = -txz[ix*n1+iz+1] ; - // txz[ix*n1+iz-1] = -txz[ix*n1+iz+2]; - txz[(ix+1)*n1+iz] = -txz[ix*n1+iz]; - txz[(ix+2)*n1+iz] = -txz[(ix-1)*n1+iz] ; - tzz[ix*n1+iz] = 0.0; - // } - // else { /* OR point */ - txz[(ix-1)*n1+iz] = 0.0; - txz[(ix+1)*n1+iz] = -txz[ix*n1+iz]; - txz[(ix+2)*n1+iz] = -txz[(ix-1)*n1+iz] ; - vz[ix*n1+iz] = vz[ix*n1+iz+1] - (vx[(ix+1)*n1+iz]-vx[ix*n1+iz])* - lam[ix*n1+iz]/l2m[ix*n1+iz]; - // } - } - - } /* end if right */ - if ( izp > iz ) { /* left boundary */ - /* clear normal pressure */ - txx[ix*n1+iz] = 0.0; - /* assure that txz=0 on boundary */ - txz[(ix-1)*n1+iz] = -txz[ix*n1+iz]; - /* extra line of txz has to be copied */ - txz[(ix-2)*n1+iz] = -txz[(ix+1)*n1+iz] ; - /* calculate tzz on left stress-free boundary */ - dvz = c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1]); - dp = l2m[ix*n1+iz]-lam[ix*n1+iz]*lam[ix*n1+iz]/l2m[ix*n1+iz]; - tzz[ix*n1+iz] = -dvz*dp; - } /* end if left */ - izp=iz; - // izp=bnd.surface[MAX(ix-2,0)];; - } /* end ix loop */ - } - - - if (bnd.rig==1) { /* free surface at right */ - ix = mod.iePx; -#pragma omp for private (ix, iz) - for (iz=mod.ioPz; iz<mod.iePz; iz++) { - /* clear normal pressure */ - txx[(ix)*n1+iz] = 0.0; - } -#pragma omp for private (ix, iz) - for (iz=mod.ioTz; iz<mod.ieTz; iz++) { - /* assure that txz=0 on boundary by filling virtual boundary */ - txz[(ix+1)*n1+iz] = -txz[(ix)*n1+iz]; - /* extra line of txz has to be copied */ - txz[(ix+2)*n1+iz] = -txz[(ix-1)*n1+iz] ; - } - /* calculate tzz on right stress-free boundary */ -#pragma omp for private (iz) - for (iz=mod.ioPz; iz<mod.iePz; iz++) { - dvz = c1*(vz[(ix)*n1+iz+1] - vz[(ix)*n1+iz]) + - c2*(vz[(ix)*n1+iz+2] - vz[(ix)*n1+iz-1]); - dp = l2m[(ix)*n1+iz]-lam[(ix)*n1+iz]*lam[(ix)*n1+iz]/l2m[(ix)*n1+iz]; - tzz[(ix)*n1+iz] = -dvz*dp; - } - } - - - if (bnd.bot==1) { /* free surface at bottom */ - iz = mod.iePz; -#pragma omp for private (ix) - for (ix=mod.ioPx; ix<mod.iePx; ix++) { - /* clear normal pressure */ - tzz[ix*n1+iz] = 0.0; - } -#pragma omp for private (ix) - for (ix=mod.ioTx; ix<mod.ieTx; ix++) { - /* assure that txz=0 on boundary by filling virtual boundary */ - txz[ix*n1+iz+1] = -txz[ix*n1+iz]; - /* extra line of txz has to be copied */ - txz[ix*n1+iz+2] = -txz[ix*n1+iz-1]; - } - /* calculate txx on bottom stress-free boundary */ -#pragma omp for private (ix) - for (ix=mod.ioPx; ix<mod.iePx; ix++) { - dvx = c1*(vx[(ix+1)*n1+iz] - vx[ix*n1+iz]) + - c2*(vx[(ix+2)*n1+iz] - vx[(ix-1)*n1+iz]); - dp = l2m[ix*n1+iz]-lam[ix*n1+iz]*lam[ix*n1+iz]/l2m[ix*n1+iz]; - txx[ix*n1+iz] = -dvx*dp; - } - } - - if (bnd.lef==1) { /* free surface at left */ - ix = mod.ioPx; -#pragma omp for private (iz) - for (iz=mod.ioPz; iz<mod.iePz; iz++) { - /* clear normal pressure */ - txx[ix*n1+iz] = 0.0; - } -#pragma omp for private (iz) - for (iz=mod.ioTz; iz<mod.ieTz; iz++) { - /* assure that txz=0 on boundary by filling virtual boundary */ - txz[(ix)*n1+iz] = -txz[(ix+1)*n1+iz]; - /* extra line of txz has to be copied */ - txz[(ix-1)*n1+iz] = -txz[(ix+2)*n1+iz] ; - } - /* calculate tzz on left stress-free boundary */ -#pragma omp for private (iz) - for (iz=mod.ioPz; iz<mod.iePz; iz++) { - dvz = c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1]); - dp = l2m[ix*n1+iz]-lam[ix*n1+iz]*lam[ix*n1+iz]/l2m[ix*n1+iz]; - tzz[ix*n1+iz] = -dvz*dp; - } - } - - - } - - - - - return 0; -} diff --git a/fdelmodc/boundaries.c.ok3 b/fdelmodc/boundaries.c.ok3 deleted file mode 100644 index 0bcfc58..0000000 --- a/fdelmodc/boundaries.c.ok3 +++ /dev/null @@ -1,1057 +0,0 @@ -#include<stdlib.h> -#include<stdio.h> -#include<math.h> -#include<assert.h> -#include"fdelmodc.h" - -float *exL, *exR, *eyT, *eyB; -int first=0; - -int boundariesP(modPar mod, bndPar bnd, float *vx, float *vz, float *tzz, float *txx, float *txz, float *rox, float *roz, float *l2m, float *lam, float *mul, int verbose) -{ -/********************************************************************* - - AUTHOR: - Jan Thorbecke (janth@xs4all.nl) - The Netherlands - -***********************************************************************/ - - float c1, c2; - float dp, dvx, dvz; - int ix, iz, ixs, izs, ibnd, ib, ibx, ibz; - int nx, nz, n1; - int is0, isrc; - int ixo, ixe, izo, ize; - - - c1 = 9.0/8.0; - c2 = -1.0/24.0; - nx = mod.nx; - nz = mod.nz; - n1 = mod.naz; - - ibnd = mod.iorder/2-1; - -/************************************************************/ -/* rigid boundary condition clears velocities on boundaries */ -/************************************************************/ - - if (bnd.top==3) { /* rigid surface at top */ -#pragma omp for private (ix, iz) nowait -#pragma ivdep - for (ix=1; ix<=nx; ix++) { - vx[ix*n1+ibnd] = 0.0; - vz[ix*n1+ibnd] = -vz[ix*n1+ibnd+1]; - if (mod.iorder >= 4) vz[ix*n1+ibnd-1] = -vz[ix*n1+ibnd+2]; - if (mod.iorder >= 6) vz[ix*n1+ibnd-2] = -vz[ix*n1+ibnd+3]; - } - } - if (bnd.rig==3) { /* rigid surface at right */ -#pragma omp for private (ix, iz) nowait -#pragma ivdep - for (iz=1; iz<=nz; iz++) { - vz[(nx+ibnd-1)*n1+iz] = 0.0; - vx[(nx+ibnd)*n1+iz] = -vx[(nx+ibnd-1)*n1+iz]; - if (mod.iorder == 4) vx[(nx+2)*n1+iz] = -vx[(nx-1)*n1+iz]; - if (mod.iorder == 6) { - vx[(nx+1)*n1+iz] = -vx[(nx)*n1+iz]; - vx[(nx+3)*n1+iz] = -vx[(nx-2)*n1+iz]; - } - } - } - if (bnd.bot==3) { /* rigid surface at bottom */ -#pragma omp for private (ix, iz) nowait -#pragma ivdep - for (ix=1; ix<=nx; ix++) { - vx[ix*n1+nz+ibnd-1] = 0.0; - vz[ix*n1+nz+ibnd] = -vz[ix*n1+nz+ibnd-1]; - if (mod.iorder == 4) vz[ix*n1+nz+2] = -vz[ix*n1+nz-1]; - if (mod.iorder == 6) { - vz[ix*n1+nz+1] = -vz[ix*n1+nz]; - vz[ix*n1+nz+3] = -vz[ix*n1+nz-2]; - } - } - } - if (bnd.lef==3) { /* rigid surface at left */ -#pragma omp for private (ix, iz) nowait -#pragma ivdep - for (iz=1; iz<=nz; iz++) { - vz[ibnd*n1+iz] = 0.0; - vx[ibnd*n1+iz] = -vx[(ibnd+1)*n1+iz]; - if (mod.iorder == 4) vx[0*n1+iz] = -vx[3*n1+iz]; - if (mod.iorder == 6) { - vx[1*n1+iz] = -vx[4*n1+iz]; - vx[0*n1+iz] = -vx[5*n1+iz]; - } - } - } - -/************************************************************/ -/* PML boundaries : only for acoustic 4th order scheme */ -/************************************************************/ - - if (bnd.top==2) { /* PML at top */ - } - -/************************************************************/ -/* Tapered boundaries for both elastic and acoustic schemes */ -/* compute all field values in tapered areas */ -/************************************************************/ - - /*********/ - /* Top */ - /*********/ - if (bnd.top==4) { - - if (mod.ischeme <= 2) { /* Acoustic scheme */ - - /* Vx field */ - ixo = mod.ioXx; - ixe = mod.ieXx; - izo = mod.ioXz-bnd.ntap; - ize = mod.ioXz; - - ib = (bnd.ntap+izo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - - vx[ix*n1+iz] *= bnd.tapx[ib-iz]; - } - } - /* right top corner */ - if (bnd.rig==4) { - ixo = mod.ieXx; - ixe = ixo+bnd.ntap; - ibz = (bnd.ntap+izo-1); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - - vx[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(ibz-iz)]; - } - } - } - /* left top corner */ - if (bnd.lef==4) { - ixo = mod.ioXx-bnd.ntap; - ixe = mod.ioXx; - ibz = (bnd.ntap+izo-1); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - - vx[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(ibz-iz)]; - } - } - } - - - /* Vz field */ - ixo = mod.ioZx; - ixe = mod.ieZx; - izo = mod.ioZz-bnd.ntap; - ize = mod.ioZz; - - ib = (bnd.ntap+izo-1); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - - vz[ix*n1+iz] *= bnd.tapz[ib-iz]; - } - } - /* right top corner */ - if (bnd.rig==4) { - ixo = mod.ieZx; - ixe = ixo+bnd.ntap; - ibz = (bnd.ntap+izo-1); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - - vz[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(ibz-iz)]; - } - } - } - /* left top corner */ - if (bnd.lef==4) { - ixo = mod.ioZx-bnd.ntap; - ixe = mod.ioZx; - ibz = (bnd.ntap+izo-1); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - - vz[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(ibz-iz)]; - } - } - } - - } - else { /* Elastic scheme */ - - /* Vx field */ - ixo = mod.ioXx; - ixe = mod.ieXx; - izo = mod.ioXz-bnd.ntap; - ize = mod.ioXz; - - ib = (bnd.ntap+izo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapx[ib-iz]; - } - } - /* right top corner */ - if (bnd.rig==4) { - ixo = mod.ieXx; - ixe = ixo+bnd.ntap; - ibz = (bnd.ntap+izo-1); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(ibz-iz)]; - } - } - } - /* left top corner */ - if (bnd.lef==4) { - ixo = mod.ioXx-bnd.ntap; - ixe = mod.ioXx; - ibz = (bnd.ntap+izo-1); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(ibz-iz)]; - } - } - } - - /* Vz field */ - ixo = mod.ioZx; - ixe = mod.ieZx; - izo = mod.ioZz-bnd.ntap; - ize = mod.ioZz; - - ib = (bnd.ntap+izo-1); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapz[ib-iz]; - } - } - /* right top corner */ - if (bnd.rig==4) { - ixo = mod.ieZx; - ixe = ixo+bnd.ntap; - ibz = (bnd.ntap+izo-1); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(ibz-iz)]; - } - } - } - /* left top corner */ - if (bnd.lef==4) { - ixo = mod.ioZx-bnd.ntap; - ixe = mod.ioZx; - ibz = (bnd.ntap+izo-1); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(ibz-iz)]; - } - } - } - - - } /* end elastic scheme */ - } - - /*********/ - /* Bottom */ - /*********/ - if (bnd.bot==4) { - - if (mod.ischeme <= 2) { /* Acoustic scheme */ - - /* Vx field */ - ixo = mod.ioXx; - ixe = mod.ieXx; - izo = mod.ieXz; - ize = mod.ieXz+bnd.ntap; - - ib = (ize-bnd.ntap); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - vx[ix*n1+iz] *= bnd.tapx[iz-ib]; - } - } - /* right bottom corner */ - if (bnd.rig==4) { - ixo = mod.ieXx; - ixe = ixo+bnd.ntap; - ibz = (izo); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - - vx[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(iz-ibz)]; - } - } - } - /* left bottom corner */ - if (bnd.lef==4) { - ixo = mod.ioXx-bnd.ntap; - ixe = mod.ioXx; - ibz = (izo); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - - vx[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(iz-ibz)]; - } - } - } - - - /* Vz field */ - ixo = mod.ioZx; - ixe = mod.ieZx; - izo = mod.ieZz; - ize = mod.ieZz+bnd.ntap; - - ib = (ize-bnd.ntap); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - vz[ix*n1+iz] *= bnd.tapz[iz-ib]; - } - } - /* right bottom corner */ - if (bnd.rig==4) { - ixo = mod.ieZx; - ixe = ixo+bnd.ntap; - ibz = (izo); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - - vz[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(iz-ibz)]; - } - } - } - /* left bottom corner */ - if (bnd.lef==4) { - ixo = mod.ioZx-bnd.ntap; - ixe = mod.ioZx; - ibz = (izo); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - - vz[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(iz-ibz)]; - } - } - } - - - } - else { /* Elastic scheme */ - - /* Vx field */ - ixo = mod.ioXx; - ixe = mod.ieXx; - izo = mod.ieXz; - ize = mod.ieXz+bnd.ntap; - - ib = (ize-bnd.ntap); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapx[iz-ib]; - } - } - /* right bottom corner */ - if (bnd.rig==4) { - ixo = mod.ieXx; - ixe = ixo+bnd.ntap; - ibz = (izo); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(iz-ibz)]; - } - } - } - /* left bottom corner */ - if (bnd.lef==4) { - - - ixo = mod.ioXx-bnd.ntap; - ixe = mod.ioXx; - ibz = (izo); - ibx = (bnd.ntap+ixo-1); - - -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(iz-ibz)]; - } - } - } - - /* Vz field */ - ixo = mod.ioZx; - ixe = mod.ieZx; - izo = mod.ieZz; - ize = mod.ieZz+bnd.ntap; - - ib = (ize-bnd.ntap); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapz[iz-ib]; - } - } - /* right bottom corner */ - if (bnd.rig==4) { - ixo = mod.ieZx; - ixe = ixo+bnd.ntap; - ibz = (izo); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(iz-ibz)]; - } - } - } - /* left bottom corner */ - if (bnd.lef==4) { - ixo = mod.ioZx-bnd.ntap; - ixe = mod.ioZx; - ibz = (izo); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(iz-ibz)]; - } - } - } - - - } /* end elastic scheme */ - - } - - /*********/ - /* Left */ - /*********/ - if (bnd.lef==4) { - - if (mod.ischeme <= 2) { /* Acoustic scheme */ - - /* Vx field */ - ixo = mod.ioXx-bnd.ntap; - ixe = mod.ioXx; - izo = mod.ioXz; - ize = mod.ieXz; - - ib = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - - vx[ix*n1+iz] *= bnd.tapx[ib-ix]; - } - } - - /* Vz field */ - ixo = mod.ioZx-bnd.ntap; - ixe = mod.ioZx; - izo = mod.ioZz; - ize = mod.ieZz; - - ib = (bnd.ntap+ixo-1); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - - vz[ix*n1+iz] *= bnd.tapz[ib-ix]; - } - } - - } - else { /* Elastic scheme */ - - /* Vx field */ - ixo = mod.ioXx-bnd.ntap; - ixe = mod.ioXx; - izo = mod.ioXz; - ize = mod.ieXz; - - ib = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapx[ib-ix]; - } - } - - /* Vz field */ - ixo = mod.ioZx-bnd.ntap; - ixe = mod.ioZx; - izo = mod.ioZz; - ize = mod.ieZz; - - ib = (bnd.ntap+ixo-1); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapz[ib-ix]; - } - } - } /* end elastic scheme */ - - } - - /*********/ - /* Right */ - /*********/ - if (bnd.rig==4) { - - if (mod.ischeme <= 2) { /* Acoustic scheme */ - - /* Vx field */ - ixo = mod.ieXx; - ixe = mod.ieXx+bnd.ntap; - izo = mod.ioXz; - ize = mod.ieXz; - - ib = (ixe-bnd.ntap); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - - vx[ix*n1+iz] *= bnd.tapx[ix-ib]; - } - } - - /* Vz field */ - ixo = mod.ieZx; - ixe = mod.ieZx+bnd.ntap; - izo = mod.ioZz; - ize = mod.ieZz; - - ib = (ixe-bnd.ntap); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - - vz[ix*n1+iz] *= bnd.tapz[ix-ib]; - } - } - - } - else { /* Elastic scheme */ - - /* Vx field */ - ixo = mod.ieXx; - ixe = mod.ieXx+bnd.ntap; - izo = mod.ioXz; - ize = mod.ieXz; - - ib = (ixe-bnd.ntap); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapx[ix-ib]; - } - } - - /* Vz field */ - ixo = mod.ieZx; - ixe = mod.ieZx+bnd.ntap; - izo = mod.ioZz; - ize = mod.ieZz; - - ib = (ixe-bnd.ntap); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapz[ix-ib]; - } - } - - } /* end elastic scheme */ - - } - - - return 0; -} - -int boundariesV(modPar mod, bndPar bnd, float *vx, float *vz, float *tzz, float *txx, float *txz, float *rox, float *roz, float *l2m, float *lam, float *mul, int verbose) -{ -/********************************************************************* - - AUTHOR: - Jan Thorbecke (janth@xs4all.nl) - The Netherlands - -***********************************************************************/ - - float c1, c2; - float dp, dvx, dvz; - int ix, iz, ixs, izs, izp; - int n1; - int is0, isrc; - int ixo, ixe, izo, ize; - - c1 = 9.0/8.0; - c2 = -1.0/24.0; - n1 = mod.naz; - -/************************************************************/ -/* Tapered boundaries for both elastic and acoustic schemes */ -/* compute all field values in tapered areas */ -/************************************************************/ - - -/****************************************************************/ -/* Free surface: calculate free surface conditions for stresses */ -/****************************************************************/ - - - ixo = mod.ioPx; - ixe = mod.iePx; - izo = mod.ioPz; - ize = mod.iePz; - - if (mod.ischeme <= 2) { /* Acoustic scheme */ - - if (bnd.top==1) { /* free surface at top */ -#pragma omp for private (ix) nowait - for (ix=mod.ioPx; ix<mod.iePx; ix++) { - iz = bnd.surface[ix]; - tzz[ix*n1+iz] = 0.0; - } - } - if (bnd.rig==1) { /* free surface at right */ -#pragma omp for private (iz) nowait - for (iz=mod.ioPz; iz<mod.iePz; iz++) { - tzz[(mod.iePx-1)*n1+iz] = 0.0; - } - } - if (bnd.bot==1) { /* free surface at bottom */ -#pragma omp for private (ix) nowait - for (ix=mod.ioPx; ix<mod.iePx; ix++) { - tzz[ix*n1+mod.iePz-1] = 0.0; - } - } - if (bnd.lef==1) { /* free surface at left */ -#pragma omp for private (iz) nowait - for (iz=mod.ioPz; iz<mod.iePz; iz++) { - tzz[(mod.ioPx-1)*n1+iz] = 0.0; - } - } - } - else { /* Elastic scheme */ - - /* Free surface: calculate free surface conditions for stresses - * Conditions (for upper boundary): - * 1. Tzz = 0 - * 2. Txz = 0 - * 3. Txx: remove term with dVz/dz, computed in e2/e4 routines - * and add extra term with dVx/dx, - * corresponding to free-surface condition for Txx. - * In this way, dVz/dz is not needed in computing Txx - * on the upper stress free boundary. Other boundaries - * are treated similar. - * For the 4th order schemes, the whole virtual boundary - * must be taken into account in the removal terms, - * because the algorithm sets - * velocities on this boundary! - * - * Compute the velocities on the virtual boundary to make interpolation - * possible for receivers. - */ - - if (bnd.top==1) { /* free surface at top */ - izp = bnd.surface[ixo]; -#pragma omp for private (ix, iz) - for (ix=mod.ioPx; ix<mod.iePx; ix++) { - iz = bnd.surface[ix]; - if ( izp==iz ) { - /* clear normal pressure */ - tzz[ix*n1+iz] = 0.0; - /* extra line of txz has to be copied */ -// txz[ix*n1+iz-1] = -txz[ix*n1+iz+2]; - /* This update to Vz might become unstable (2nd order scheme) */ -// vz[ix*n1+iz] = vz[ix*n1+iz+1] - (vx[(ix+1)*n1+iz]-vx[ix*n1+iz])* -// lam[ix*n1+iz]/l2m[ix*n1+iz]; - } - izp=iz; - } - - izp = bnd.surface[ixo]; -#pragma omp for private (ix, iz) - for (ix=mod.ioTx; ix<mod.ieTx; ix++) { - iz = bnd.surface[ix]; - if ( izp==iz ) { - /* assure that txz=0 on boundary by filling virtual boundary */ - txz[ix*n1+iz] = -txz[ix*n1+iz+1]; - /* extra line of txz has to be copied */ - txz[ix*n1+iz-1] = -txz[ix*n1+iz+2]; - } - izp=iz; - } - - /* calculate txx on top stress-free boundary */ - izp = bnd.surface[ixo]; -#pragma omp for private (ix, iz, dp, dvx) - for (ix=mod.ioPx; ix<mod.iePx; ix++) { - iz = bnd.surface[ix]; - if ( izp==iz ) { - dp = l2m[ix*n1+iz]-lam[ix*n1+iz]*lam[ix*n1+iz]/l2m[ix*n1+iz]; - dvx = c1*(vx[(ix+1)*n1+iz] - vx[(ix)*n1+iz]) + - c2*(vx[(ix+2)*n1+iz] - vx[(ix-1)*n1+iz]); - txx[ix*n1+iz] = -dvx*dp; - } - izp=iz; - } - - - /* if surface has also left or right edges */ - izp = bnd.surface[ixo]; -#pragma omp for private (ix, iz, dp, dvz) - for (ix=mod.ioPx+1; ix<mod.iePx; ix++) { - iz = bnd.surface[ix-1]; - if ( izp < iz ) { /* right boundary */ - /* clear normal pressure */ - txx[ix*n1+iz] = 0.0; - if ( (iz-izp) >= 2 ) { /* VR point */ - /* assure that txz=0 on boundary */ - txz[(ix+1)*n1+iz] = -txz[ix*n1+iz]; - txz[(ix+2)*n1+iz] = -txz[(ix-1)*n1+iz] ; - /* calculate tzz on right stress-free boundary */ - dvz = c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1]); - dp = l2m[ix*n1+iz]-lam[ix*n1+iz]*lam[ix*n1+iz]/l2m[ix*n1+iz]; - tzz[ix*n1+iz] = -dvz*dp; - } - else { - // if (izp) { /* IR point */ - // txz[ix*n1+iz] = -txz[ix*n1+iz+1] ; - // txz[ix*n1+iz-1] = -txz[ix*n1+iz+2]; - txz[(ix+1)*n1+iz] = -txz[ix*n1+iz]; - txz[(ix+2)*n1+iz] = -txz[(ix-1)*n1+iz] ; - tzz[ix*n1+iz] = 0.0; - // } - // else { /* OR point */ - txz[(ix-1)*n1+iz] = 0.0; - txz[(ix+1)*n1+iz] = -txz[ix*n1+iz]; - txz[(ix+2)*n1+iz] = -txz[(ix-1)*n1+iz] ; - vz[ix*n1+iz] = vz[ix*n1+iz+1] - (vx[(ix+1)*n1+iz]-vx[ix*n1+iz])* - lam[ix*n1+iz]/l2m[ix*n1+iz]; - // } - } - - } /* end if right */ - if ( izp > iz ) { /* left boundary */ - /* clear normal pressure */ - txx[ix*n1+iz] = 0.0; - /* assure that txz=0 on boundary */ - txz[(ix-1)*n1+iz] = -txz[ix*n1+iz]; - /* extra line of txz has to be copied */ - txz[(ix-2)*n1+iz] = -txz[(ix+1)*n1+iz] ; - /* calculate tzz on left stress-free boundary */ - dvz = c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1]); - dp = l2m[ix*n1+iz]-lam[ix*n1+iz]*lam[ix*n1+iz]/l2m[ix*n1+iz]; - tzz[ix*n1+iz] = -dvz*dp; - } /* end if left */ - izp=iz; - // izp=bnd.surface[MAX(ix-2,0)];; - } /* end ix loop */ - } - - - if (bnd.rig==1) { /* free surface at right */ - ix = mod.iePx; -#pragma omp for private (ix, iz) - for (iz=mod.ioPz; iz<mod.iePz; iz++) { - /* clear normal pressure */ - txx[(ix)*n1+iz] = 0.0; - } -#pragma omp for private (ix, iz) - for (iz=mod.ioTz; iz<mod.ieTz; iz++) { - /* assure that txz=0 on boundary by filling virtual boundary */ - txz[(ix+1)*n1+iz] = -txz[(ix)*n1+iz]; - /* extra line of txz has to be copied */ - txz[(ix+2)*n1+iz] = -txz[(ix-1)*n1+iz] ; - } - /* calculate tzz on right stress-free boundary */ -#pragma omp for private (iz) - for (iz=mod.ioPz; iz<mod.iePz; iz++) { - dvz = c1*(vz[(ix)*n1+iz+1] - vz[(ix)*n1+iz]) + - c2*(vz[(ix)*n1+iz+2] - vz[(ix)*n1+iz-1]); - dp = l2m[(ix)*n1+iz]-lam[(ix)*n1+iz]*lam[(ix)*n1+iz]/l2m[(ix)*n1+iz]; - tzz[(ix)*n1+iz] = -dvz*dp; - } - } - - - if (bnd.bot==1) { /* free surface at bottom */ - iz = mod.iePz; -#pragma omp for private (ix) - for (ix=mod.ioPx; ix<mod.iePx; ix++) { - /* clear normal pressure */ - tzz[ix*n1+iz] = 0.0; - } -#pragma omp for private (ix) - for (ix=mod.ioTx; ix<mod.ieTx; ix++) { - /* assure that txz=0 on boundary by filling virtual boundary */ - txz[ix*n1+iz+1] = -txz[ix*n1+iz]; - /* extra line of txz has to be copied */ - txz[ix*n1+iz+2] = -txz[ix*n1+iz-1]; - } - /* calculate txx on bottom stress-free boundary */ -#pragma omp for private (ix) - for (ix=mod.ioPx; ix<mod.iePx; ix++) { - dvx = c1*(vx[(ix+1)*n1+iz] - vx[ix*n1+iz]) + - c2*(vx[(ix+2)*n1+iz] - vx[(ix-1)*n1+iz]); - dp = l2m[ix*n1+iz]-lam[ix*n1+iz]*lam[ix*n1+iz]/l2m[ix*n1+iz]; - txx[ix*n1+iz] = -dvx*dp; - } - } - - if (bnd.lef==1) { /* free surface at left */ - ix = mod.ioPx; -#pragma omp for private (iz) - for (iz=mod.ioPz; iz<mod.iePz; iz++) { - /* clear normal pressure */ - txx[ix*n1+iz] = 0.0; - } -#pragma omp for private (iz) - for (iz=mod.ioTz; iz<mod.ieTz; iz++) { - /* assure that txz=0 on boundary by filling virtual boundary */ - txz[(ix)*n1+iz] = -txz[(ix+1)*n1+iz]; - /* extra line of txz has to be copied */ - txz[(ix-1)*n1+iz] = -txz[(ix+2)*n1+iz] ; - } - /* calculate tzz on left stress-free boundary */ -#pragma omp for private (iz) - for (iz=mod.ioPz; iz<mod.iePz; iz++) { - dvz = c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1]); - dp = l2m[ix*n1+iz]-lam[ix*n1+iz]*lam[ix*n1+iz]/l2m[ix*n1+iz]; - tzz[ix*n1+iz] = -dvz*dp; - } - } - - - } - - - - - return 0; -} diff --git a/fdelmodc/boundaries.c.ok4 b/fdelmodc/boundaries.c.ok4 deleted file mode 100644 index 62cd32d..0000000 --- a/fdelmodc/boundaries.c.ok4 +++ /dev/null @@ -1,1075 +0,0 @@ -#include<stdlib.h> -#include<stdio.h> -#include<math.h> -#include<assert.h> -#include"fdelmodc.h" - -float *exL, *exR, *eyT, *eyB; -int first=0; - -int boundariesP(modPar mod, bndPar bnd, float *vx, float *vz, float *tzz, float *txx, float *txz, float *rox, float *roz, float *l2m, float *lam, float *mul, int verbose) -{ -/********************************************************************* - - AUTHOR: - Jan Thorbecke (janth@xs4all.nl) - The Netherlands - -***********************************************************************/ - - float c1, c2; - float dp, dvx, dvz; - int ix, iz, ixs, izs, ibnd, ib, ibx, ibz; - int nx, nz, n1; - int is0, isrc; - int ixo, ixe, izo, ize; - - - c1 = 9.0/8.0; - c2 = -1.0/24.0; - nx = mod.nx; - nz = mod.nz; - n1 = mod.naz; - - ibnd = mod.iorder/2-1; - -/************************************************************/ -/* rigid boundary condition clears velocities on boundaries */ -/************************************************************/ - - if (bnd.top==3) { /* rigid surface at top */ -#pragma omp for private (ix, iz) nowait -#pragma ivdep - for (ix=1; ix<=nx; ix++) { - vx[ix*n1+ibnd] = 0.0; - vz[ix*n1+ibnd] = -vz[ix*n1+ibnd+1]; - if (mod.iorder >= 4) vz[ix*n1+ibnd-1] = -vz[ix*n1+ibnd+2]; - if (mod.iorder >= 6) vz[ix*n1+ibnd-2] = -vz[ix*n1+ibnd+3]; - } - } - if (bnd.rig==3) { /* rigid surface at right */ -#pragma omp for private (ix, iz) nowait -#pragma ivdep - for (iz=1; iz<=nz; iz++) { - vz[(nx+ibnd-1)*n1+iz] = 0.0; - vx[(nx+ibnd)*n1+iz] = -vx[(nx+ibnd-1)*n1+iz]; - if (mod.iorder == 4) vx[(nx+2)*n1+iz] = -vx[(nx-1)*n1+iz]; - if (mod.iorder == 6) { - vx[(nx+1)*n1+iz] = -vx[(nx)*n1+iz]; - vx[(nx+3)*n1+iz] = -vx[(nx-2)*n1+iz]; - } - } - } - if (bnd.bot==3) { /* rigid surface at bottom */ -#pragma omp for private (ix, iz) nowait -#pragma ivdep - for (ix=1; ix<=nx; ix++) { - vx[ix*n1+nz+ibnd-1] = 0.0; - vz[ix*n1+nz+ibnd] = -vz[ix*n1+nz+ibnd-1]; - if (mod.iorder == 4) vz[ix*n1+nz+2] = -vz[ix*n1+nz-1]; - if (mod.iorder == 6) { - vz[ix*n1+nz+1] = -vz[ix*n1+nz]; - vz[ix*n1+nz+3] = -vz[ix*n1+nz-2]; - } - } - } - if (bnd.lef==3) { /* rigid surface at left */ -#pragma omp for private (ix, iz) nowait -#pragma ivdep - for (iz=1; iz<=nz; iz++) { - vz[ibnd*n1+iz] = 0.0; - vx[ibnd*n1+iz] = -vx[(ibnd+1)*n1+iz]; - if (mod.iorder == 4) vx[0*n1+iz] = -vx[3*n1+iz]; - if (mod.iorder == 6) { - vx[1*n1+iz] = -vx[4*n1+iz]; - vx[0*n1+iz] = -vx[5*n1+iz]; - } - } - } - -/************************************************************/ -/* PML boundaries : only for acoustic 4th order scheme */ -/************************************************************/ - - if (bnd.top==2) { /* PML at top */ - } - -/************************************************************/ -/* Tapered boundaries for both elastic and acoustic schemes */ -/* compute all field values in tapered areas */ -/************************************************************/ - - /*********/ - /* Top */ - /*********/ - if (bnd.top==4) { - - if (mod.ischeme <= 2) { /* Acoustic scheme */ - - /* Vx field */ - ixo = mod.ioXx; - ixe = mod.ieXx; - izo = mod.ioXz-bnd.ntap; - ize = mod.ioXz; - - ib = (bnd.ntap+izo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - - vx[ix*n1+iz] *= bnd.tapx[ib-iz]; - } - } - /* right top corner */ - if (bnd.rig==4) { - ixo = mod.ieXx; - ixe = ixo+bnd.ntap; - ibz = (bnd.ntap+izo-1); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - - vx[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(ibz-iz)]; - } - } - } - /* left top corner */ - if (bnd.lef==4) { - ixo = mod.ioXx-bnd.ntap; - ixe = mod.ioXx; - ibz = (bnd.ntap+izo-1); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - - vx[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(ibz-iz)]; - } - } - } - - - /* Vz field */ - ixo = mod.ioZx; - ixe = mod.ieZx; - izo = mod.ioZz-bnd.ntap; - ize = mod.ioZz; - - ib = (bnd.ntap+izo-1); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - - vz[ix*n1+iz] *= bnd.tapz[ib-iz]; - } - } - /* right top corner */ - if (bnd.rig==4) { - ixo = mod.ieZx; - ixe = ixo+bnd.ntap; - ibz = (bnd.ntap+izo-1); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - - vz[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(ibz-iz)]; - } - } - } - /* left top corner */ - if (bnd.lef==4) { - ixo = mod.ioZx-bnd.ntap; - ixe = mod.ioZx; - ibz = (bnd.ntap+izo-1); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - - vz[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(ibz-iz)]; - } - } - } - - } - else { /* Elastic scheme */ - - /* Vx field */ - ixo = mod.ioXx; - ixe = mod.ieXx; - izo = mod.ioXz-bnd.ntap; - ize = mod.ioXz; - - ib = (bnd.ntap+izo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapx[ib-iz]; - } - } - /* right top corner */ - if (bnd.rig==4) { - ixo = mod.ieXx; - ixe = ixo+bnd.ntap; - ibz = (bnd.ntap+izo-1); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(ibz-iz)]; - } - } - } - /* left top corner */ - if (bnd.lef==4) { - ixo = mod.ioXx-bnd.ntap; - ixe = mod.ioXx; - ibz = (bnd.ntap+izo-1); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(ibz-iz)]; - } - } - } - - /* Vz field */ - ixo = mod.ioZx; - ixe = mod.ieZx; - izo = mod.ioZz-bnd.ntap; - ize = mod.ioZz; - - ib = (bnd.ntap+izo-1); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapz[ib-iz]; - } - } - /* right top corner */ - if (bnd.rig==4) { - ixo = mod.ieZx; - ixe = ixo+bnd.ntap; - ibz = (bnd.ntap+izo-1); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(ibz-iz)]; - } - } - } - /* left top corner */ - if (bnd.lef==4) { - ixo = mod.ioZx-bnd.ntap; - ixe = mod.ioZx; - ibz = (bnd.ntap+izo-1); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(ibz-iz)]; - } - } - } - - - } /* end elastic scheme */ - } - - /*********/ - /* Bottom */ - /*********/ - if (bnd.bot==4) { - - if (mod.ischeme <= 2) { /* Acoustic scheme */ - - /* Vx field */ - ixo = mod.ioXx; - ixe = mod.ieXx; - izo = mod.ieXz; - ize = mod.ieXz+bnd.ntap; - - ib = (ize-bnd.ntap); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - vx[ix*n1+iz] *= bnd.tapx[iz-ib]; - } - } - /* right bottom corner */ - if (bnd.rig==4) { - ixo = mod.ieXx; - ixe = ixo+bnd.ntap; - ibz = (izo); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - - vx[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(iz-ibz)]; - } - } - } - /* left bottom corner */ - if (bnd.lef==4) { - ixo = mod.ioXx-bnd.ntap; - ixe = mod.ioXx; - ibz = (izo); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - - vx[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(iz-ibz)]; - } - } - } - - - /* Vz field */ - ixo = mod.ioZx; - ixe = mod.ieZx; - izo = mod.ieZz; - ize = mod.ieZz+bnd.ntap; - - ib = (ize-bnd.ntap); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - vz[ix*n1+iz] *= bnd.tapz[iz-ib]; - } - } - /* right bottom corner */ - if (bnd.rig==4) { - ixo = mod.ieZx; - ixe = ixo+bnd.ntap; - ibz = (izo); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - - vz[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(iz-ibz)]; - } - } - } - /* left bottom corner */ - if (bnd.lef==4) { - ixo = mod.ioZx-bnd.ntap; - ixe = mod.ioZx; - ibz = (izo); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - - vz[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(iz-ibz)]; - } - } - } - - - } - else { /* Elastic scheme */ - - /* Vx field */ - ixo = mod.ioXx; - ixe = mod.ieXx; - izo = mod.ieXz; - ize = mod.ieXz+bnd.ntap; - - ib = (ize-bnd.ntap); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapx[iz-ib]; - } - } - /* right bottom corner */ - if (bnd.rig==4) { - ixo = mod.ieXx; - ixe = ixo+bnd.ntap; - ibz = (izo); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(iz-ibz)]; - } - } - } - /* left bottom corner */ - if (bnd.lef==4) { - - - ixo = mod.ioXx-bnd.ntap; - ixe = mod.ioXx; - ibz = (izo); - ibx = (bnd.ntap+ixo-1); - - -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(iz-ibz)]; - } - } - } - - /* Vz field */ - ixo = mod.ioZx; - ixe = mod.ieZx; - izo = mod.ieZz; - ize = mod.ieZz+bnd.ntap; - - ib = (ize-bnd.ntap); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapz[iz-ib]; - } - } - /* right bottom corner */ - if (bnd.rig==4) { - ixo = mod.ieZx; - ixe = ixo+bnd.ntap; - ibz = (izo); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(iz-ibz)]; - } - } - } - /* left bottom corner */ - if (bnd.lef==4) { - ixo = mod.ioZx-bnd.ntap; - ixe = mod.ioZx; - ibz = (izo); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(iz-ibz)]; - } - } - } - - - } /* end elastic scheme */ - - } - - /*********/ - /* Left */ - /*********/ - if (bnd.lef==4) { - - if (mod.ischeme <= 2) { /* Acoustic scheme */ - - /* Vx field */ - ixo = mod.ioXx-bnd.ntap; - ixe = mod.ioXx; - izo = mod.ioXz; - ize = mod.ieXz; - - ib = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - - vx[ix*n1+iz] *= bnd.tapx[ib-ix]; - } - } - - /* Vz field */ - ixo = mod.ioZx-bnd.ntap; - ixe = mod.ioZx; - izo = mod.ioZz; - ize = mod.ieZz; - - ib = (bnd.ntap+ixo-1); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - - vz[ix*n1+iz] *= bnd.tapz[ib-ix]; - } - } - - } - else { /* Elastic scheme */ - - /* Vx field */ - ixo = mod.ioXx-bnd.ntap; - ixe = mod.ioXx; - izo = mod.ioXz; - ize = mod.ieXz; - - ib = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapx[ib-ix]; - } - } - - /* Vz field */ - ixo = mod.ioZx-bnd.ntap; - ixe = mod.ioZx; - izo = mod.ioZz; - ize = mod.ieZz; - - ib = (bnd.ntap+ixo-1); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapz[ib-ix]; - } - } - } /* end elastic scheme */ - - } - - /*********/ - /* Right */ - /*********/ - if (bnd.rig==4) { - - if (mod.ischeme <= 2) { /* Acoustic scheme */ - - /* Vx field */ - ixo = mod.ieXx; - ixe = mod.ieXx+bnd.ntap; - izo = mod.ioXz; - ize = mod.ieXz; - - ib = (ixe-bnd.ntap); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - - vx[ix*n1+iz] *= bnd.tapx[ix-ib]; - } - } - - /* Vz field */ - ixo = mod.ieZx; - ixe = mod.ieZx+bnd.ntap; - izo = mod.ioZz; - ize = mod.ieZz; - - ib = (ixe-bnd.ntap); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - - vz[ix*n1+iz] *= bnd.tapz[ix-ib]; - } - } - - } - else { /* Elastic scheme */ - - /* Vx field */ - ixo = mod.ieXx; - ixe = mod.ieXx+bnd.ntap; - izo = mod.ioXz; - ize = mod.ieXz; - - ib = (ixe-bnd.ntap); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapx[ix-ib]; - } - } - - /* Vz field */ - ixo = mod.ieZx; - ixe = mod.ieZx+bnd.ntap; - izo = mod.ioZz; - ize = mod.ieZz; - ib = (ixe-bnd.ntap); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapz[ix-ib]; - } - } -/* - for (ix=ixo-5; ix<ixo+5; ix++) { - for (iz=0; iz<5; iz++) { - fprintf(stderr,"edge ix=%d iz=%d vz=%e roz=%e tzz=%e txz=%e txx=%e lam=%e l2m=%e\n", ix, iz, vz[ix*n1+iz], roz[ix*n1+iz], -tzz[ix*n1+iz], txz[ix*n1+iz], txx[ix*n1+iz], lam[ix*n1+iz], l2m[ix*n1+iz]); - } - } -*/ - - } /* end elastic scheme */ - - } - - - return 0; -} - -int boundariesV(modPar mod, bndPar bnd, float *vx, float *vz, float *tzz, float *txx, float *txz, float *rox, float *roz, float *l2m, float *lam, float *mul, int verbose) -{ -/********************************************************************* - - AUTHOR: - Jan Thorbecke (janth@xs4all.nl) - The Netherlands - -***********************************************************************/ - - float c1, c2; - float dp, dvx, dvz; - int ix, iz, ixs, izs, izp; - int n1; - int is0, isrc; - int ixo, ixe, izo, ize; - - c1 = 9.0/8.0; - c2 = -1.0/24.0; - n1 = mod.naz; - -/************************************************************/ -/* Tapered boundaries for both elastic and acoustic schemes */ -/* compute all field values in tapered areas */ -/************************************************************/ - - -/****************************************************************/ -/* Free surface: calculate free surface conditions for stresses */ -/****************************************************************/ - - - ixo = mod.ioPx; - ixe = mod.iePx; - izo = mod.ioPz; - ize = mod.iePz; - - if (mod.ischeme <= 2) { /* Acoustic scheme */ - - if (bnd.top==1) { /* free surface at top */ -#pragma omp for private (ix) nowait - for (ix=mod.ioPx; ix<mod.iePx; ix++) { - iz = bnd.surface[ix]; - tzz[ix*n1+iz] = 0.0; - } - } - if (bnd.rig==1) { /* free surface at right */ -#pragma omp for private (iz) nowait - for (iz=mod.ioPz; iz<mod.iePz; iz++) { - tzz[(mod.iePx-1)*n1+iz] = 0.0; - } - } - if (bnd.bot==1) { /* free surface at bottom */ -#pragma omp for private (ix) nowait - for (ix=mod.ioPx; ix<mod.iePx; ix++) { - tzz[ix*n1+mod.iePz-1] = 0.0; - } - } - if (bnd.lef==1) { /* free surface at left */ -#pragma omp for private (iz) nowait - for (iz=mod.ioPz; iz<mod.iePz; iz++) { - tzz[(mod.ioPx-1)*n1+iz] = 0.0; - } - } - } - else { /* Elastic scheme */ - - /* Free surface: calculate free surface conditions for stresses - * Conditions (for upper boundary): - * 1. Tzz = 0 - * 2. Txz = 0 - * 3. Txx: remove term with dVz/dz, computed in e2/e4 routines - * and add extra term with dVx/dx, - * corresponding to free-surface condition for Txx. - * In this way, dVz/dz is not needed in computing Txx - * on the upper stress free boundary. Other boundaries - * are treated similar. - * For the 4th order schemes, the whole virtual boundary - * must be taken into account in the removal terms, - * because the algorithm sets - * velocities on this boundary! - * - * Compute the velocities on the virtual boundary to make interpolation - * possible for receivers. - */ - - if (bnd.top==1) { /* free surface at top */ - izp = bnd.surface[ixo]; -#pragma omp for private (ix, iz) - for (ix=mod.ioPx; ix<mod.iePx; ix++) { - iz = bnd.surface[ix]; - if ( izp==iz ) { - /* clear normal pressure */ - tzz[ix*n1+iz] = 0.0; - - /* extra line of txz has to be copied */ -// txz[ix*n1+iz-1] = -txz[ix*n1+iz+2]; - /* This update to Vz might become unstable (2nd order scheme) */ -// vz[ix*n1+iz] = vz[ix*n1+iz+1] - (vx[(ix+1)*n1+iz]-vx[ix*n1+iz])* -// lam[ix*n1+iz]/l2m[ix*n1+iz]; - } - izp=iz; - } - - izp = bnd.surface[ixo]; -#pragma omp for private (ix, iz) - for (ix=mod.ioTx; ix<mod.ieTx; ix++) { - iz = bnd.surface[ix]; - if ( izp==iz ) { - /* assure that txz=0 on boundary by filling virtual boundary */ - txz[ix*n1+iz] = -txz[ix*n1+iz+1]; - /* extra line of txz has to be copied */ - txz[ix*n1+iz-1] = -txz[ix*n1+iz+2]; - } - izp=iz; - } - - /* calculate txx on top stress-free boundary */ - izp = bnd.surface[ixo]; -#pragma omp for private (ix, iz, dp, dvx) - for (ix=mod.ioPx; ix<mod.iePx; ix++) { - iz = bnd.surface[ix]; - if ( izp==iz ) { - if (l2m[ix*n1+iz]!=0.0) { - dp = l2m[ix*n1+iz]-lam[ix*n1+iz]*lam[ix*n1+iz]/l2m[ix*n1+iz]; - dvx = c1*(vx[(ix+1)*n1+iz] - vx[(ix)*n1+iz]) + - c2*(vx[(ix+2)*n1+iz] - vx[(ix-1)*n1+iz]); - txx[ix*n1+iz] = -dvx*dp; - } - } - izp=iz; - } - - /* if surface has also left or right edges */ - izp = bnd.surface[ixo]; -#pragma omp for private (ix, iz, dp, dvz) - for (ix=mod.ioPx+1; ix<mod.iePx; ix++) { - iz = bnd.surface[ix-1]; - if ( izp < iz ) { /* right boundary */ - /* clear normal pressure */ - txx[ix*n1+iz] = 0.0; - if ( (iz-izp) >= 2 ) { /* VR point */ - /* assure that txz=0 on boundary */ - txz[(ix+1)*n1+iz] = -txz[ix*n1+iz]; - txz[(ix+2)*n1+iz] = -txz[(ix-1)*n1+iz] ; - /* calculate tzz on right stress-free boundary */ - if (l2m[ix*n1+iz]!=0.0) { - dvz = c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1]); - dp = l2m[ix*n1+iz]-lam[ix*n1+iz]*lam[ix*n1+iz]/l2m[ix*n1+iz]; - tzz[ix*n1+iz] = -dvz*dp; - } - } - else { - // if (izp) { /* IR point */ - // txz[ix*n1+iz] = -txz[ix*n1+iz+1] ; - // txz[ix*n1+iz-1] = -txz[ix*n1+iz+2]; - txz[(ix+1)*n1+iz] = -txz[ix*n1+iz]; - txz[(ix+2)*n1+iz] = -txz[(ix-1)*n1+iz] ; - tzz[ix*n1+iz] = 0.0; - //} - // else { /* OR point */ - txz[(ix-1)*n1+iz] = 0.0; - txz[(ix+1)*n1+iz] = -txz[ix*n1+iz]; - txz[(ix+2)*n1+iz] = -txz[(ix-1)*n1+iz] ; - if (l2m[ix*n1+iz]!=0.0) { - vz[ix*n1+iz] = vz[ix*n1+iz+1] - (vx[(ix+1)*n1+iz]-vx[ix*n1+iz])* - lam[ix*n1+iz]/l2m[ix*n1+iz]; - } - // } - } - } /* end if right */ - if ( izp > iz ) { /* left boundary */ - /* clear normal pressure */ - txx[ix*n1+iz] = 0.0; - /* assure that txz=0 on boundary */ - txz[(ix-1)*n1+iz] = -txz[ix*n1+iz]; - /* extra line of txz has to be copied */ - txz[(ix-2)*n1+iz] = -txz[(ix+1)*n1+iz] ; - /* calculate tzz on left stress-free boundary */ - dvz = c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1]); - if (l2m[ix*n1+iz]!=0.0) { - dp = l2m[ix*n1+iz]-lam[ix*n1+iz]*lam[ix*n1+iz]/l2m[ix*n1+iz]; - tzz[ix*n1+iz] = -dvz*dp; - } - } /* end if left */ - izp=iz; -// fprintf(stderr,"V4 ix=2123 iz=1 tzz=%e\n", tzz[2123*n1+1]); - // izp=bnd.surface[MAX(ix-2,0)];; - } /* end ix loop */ - } - - - if (bnd.rig==1) { /* free surface at right */ - ix = mod.iePx; -#pragma omp for private (ix, iz) - for (iz=mod.ioPz; iz<mod.iePz; iz++) { - /* clear normal pressure */ - txx[(ix)*n1+iz] = 0.0; - } -#pragma omp for private (ix, iz) - for (iz=mod.ioTz; iz<mod.ieTz; iz++) { - /* assure that txz=0 on boundary by filling virtual boundary */ - txz[(ix+1)*n1+iz] = -txz[(ix)*n1+iz]; - /* extra line of txz has to be copied */ - txz[(ix+2)*n1+iz] = -txz[(ix-1)*n1+iz] ; - } - /* calculate tzz on right stress-free boundary */ -#pragma omp for private (iz) - for (iz=mod.ioPz; iz<mod.iePz; iz++) { - dvz = c1*(vz[(ix)*n1+iz+1] - vz[(ix)*n1+iz]) + - c2*(vz[(ix)*n1+iz+2] - vz[(ix)*n1+iz-1]); - if (l2m[ix*n1+iz]!=0.0) { - dp = l2m[(ix)*n1+iz]-lam[(ix)*n1+iz]*lam[(ix)*n1+iz]/l2m[(ix)*n1+iz]; - tzz[(ix)*n1+iz] = -dvz*dp; - } - } - } - - - if (bnd.bot==1) { /* free surface at bottom */ - iz = mod.iePz; -#pragma omp for private (ix) - for (ix=mod.ioPx; ix<mod.iePx; ix++) { - /* clear normal pressure */ - tzz[ix*n1+iz] = 0.0; - } -#pragma omp for private (ix) - for (ix=mod.ioTx; ix<mod.ieTx; ix++) { - /* assure that txz=0 on boundary by filling virtual boundary */ - txz[ix*n1+iz+1] = -txz[ix*n1+iz]; - /* extra line of txz has to be copied */ - txz[ix*n1+iz+2] = -txz[ix*n1+iz-1]; - } - /* calculate txx on bottom stress-free boundary */ -#pragma omp for private (ix) - for (ix=mod.ioPx; ix<mod.iePx; ix++) { - dvx = c1*(vx[(ix+1)*n1+iz] - vx[ix*n1+iz]) + - c2*(vx[(ix+2)*n1+iz] - vx[(ix-1)*n1+iz]); - if (l2m[ix*n1+iz]!=0.0) { - dp = l2m[ix*n1+iz]-lam[ix*n1+iz]*lam[ix*n1+iz]/l2m[ix*n1+iz]; - txx[ix*n1+iz] = -dvx*dp; - } - } - } - - if (bnd.lef==1) { /* free surface at left */ - ix = mod.ioPx; -#pragma omp for private (iz) - for (iz=mod.ioPz; iz<mod.iePz; iz++) { - /* clear normal pressure */ - txx[ix*n1+iz] = 0.0; - } -#pragma omp for private (iz) - for (iz=mod.ioTz; iz<mod.ieTz; iz++) { - /* assure that txz=0 on boundary by filling virtual boundary */ - txz[(ix)*n1+iz] = -txz[(ix+1)*n1+iz]; - /* extra line of txz has to be copied */ - txz[(ix-1)*n1+iz] = -txz[(ix+2)*n1+iz] ; - } - /* calculate tzz on left stress-free boundary */ -#pragma omp for private (iz) - for (iz=mod.ioPz; iz<mod.iePz; iz++) { - dvz = c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1]); - if (l2m[ix*n1+iz]!=0.0) { - dp = l2m[ix*n1+iz]-lam[ix*n1+iz]*lam[ix*n1+iz]/l2m[ix*n1+iz]; - tzz[ix*n1+iz] = -dvz*dp; - } - } - } - - - } - - return 0; -} diff --git a/fdelmodc/boundaries.c.try b/fdelmodc/boundaries.c.try deleted file mode 100644 index 9d3bc25..0000000 --- a/fdelmodc/boundaries.c.try +++ /dev/null @@ -1,1654 +0,0 @@ -#include<stdlib.h> -#include<stdio.h> -#include<math.h> -#include<assert.h> -#include"fdelmodc.h" - -void vmess(char *fmt, ...); - -int boundariesP(modPar mod, bndPar bnd, float *vx, float *vz, float *tzz, float *txx, float *txz, float *rox, float *roz, float *l2m, float *lam, float *mul, int itime, int verbose) -{ -/********************************************************************* - - AUTHOR: - Jan Thorbecke (janth@xs4all.nl) - The Netherlands - -***********************************************************************/ - - float c1, c2; - float dp, dvx, dvz; - int ix, iz, ixs, izs, ibnd, ib, ibx, ibz; - int nx, nz, n1, n2; - int is0, isrc; - int ixo, ixe, izo, ize; - int npml, ipml, pml; - float kappu, alphu, sigmax, R, a, m, fac, dx, dt; - float dpx, dpz, *p; - static float *Vxpml, *Vzpml, *sigmu, *RA; - static int allocated=0; - float Jx, Jz, rho, d; - - c1 = 9.0/8.0; - c2 = -1.0/24.0; - nx = mod.nx; - nz = mod.nz; - n1 = mod.naz; - n2 = mod.nax; - dx = mod.dx; - dt = mod.dt; - fac = dt/dx; - if ( (bnd.top==2) || (bnd.bot==2) || (bnd.lef==2) || (bnd.rig==2) ) pml=1; - else pml=0; - - ibnd = mod.iorder/2-1; - - if (mod.ischeme <= 2) { /* Acoustic scheme */ - if (bnd.top==1) { /* free surface at top */ -#pragma omp for private (ix) - for (ix=mod.ioPx; ix<mod.iePx; ix++) { - iz = bnd.surface[ix]; - //fprintf(stderr,"free iz=%d\n", iz); - vz[ix*n1+iz] = vz[ix*n1+iz+1]; - vz[ix*n1+iz-1] = vz[ix*n1+iz+2]; - } - } -// if (bnd.rig==1) { /* free surface at right */ -//#pragma omp for private (iz) -// for (iz=mod.ioPz; iz<mod.iePz; iz++) { -// tzz[(mod.iePx-1)*n1+iz] = 0.0; -// } -// } -// if (bnd.bot==1) { /* free surface at bottom */ -//#pragma omp for private (ix) -// for (ix=mod.ioPx; ix<mod.iePx; ix++) { -// tzz[ix*n1+mod.iePz-1] = 0.0; -// } -// } -// if (bnd.lef==1) { /* free surface at left */ -//#pragma omp for private (iz) -// for (iz=mod.ioPz; iz<mod.iePz; iz++) { -// tzz[(mod.ioPx-1)*n1+iz] = 0.0; -// } -// } - } - -/************************************************************/ -/* rigid boundary condition clears velocities on boundaries */ -/************************************************************/ - - if (bnd.top==3) { /* rigid surface at top */ -#pragma omp for private (ix, iz) -#pragma ivdep - for (ix=1; ix<=nx; ix++) { - vx[ix*n1+ibnd] = 0.0; - vz[ix*n1+ibnd] = -vz[ix*n1+ibnd+1]; - if (mod.iorder >= 4) vz[ix*n1+ibnd-1] = -vz[ix*n1+ibnd+2]; - if (mod.iorder >= 6) vz[ix*n1+ibnd-2] = -vz[ix*n1+ibnd+3]; - } - } - if (bnd.rig==3) { /* rigid surface at right */ -#pragma omp for private (ix, iz) -#pragma ivdep - for (iz=1; iz<=nz; iz++) { - vz[(nx+ibnd-1)*n1+iz] = 0.0; - vx[(nx+ibnd)*n1+iz] = -vx[(nx+ibnd-1)*n1+iz]; - if (mod.iorder == 4) vx[(nx+2)*n1+iz] = -vx[(nx-1)*n1+iz]; - if (mod.iorder == 6) { - vx[(nx+1)*n1+iz] = -vx[(nx)*n1+iz]; - vx[(nx+3)*n1+iz] = -vx[(nx-2)*n1+iz]; - } - } - } - if (bnd.bot==3) { /* rigid surface at bottom */ -#pragma omp for private (ix, iz) -#pragma ivdep - for (ix=1; ix<=nx; ix++) { - vx[ix*n1+nz+ibnd-1] = 0.0; - vz[ix*n1+nz+ibnd] = -vz[ix*n1+nz+ibnd-1]; - if (mod.iorder == 4) vz[ix*n1+nz+2] = -vz[ix*n1+nz-1]; - if (mod.iorder == 6) { - vz[ix*n1+nz+1] = -vz[ix*n1+nz]; - vz[ix*n1+nz+3] = -vz[ix*n1+nz-2]; - } - } - } - if (bnd.lef==3) { /* rigid surface at left */ -#pragma omp for private (ix, iz) -#pragma ivdep - for (iz=1; iz<=nz; iz++) { - vz[ibnd*n1+iz] = 0.0; - vx[ibnd*n1+iz] = -vx[(ibnd+1)*n1+iz]; - if (mod.iorder == 4) vx[0*n1+iz] = -vx[3*n1+iz]; - if (mod.iorder == 6) { - vx[1*n1+iz] = -vx[4*n1+iz]; - vx[0*n1+iz] = -vx[5*n1+iz]; - } - } - } - - - -/************************************************************/ -/* PML boundaries : only for acoustic 4th order scheme */ -/************************************************************/ - - npml=bnd.npml; /* lenght of pml in grid-points */ - if ( (npml != 0) && (itime==0) && pml) { -#pragma omp master -{ - if (allocated) { - free(Vxpml); - free(Vzpml); - free(sigmu); - free(RA); - } - Vxpml = (float *)calloc(2*n1*npml,sizeof(float)); - Vzpml = (float *)calloc(2*n2*npml,sizeof(float)); - sigmu = (float *)calloc(npml,sizeof(float)); - RA = (float *)calloc(npml,sizeof(float)); - allocated = 1; - - /* calculate sigmu and RA only once with fixed velocity Cp */ - m=bnd.m; /* scaling order */ - R=bnd.R; /* the theoretical reflection coefficient after discretization */ - kappu=1.0; /* auxiliary attenuation coefficient for small angles */ - alphu=0.0; /* auxiliary attenuation coefficient for low frequencies */ - d = (npml-1)*dx; /* depth of pml */ - /* sigmu attenuation factor representing the loss in the PML depends on the grid position in the PML */ - - sigmax = ((3.0*mod.cp_min)/(2.0*d))*log(1.0/R); - for (ib=0; ib<npml; ib++) { /* ib=0 interface between PML and interior */ - a = (float) (ib/(npml-1.0)); - sigmu[ib] = sigmax*pow(a,m); - RA[ib] = (1.0)/(1.0+0.5*dt*sigmu[ib]); - if (verbose>=3) vmess("PML: sigmax=%e cp=%e sigmu[%d]=%e %e", sigmax, mod.cp_min, ib, sigmu[ib], a); - } -} - } -#pragma omp barrier - - if (mod.ischeme == 1 && pml) { /* Acoustic scheme PML */ - p = tzz; /* Tzz array pointer points to P-field */ - - /* PML left Vx */ - if (bnd.lef == 2) { - /* PML left Vx-component */ -#pragma omp for private (ix, iz, dpx, Jx, ipml, rho) - for (ix=mod.ioXx-npml,ipml = npml-1; ix<mod.ioXx; ix++,ipml--) { -#pragma simd - for (iz=mod.ioXz; iz<mod.ieXz; iz++) { - rho = (fac/rox[ix*n1+iz]); - dpx = c1*(p[ix*n1+iz] - p[(ix-1)*n1+iz]) + - c2*(p[(ix+1)*n1+iz] - p[(ix-2)*n1+iz]); - Jx = RA[ipml]*(dpx - dt*Vxpml[iz*npml+ipml]); - Vxpml[iz*npml+ipml] += sigmu[ipml]*Jx; - vx[ix*n1+iz] -= rox[ix*n1+iz]*Jx; - } - } - /* PML Vz-component same as default kernel */ -#pragma omp for private (ix, iz) - for (ix=mod.ioZx-npml; ix<mod.ioZx; ix++) { -#pragma ivdep - for (iz=mod.ioZz; iz<mod.ieZz; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(p[ix*n1+iz] - p[ix*n1+iz-1]) + - c2*(p[ix*n1+iz+1] - p[ix*n1+iz-2])); - } - } - } - - /* PML corner left-top V */ - if (bnd.lef == 2 && bnd.top == 2) { - /* PML left Vx-component */ -#pragma omp for private (ix, iz, dpx, Jx, ipml, rho) - for (ix=mod.ioXx-npml,ipml = npml-1; ix<mod.ioXx; ix++,ipml--) { - //ipml = npml-1; - for (iz=mod.ioXz-npml; iz<mod.ioXz; iz++) { - rho = (fac/rox[ix*n1+iz]); - dpx = c1*(p[ix*n1+iz] - p[(ix-1)*n1+iz]) + - c2*(p[(ix+1)*n1+iz] - p[(ix-2)*n1+iz]); - Jx = RA[ipml]*(dpx - dt*Vxpml[iz*npml+ipml]); - Vxpml[iz*npml+ipml] += sigmu[ipml]*Jx; - vx[ix*n1+iz] -= rox[ix*n1+iz]*Jx; - // ipml--; - } - } - /* PML top Vz-component */ -#pragma omp for private (ix, iz, dpz, Jz, ipml, rho) - for (ix=mod.ioZx-npml; ix<mod.ioZx; ix++) { - //ipml = npml-1; - for (iz=mod.ioZz-npml,ipml = npml-1; iz<mod.ioZz; iz++,ipml--) { - rho = (fac/roz[ix*n1+iz]); - dpz = (c1*(p[ix*n1+iz] - p[ix*n1+iz-1]) + - c2*(p[ix*n1+iz+1] - p[ix*n1+iz-2])); - Jz = RA[ipml]*(dpz - dt*Vzpml[ix*npml+ipml]); - Vzpml[ix*npml+ipml] += sigmu[ipml]*Jz; - vz[ix*n1+iz] -= roz[ix*n1+iz]*Jz; - //ipml--; - } - } - } - - /* PML right V */ - if (bnd.rig == 2) { - /* PML right Vx-component */ -#pragma omp for private (ix, iz, dpx, Jx, ipml, rho) -//#pragma simd - for (iz=mod.ioXz; iz<mod.ieXz; iz++) { - for (ix=mod.ieXx,ipml=0; ix<mod.ieXx+npml; ix++,ipml++) { - rho = (fac/rox[ix*n1+iz]); - dpx = c1*(p[ix*n1+iz] - p[(ix-1)*n1+iz]) + - c2*(p[(ix+1)*n1+iz] - p[(ix-2)*n1+iz]); - Jx = RA[ipml]*(dpx - dt*Vxpml[n1*npml+iz*npml+ipml]); - Vxpml[n1*npml+iz*npml+ipml] += sigmu[ipml]*Jx; - vx[ix*n1+iz] -= rox[ix*n1+iz]*Jx; - //ipml++; - } - } - /* PML Vz-component same as default kernel */ -#pragma omp for private (ix, iz) - for (ix=mod.ieZx; ix<mod.ieZx+npml; ix++) { -#pragma ivdep - for (iz=mod.ioZz; iz<mod.ieZz; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(p[ix*n1+iz] - p[ix*n1+iz-1]) + - c2*(p[ix*n1+iz+1] - p[ix*n1+iz-2])); - } - } - } - - /* PML corner right-top V */ - if (bnd.rig == 2 && bnd.top == 2) { - /* PML right Vx-component */ -#pragma omp for private (ix, iz, dpx, Jx, ipml, rho) - for (iz=mod.ioXz-npml; iz<mod.ioXz; iz++) { - ipml = 0; - for (ix=mod.ieXx; ix<mod.ieXx+npml; ix++) { - rho = (fac/rox[ix*n1+iz]); - dpx = c1*(p[ix*n1+iz] - p[(ix-1)*n1+iz]) + - c2*(p[(ix+1)*n1+iz] - p[(ix-2)*n1+iz]); - Jx = RA[ipml]*(dpx - dt*Vxpml[n1*npml+iz*npml+ipml]); - Vxpml[n1*npml+iz*npml+ipml] += sigmu[ipml]*Jx; - vx[ix*n1+iz] -= rox[ix*n1+iz]*Jx; - ipml++; - } - } - /* PML top Vz-component */ -#pragma omp for private (ix, iz, dpz, Jz, ipml, rho) - for (ix=mod.ieZx; ix<mod.ieZx+npml; ix++) { - ipml = npml-1; - for (iz=mod.ioZz-npml; iz<mod.ioZz; iz++) { - rho = (fac/roz[ix*n1+iz]); - dpz = (c1*(p[ix*n1+iz] - p[ix*n1+iz-1]) + - c2*(p[ix*n1+iz+1] - p[ix*n1+iz-2])); - Jz = RA[ipml]*(dpz - dt*Vzpml[ix*npml+ipml]); - Vzpml[ix*npml+ipml] += sigmu[ipml]*Jz; - vz[ix*n1+iz] -= roz[ix*n1+iz]*Jz; - ipml--; - } - } - } - - /* PML top V */ - if (bnd.top == 2) { - /* PML top Vz-component */ -#pragma omp for private (ix, iz, dpz, Jz, ipml, rho) - for (ix=mod.ioZx; ix<mod.ieZx; ix++) { - ipml = npml-1; - for (iz=mod.ioZz-npml; iz<mod.ioZz; iz++) { - rho = (fac/roz[ix*n1+iz]); - dpz = (c1*(p[ix*n1+iz] - p[ix*n1+iz-1]) + - c2*(p[ix*n1+iz+1] - p[ix*n1+iz-2])); - Jz = RA[ipml]*(dpz - dt*Vzpml[ix*npml+ipml]); - Vzpml[ix*npml+ipml] += sigmu[ipml]*Jz; - vz[ix*n1+iz] -= roz[ix*n1+iz]*Jz; - ipml--; - } - } - /* PML top Vx-component same as default kernel */ -#pragma omp for private (ix, iz) - for (ix=mod.ioXx; ix<mod.ieXx; ix++) { -#pragma ivdep - for (iz=mod.ioXz-npml; iz<mod.ioXz; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(p[ix*n1+iz] - p[(ix-1)*n1+iz]) + - c2*(p[(ix+1)*n1+iz] - p[(ix-2)*n1+iz])); - } - } - } - - /* PML bottom V */ - if (bnd.bot == 2) { - /* PML bottom Vz-component */ -#pragma omp for private (ix, iz, dpz, Jz, ipml, rho) - for (ix=mod.ioZx; ix<mod.ieZx; ix++) { - ipml = 0; - for (iz=mod.ieZz; iz<mod.ieZz+npml; iz++) { - rho = (fac/roz[ix*n1+iz]); - dpz = (c1*(p[ix*n1+iz] - p[ix*n1+iz-1]) + - c2*(p[ix*n1+iz+1] - p[ix*n1+iz-2])); - Jz = RA[ipml]*(dpz - dt*Vzpml[n2*npml+ix*npml+ipml]); - Vzpml[n2*npml+ix*npml+ipml] += sigmu[ipml]*Jz; - vz[ix*n1+iz] -= roz[ix*n1+iz]*Jz; - ipml++; - } - } - /* PML bottom Vx-component same as default kernel */ -#pragma omp for private (ix, iz) - for (ix=mod.ioXx; ix<mod.ieXx; ix++) { - for (iz=mod.ieXz; iz<mod.ieXz+npml; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(p[ix*n1+iz] - p[(ix-1)*n1+iz]) + - c2*(p[(ix+1)*n1+iz] - p[(ix-2)*n1+iz])); - } - } - } - - /* PML corner left-bottom */ - if (bnd.bot == 2 && bnd.lef == 2) { - /* PML bottom Vz-component */ -#pragma omp for private (ix, iz, dpz, Jz, ipml, rho) - for (ix=mod.ioZx-npml; ix<mod.ioZx; ix++) { - ipml = 0; - for (iz=mod.ieZz; iz<mod.ieZz+npml; iz++) { - rho = (fac/roz[ix*n1+iz]); - dpz = (c1*(p[ix*n1+iz] - p[ix*n1+iz-1]) + - c2*(p[ix*n1+iz+1] - p[ix*n1+iz-2])); - Jz = RA[ipml]*(dpz - dt*Vzpml[n2*npml+ix*npml+ipml]); - Vzpml[n2*npml+ix*npml+ipml] += sigmu[ipml]*Jz; - vz[ix*n1+iz] -= roz[ix*n1+iz]*Jz; - ipml++; - } - } - /* PML left Vx-component */ -#pragma omp for private (ix, iz, dpx, Jx, ipml, rho) - for (iz=mod.ieXz; iz<mod.ieXz+npml; iz++) { - ipml = npml-1; - for (ix=mod.ioXx-npml; ix<mod.ioXx; ix++) { - rho = (fac/rox[ix*n1+iz]); - dpx = c1*(p[ix*n1+iz] - p[(ix-1)*n1+iz]) + - c2*(p[(ix+1)*n1+iz] - p[(ix-2)*n1+iz]); - Jx = RA[ipml]*(dpx - dt*Vxpml[iz*npml+ipml]); - Vxpml[iz*npml+ipml] += sigmu[ipml]*Jx; - vx[ix*n1+iz] -= rox[ix*n1+iz]*Jx; - ipml--; - } - } - } - - /* PML corner right-bottom */ - if (bnd.bot == 2 && bnd.rig == 2) { - /* PML bottom Vz-component */ -#pragma omp for private (ix, iz, dpz, Jz, ipml, rho) - for (ix=mod.ieZx; ix<mod.ieZx+npml; ix++) { - ipml = 0; - for (iz=mod.ieZz; iz<mod.ieZz+npml; iz++) { - rho = (fac/roz[ix*n1+iz]); - dpz = (c1*(p[ix*n1+iz] - p[ix*n1+iz-1]) + - c2*(p[ix*n1+iz+1] - p[ix*n1+iz-2])); - Jz = RA[ipml]*(dpz - dt*Vzpml[n2*npml+ix*npml+ipml]); - Vzpml[n2*npml+ix*npml+ipml] += sigmu[ipml]*Jz; - vz[ix*n1+iz] -= roz[ix*n1+iz]*Jz; - ipml++; - } - } - /* PML right Vx-component */ -#pragma omp for private (ix, iz, dpx, Jx, ipml, rho) - for (iz=mod.ieXz; iz<mod.ieXz+npml; iz++) { - ipml = 0; - for (ix=mod.ieXx; ix<mod.ieXx+npml; ix++) { - rho = (fac/rox[ix*n1+iz]); - dpx = c1*(p[ix*n1+iz] - p[(ix-1)*n1+iz]) + - c2*(p[(ix+1)*n1+iz] - p[(ix-2)*n1+iz]); - Jx = RA[ipml]*(dpx - dt*Vxpml[n1*npml+iz*npml+ipml]); - Vxpml[n1*npml+iz*npml+ipml] += sigmu[ipml]*Jx; - vx[ix*n1+iz] -= rox[ix*n1+iz]*Jx; - ipml++; - } - } - } - - } /* end acoustic PML */ - - - - -/************************************************************/ -/* Tapered boundaries for both elastic and acoustic schemes */ -/* compute all field values in tapered areas */ -/************************************************************/ - - /*********/ - /* Top */ - /*********/ - if (bnd.top==4) { - - if (mod.ischeme <= 2) { /* Acoustic scheme */ - - /* Vx field */ - ixo = mod.ioXx; - ixe = mod.ieXx; - izo = mod.ioXz-bnd.ntap; - ize = mod.ioXz; - - ib = (bnd.ntap+izo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - - vx[ix*n1+iz] *= bnd.tapx[ib-iz]; - } - } - /* right top corner */ - if (bnd.rig==4) { - ixo = mod.ieXx; - ixe = ixo+bnd.ntap; - ibz = (bnd.ntap+izo-1); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - - vx[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(ibz-iz)]; - } - } - } - /* left top corner */ - if (bnd.lef==4) { - ixo = mod.ioXx-bnd.ntap; - ixe = mod.ioXx; - ibz = (bnd.ntap+izo-1); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - - vx[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(ibz-iz)]; - } - } - } - - - /* Vz field */ - ixo = mod.ioZx; - ixe = mod.ieZx; - izo = mod.ioZz-bnd.ntap; - ize = mod.ioZz; - - ib = (bnd.ntap+izo-1); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - - vz[ix*n1+iz] *= bnd.tapz[ib-iz]; - } - } - /* right top corner */ - if (bnd.rig==4) { - ixo = mod.ieZx; - ixe = ixo+bnd.ntap; - ibz = (bnd.ntap+izo-1); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - - vz[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(ibz-iz)]; - } - } - } - /* left top corner */ - if (bnd.lef==4) { - ixo = mod.ioZx-bnd.ntap; - ixe = mod.ioZx; - ibz = (bnd.ntap+izo-1); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - - vz[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(ibz-iz)]; - } - } - } - - } - else { /* Elastic scheme */ - - /* Vx field */ - ixo = mod.ioXx; - ixe = mod.ieXx; - izo = mod.ioXz-bnd.ntap; - ize = mod.ioXz; - - ib = (bnd.ntap+izo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapx[ib-iz]; - } - } - /* right top corner */ - if (bnd.rig==4) { - ixo = mod.ieXx; - ixe = ixo+bnd.ntap; - ibz = (bnd.ntap+izo-1); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(ibz-iz)]; - } - } - } - /* left top corner */ - if (bnd.lef==4) { - ixo = mod.ioXx-bnd.ntap; - ixe = mod.ioXx; - ibz = (bnd.ntap+izo-1); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(ibz-iz)]; - } - } - } - - /* Vz field */ - ixo = mod.ioZx; - ixe = mod.ieZx; - izo = mod.ioZz-bnd.ntap; - ize = mod.ioZz; - - ib = (bnd.ntap+izo-1); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapz[ib-iz]; - } - } - /* right top corner */ - if (bnd.rig==4) { - ixo = mod.ieZx; - ixe = ixo+bnd.ntap; - ibz = (bnd.ntap+izo-1); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(ibz-iz)]; - } - } - } - /* left top corner */ - if (bnd.lef==4) { - ixo = mod.ioZx-bnd.ntap; - ixe = mod.ioZx; - ibz = (bnd.ntap+izo-1); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(ibz-iz)]; - } - } - } - - - } /* end elastic scheme */ - } - - /*********/ - /* Bottom */ - /*********/ - if (bnd.bot==4) { - - if (mod.ischeme <= 2) { /* Acoustic scheme */ - - /* Vx field */ - ixo = mod.ioXx; - ixe = mod.ieXx; - izo = mod.ieXz; - ize = mod.ieXz+bnd.ntap; - - ib = (ize-bnd.ntap); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - vx[ix*n1+iz] *= bnd.tapx[iz-ib]; - } - } - /* right bottom corner */ - if (bnd.rig==4) { - ixo = mod.ieXx; - ixe = ixo+bnd.ntap; - ibz = (izo); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - - vx[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(iz-ibz)]; - } - } - } - /* left bottom corner */ - if (bnd.lef==4) { - ixo = mod.ioXx-bnd.ntap; - ixe = mod.ioXx; - ibz = (izo); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - - vx[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(iz-ibz)]; - } - } - } - - - /* Vz field */ - ixo = mod.ioZx; - ixe = mod.ieZx; - izo = mod.ieZz; - ize = mod.ieZz+bnd.ntap; - - ib = (ize-bnd.ntap); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - vz[ix*n1+iz] *= bnd.tapz[iz-ib]; - } - } - /* right bottom corner */ - if (bnd.rig==4) { - ixo = mod.ieZx; - ixe = ixo+bnd.ntap; - ibz = (izo); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - - vz[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(iz-ibz)]; - } - } - } - /* left bottom corner */ - if (bnd.lef==4) { - ixo = mod.ioZx-bnd.ntap; - ixe = mod.ioZx; - ibz = (izo); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - - vz[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(iz-ibz)]; - } - } - } - - - } - else { /* Elastic scheme */ - - /* Vx field */ - ixo = mod.ioXx; - ixe = mod.ieXx; - izo = mod.ieXz; - ize = mod.ieXz+bnd.ntap; - - ib = (ize-bnd.ntap); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapx[iz-ib]; - } - } - /* right bottom corner */ - if (bnd.rig==4) { - ixo = mod.ieXx; - ixe = ixo+bnd.ntap; - ibz = (izo); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(iz-ibz)]; - } - } - } - /* left bottom corner */ - if (bnd.lef==4) { - - - ixo = mod.ioXx-bnd.ntap; - ixe = mod.ioXx; - ibz = (izo); - ibx = (bnd.ntap+ixo-1); - - -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(iz-ibz)]; - } - } - } - - /* Vz field */ - ixo = mod.ioZx; - ixe = mod.ieZx; - izo = mod.ieZz; - ize = mod.ieZz+bnd.ntap; - - ib = (ize-bnd.ntap); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapz[iz-ib]; - } - } - /* right bottom corner */ - if (bnd.rig==4) { - ixo = mod.ieZx; - ixe = ixo+bnd.ntap; - ibz = (izo); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(iz-ibz)]; - } - } - } - /* left bottom corner */ - if (bnd.lef==4) { - ixo = mod.ioZx-bnd.ntap; - ixe = mod.ioZx; - ibz = (izo); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(iz-ibz)]; - } - } - } - - - } /* end elastic scheme */ - - } - - /*********/ - /* Left */ - /*********/ - if (bnd.lef==4) { - - if (mod.ischeme <= 2) { /* Acoustic scheme */ - - /* Vx field */ - ixo = mod.ioXx-bnd.ntap; - ixe = mod.ioXx; - izo = mod.ioXz; - ize = mod.ieXz; - - ib = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - - vx[ix*n1+iz] *= bnd.tapx[ib-ix]; - } - } - - /* Vz field */ - ixo = mod.ioZx-bnd.ntap; - ixe = mod.ioZx; - izo = mod.ioZz; - ize = mod.ieZz; - - ib = (bnd.ntap+ixo-1); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - - vz[ix*n1+iz] *= bnd.tapz[ib-ix]; - } - } - - } - else { /* Elastic scheme */ - - /* Vx field */ - ixo = mod.ioXx-bnd.ntap; - ixe = mod.ioXx; - izo = mod.ioXz; - ize = mod.ieXz; - - ib = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapx[ib-ix]; - } - } - - /* Vz field */ - ixo = mod.ioZx-bnd.ntap; - ixe = mod.ioZx; - izo = mod.ioZz; - ize = mod.ieZz; - - ib = (bnd.ntap+ixo-1); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapz[ib-ix]; - } - } - } /* end elastic scheme */ - - } - - /*********/ - /* Right */ - /*********/ - if (bnd.rig==4) { - - if (mod.ischeme <= 2) { /* Acoustic scheme */ - - /* Vx field */ - ixo = mod.ieXx; - ixe = mod.ieXx+bnd.ntap; - izo = mod.ioXz; - ize = mod.ieXz; - - ib = (ixe-bnd.ntap); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - - vx[ix*n1+iz] *= bnd.tapx[ix-ib]; - } - } - - /* Vz field */ - ixo = mod.ieZx; - ixe = mod.ieZx+bnd.ntap; - izo = mod.ioZz; - ize = mod.ieZz; - - ib = (ixe-bnd.ntap); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - - vz[ix*n1+iz] *= bnd.tapz[ix-ib]; - } - } - - } - else { /* Elastic scheme */ - - /* Vx field */ - ixo = mod.ieXx; - ixe = mod.ieXx+bnd.ntap; - izo = mod.ioXz; - ize = mod.ieXz; - - ib = (ixe-bnd.ntap); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapx[ix-ib]; - } - } - - /* Vz field */ - ixo = mod.ieZx; - ixe = mod.ieZx+bnd.ntap; - izo = mod.ioZz; - ize = mod.ieZz; - ib = (ixe-bnd.ntap); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapz[ix-ib]; - } - } -/* - for (ix=ixo-5; ix<ixo+5; ix++) { - for (iz=0; iz<5; iz++) { - fprintf(stderr,"edge ix=%d iz=%d vz=%e roz=%e tzz=%e txz=%e txx=%e lam=%e l2m=%e\n", ix, iz, vz[ix*n1+iz], roz[ix*n1+iz], -tzz[ix*n1+iz], txz[ix*n1+iz], txx[ix*n1+iz], lam[ix*n1+iz], l2m[ix*n1+iz]); - } - } -*/ - - } /* end elastic scheme */ - - } - - - return 0; -} - -int boundariesV(modPar mod, bndPar bnd, float *vx, float *vz, float *tzz, float *txx, float *txz, float *rox, float *roz, float *l2m, float *lam, float *mul, int itime, int verbose) -{ -/********************************************************************* - - AUTHOR: - Jan Thorbecke (janth@xs4all.nl) - The Netherlands - -***********************************************************************/ - - float c1, c2; - float dp, dvx, dvz; - int ix, iz, ixs, izs, izp, ib; - int nx, nz, n1, n2; - int is0, isrc; - int ixo, ixe, izo, ize; - int npml, ipml, pml; - float kappu, alphu, sigmax, R, a, m, fac, dx, dt; - float *p; - static float *Pxpml, *Pzpml, *sigmu, *RA; - static int allocated=0; - float Jx, Jz, rho, d; - - c1 = 9.0/8.0; - c2 = -1.0/24.0; - nx = mod.nx; - nz = mod.nz; - n1 = mod.naz; - n2 = mod.nax; - dx = mod.dx; - dt = mod.dt; - fac = dt/dx; - if ( (bnd.top==2) || (bnd.bot==2) || (bnd.lef==2) || (bnd.rig==2) ) pml=1; - else pml=0; - -/************************************************************/ -/* PML boundaries for acoustic schemes */ -/* compute all field values in tapered areas */ -/************************************************************/ - - npml=bnd.npml; /* lenght of pml in grid-points */ - if ( (npml != 0) && (itime==0) && pml) { -#pragma omp master -{ - if (allocated) { - free(Pxpml); - free(Pzpml); - free(sigmu); - free(RA); - } - Pxpml = (float *)calloc(2*n1*npml,sizeof(float)); - Pzpml = (float *)calloc(2*n2*npml,sizeof(float)); - sigmu = (float *)calloc(npml,sizeof(float)); - RA = (float *)calloc(npml,sizeof(float)); - allocated = 1; - - /* calculate sigmu and RA only once with fixed velocity Cp */ - m=bnd.m; /* scaling order */ - R=bnd.R; /* the theoretical reflection coefficient after discretization */ - kappu = 1.0; /* auxiliary attenuation coefficient for small angles */ - alphu=0.0; /* auxiliary attenuation coefficient for low frequencies */ - d = (npml-1)*dx; /* depth of pml */ - /* sigmu attenuation factor representing the loss in the PML depends on the grid position in the PML */ - - sigmax = ((3.0*mod.cp_min)/(2.0*d))*log(1.0/R); - for (ib=0; ib<npml; ib++) { /* ib=0 interface between PML and interior */ - a = (float) (ib/(npml-1.0)); - sigmu[ib] = sigmax*pow(a,m); - RA[ib] = (1.0)/(1.0+0.5*dt*sigmu[ib]); -// if (verbose>=3) vmess("PML: sigmax=%e cp=%e sigmu[%d]=%e %e\n", sigmax, mod.cp_min, ib, sigmu[ib], a); - } -} - } - -#pragma omp barrier - if (mod.ischeme == 1 && pml) { /* Acoustic scheme PML's */ - p = tzz; /* Tzz array pointer points to P-field */ - - if (bnd.top==2) mod.ioPz += bnd.npml; - if (bnd.bot==2) mod.iePz -= bnd.npml; - if (bnd.lef==2) mod.ioPx += bnd.npml; - if (bnd.rig==2) mod.iePx -= bnd.npml; - - /* PML top P */ - if (bnd.top == 2) { - /* PML top P-Vz-component */ -#pragma omp for private (ix, iz, dvx, dvz, Jz, ipml) - for (ix=mod.ioPx; ix<mod.iePx; ix++) { - ipml = npml-1; - for (iz=mod.ioPz-npml; iz<mod.ioPz; iz++) { - dvx = c1*(vx[(ix+1)*n1+iz] - vx[ix*n1+iz]) + - c2*(vx[(ix+2)*n1+iz] - vx[(ix-1)*n1+iz]); - dvz = c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1]); - Jz = RA[ipml]*dvz - RA[ipml]*dt*Pzpml[ix*npml+ipml]; - Pzpml[ix*npml+ipml] += sigmu[ipml]*Jz; - p[ix*n1+iz] -= l2m[ix*n1+iz]*(Jz+dvx); - ipml--; - } - } - } - - /* PML left P */ - if (bnd.lef == 2) { - /* PML left P-Vx-component */ -#pragma omp for private (ix, iz, dvx, dvz, Jx, ipml) - for (iz=mod.ioPz; iz<mod.iePz; iz++) { - ipml = npml-1; - for (ix=mod.ioPx-npml; ix<mod.ioPx; ix++) { - dvx = c1*(vx[(ix+1)*n1+iz] - vx[ix*n1+iz]) + - c2*(vx[(ix+2)*n1+iz] - vx[(ix-1)*n1+iz]); - dvz = c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1]); - Jx = RA[ipml]*dvx - RA[ipml]*dt*Pxpml[iz*npml+ipml]; - Pxpml[iz*npml+ipml] += sigmu[ipml]*Jx; - p[ix*n1+iz] -= l2m[ix*n1+iz]*(Jx+dvz); - ipml--; - } - } - } - - /* PML corner left-top P */ - if (bnd.lef == 2 && bnd.top == 2) { - /* PML left P-Vx-component */ -#pragma omp for private (ix, iz, dvx, Jx, ipml) - for (iz=mod.ioPz-npml; iz<mod.ioPz; iz++) { - ipml = npml-1; - for (ix=mod.ioPx-npml; ix<mod.ioPx; ix++) { - dvx = c1*(vx[(ix+1)*n1+iz] - vx[ix*n1+iz]) + - c2*(vx[(ix+2)*n1+iz] - vx[(ix-1)*n1+iz]); - Jx = RA[ipml]*dvx - RA[ipml]*dt*Pxpml[iz*npml+ipml]; - Pxpml[iz*npml+ipml] += sigmu[ipml]*Jx; - p[ix*n1+iz] -= l2m[ix*n1+iz]*(Jx); - ipml--; - } - } - /* PML top P-Vz-component */ -#pragma omp for private (ix, iz, dvz, Jz, ipml) - for (ix=mod.ioPx-npml; ix<mod.ioPx; ix++) { - ipml = npml-1; - for (iz=mod.ioPz-npml; iz<mod.ioPz; iz++) { - dvz = c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1]); - Jz = RA[ipml]*dvz - RA[ipml]*dt*Pzpml[ix*npml+ipml]; - Pzpml[ix*npml+ipml] += sigmu[ipml]*Jz; - p[ix*n1+iz] -= l2m[ix*n1+iz]*(Jz); - ipml--; - } - } - } - - /* PML right P */ - if (bnd.rig == 2) { - /* PML right P Vx-component */ -#pragma omp for private (ix, iz, dvx, dvz, Jx, ipml) - for (iz=mod.ioPz; iz<mod.iePz; iz++) { - ipml = 0; - for (ix=mod.iePx; ix<mod.iePx+npml; ix++) { - dvx = c1*(vx[(ix+1)*n1+iz] - vx[ix*n1+iz]) + - c2*(vx[(ix+2)*n1+iz] - vx[(ix-1)*n1+iz]); - dvz = c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1]); - Jx = RA[ipml]*dvx - RA[ipml]*dt*Pxpml[n1*npml+iz*npml+ipml]; - Pxpml[n1*npml+iz*npml+ipml] += sigmu[ipml]*Jx; - p[ix*n1+iz] -= l2m[ix*n1+iz]*(Jx+dvz); - ipml++; - } - } - } - - /* PML corner right-top P */ - if (bnd.rig == 2 && bnd.top == 2) { - /* PML right P Vx-component */ -#pragma omp for private (ix, iz, dvx, Jx, ipml) - for (iz=mod.ioPz-npml; iz<mod.ioPz; iz++) { - ipml = 0; - for (ix=mod.iePx; ix<mod.iePx+npml; ix++) { - dvx = c1*(vx[(ix+1)*n1+iz] - vx[ix*n1+iz]) + - c2*(vx[(ix+2)*n1+iz] - vx[(ix-1)*n1+iz]); - Jx = RA[ipml]*dvx - RA[ipml]*dt*Pxpml[n1*npml+iz*npml+ipml]; - Pxpml[n1*npml+iz*npml+ipml] += sigmu[ipml]*Jx; - p[ix*n1+iz] -= l2m[ix*n1+iz]*(Jx); - ipml++; - } - } - /* PML top P-Vz-component */ -#pragma omp for private (ix, iz, dvz, Jz, ipml) - for (ix=mod.iePx; ix<mod.iePx+npml; ix++) { - ipml = npml-1; - for (iz=mod.ioPz-npml; iz<mod.ioPz; iz++) { - dvz = c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1]); - Jz = RA[ipml]*dvz - RA[ipml]*dt*Pzpml[ix*npml+ipml]; - Pzpml[ix*npml+ipml] += sigmu[ipml]*Jz; - p[ix*n1+iz] -= l2m[ix*n1+iz]*(Jz); - ipml--; - } - } - } - - /* PML bottom P */ - if (bnd.bot == 2) { - /* PML bottom P Vz-component */ -#pragma omp for private (ix, iz, dvx, dvz, Jz, ipml) - for (ix=mod.ioPx; ix<mod.iePx; ix++) { - ipml = 0; - for (iz=mod.iePz; iz<mod.iePz+npml; iz++) { - dvx = c1*(vx[(ix+1)*n1+iz] - vx[ix*n1+iz]) + - c2*(vx[(ix+2)*n1+iz] - vx[(ix-1)*n1+iz]); - dvz = c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1]); - Jz = RA[ipml]*dvz - RA[ipml]*dt*Pzpml[n2*npml+ix*npml+ipml]; - Pzpml[n2*npml+ix*npml+ipml] += sigmu[ipml]*Jz; - p[ix*n1+iz] -= l2m[ix*n1+iz]*(Jz+dvx); - ipml++; - } - } - } - - /* PML corner bottom-right P */ - if (bnd.bot == 2 && bnd.rig == 2) { - /* PML bottom P Vz-component */ -#pragma omp for private (ix, iz, dvz, Jz, ipml) - for (ix=mod.iePx; ix<mod.iePx+npml; ix++) { - ipml = 0; - for (iz=mod.iePz; iz<mod.iePz+npml; iz++) { - dvz = c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1]); - Jz = RA[ipml]*dvz - RA[ipml]*dt*Pzpml[n2*npml+ix*npml+ipml]; - Pzpml[n2*npml+ix*npml+ipml] += sigmu[ipml]*Jz; - p[ix*n1+iz] -= l2m[ix*n1+iz]*(Jz); - ipml++; - } - } - /* PML right P Vx-component */ -#pragma omp for private (ix, iz, dvx, Jx, ipml) - for (iz=mod.iePz; iz<mod.iePz+npml; iz++) { - ipml = 0; - for (ix=mod.iePx; ix<mod.iePx+npml; ix++) { - dvx = c1*(vx[(ix+1)*n1+iz] - vx[ix*n1+iz]) + - c2*(vx[(ix+2)*n1+iz] - vx[(ix-1)*n1+iz]); - Jx = RA[ipml]*dvx - RA[ipml]*dt*Pxpml[n1*npml+iz*npml+ipml]; - Pxpml[n1*npml+iz*npml+ipml] += sigmu[ipml]*Jx; - p[ix*n1+iz] -= l2m[ix*n1+iz]*(Jx); - //p[ix*n1+iz] -= l2m[ix*n1+iz]*(dvx); - ipml++; - } - } - } - - /* PML corner left-bottom P */ - if (bnd.bot == 2 && bnd.lef == 2) { - /* PML bottom P Vz-component */ -#pragma omp for private (ix, iz, dvz, Jz, ipml) - for (ix=mod.ioPx-npml; ix<mod.ioPx; ix++) { - ipml = 0; - for (iz=mod.iePz; iz<mod.iePz+npml; iz++) { - dvz = c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1]); - Jz = RA[ipml]*dvz - RA[ipml]*dt*Pzpml[n2*npml+ix*npml+ipml]; - Pzpml[n2*npml+ix*npml+ipml] += sigmu[ipml]*Jz; - p[ix*n1+iz] -= l2m[ix*n1+iz]*(Jz); - ipml++; - } - } - /* PML left P Vx-component */ -#pragma omp for private (ix, iz, dvx, Jx, ipml) - for (iz=mod.iePz; iz<mod.iePz+npml; iz++) { - ipml = npml-1; - for (ix=mod.ioPx-npml; ix<mod.ioPx; ix++) { - dvx = c1*(vx[(ix+1)*n1+iz] - vx[ix*n1+iz]) + - c2*(vx[(ix+2)*n1+iz] - vx[(ix-1)*n1+iz]); - Jx = RA[ipml]*dvx - RA[ipml]*dt*Pxpml[iz*npml+ipml]; - Pxpml[iz*npml+ipml] += sigmu[ipml]*Jx; - p[ix*n1+iz] -= l2m[ix*n1+iz]*(Jx); - ipml--; - } - } - } - if (bnd.top==2) mod.ioPz -= bnd.npml; - if (bnd.bot==2) mod.iePz += bnd.npml; - if (bnd.lef==2) mod.ioPx -= bnd.npml; - if (bnd.rig==2) mod.iePx += bnd.npml; - - } /* end acoustic PML */ - - - -/****************************************************************/ -/* Free surface: calculate free surface conditions for stresses */ -/****************************************************************/ - - - ixo = mod.ioPx; - ixe = mod.iePx; - izo = mod.ioPz; - ize = mod.iePz; - - if (mod.ischeme <= 2) { /* Acoustic scheme */ - if (bnd.top==1) { /* free surface at top */ -#pragma omp for private (ix) - for (ix=mod.ioPx; ix<mod.iePx; ix++) { - iz = bnd.surface[ix]; - tzz[ix*n1+iz] = 0.0; - } - } - if (bnd.rig==1) { /* free surface at right */ -#pragma omp for private (iz) - for (iz=mod.ioPz; iz<mod.iePz; iz++) { - tzz[(mod.iePx-1)*n1+iz] = 0.0; - } - } - if (bnd.bot==1) { /* free surface at bottom */ -#pragma omp for private (ix) - for (ix=mod.ioPx; ix<mod.iePx; ix++) { - tzz[ix*n1+mod.iePz-1] = 0.0; - } - } - if (bnd.lef==1) { /* free surface at left */ -#pragma omp for private (iz) - for (iz=mod.ioPz; iz<mod.iePz; iz++) { - tzz[(mod.ioPx-1)*n1+iz] = 0.0; - } - } - } - else { /* Elastic scheme */ -/* The implementation for a topgraphy surface is not yet correct */ - - /* Free surface: calculate free surface conditions for stresses - * Conditions (for upper boundary): - * 1. Tzz = 0 - * 2. Txz = 0 - * 3. Txx: remove term with dVz/dz, computed in e2/e4 routines - * and add extra term with dVx/dx, - * corresponding to free-surface condition for Txx. - * In this way, dVz/dz is not needed in computing Txx - * on the upper stress free boundary. Other boundaries - * are treated similar. - * For the 4th order schemes, the whole virtual boundary - * must be taken into account in the removal terms, - * because the algorithm sets - * velocities on this boundary! - * - * Compute the velocities on the virtual boundary to make interpolation - * possible for receivers. - */ - - if (bnd.top==1) { /* free surface at top */ - izp = bnd.surface[ixo]; -#pragma omp for private (ix, iz) - for (ix=mod.ioPx; ix<mod.iePx; ix++) { - iz = bnd.surface[ix]; - if ( izp==iz ) { - /* clear normal pressure */ - tzz[ix*n1+iz] = 0.0; - - /* This update to Vz might become unstable (2nd order scheme) */ -// vz[ix*n1+iz] = vz[ix*n1+iz+1] - (vx[(ix+1)*n1+iz]-vx[ix*n1+iz])* -// lam[ix*n1+iz]/l2m[ix*n1+iz]; - } - izp=iz; - } - - izp = bnd.surface[ixo]; -#pragma omp for private (ix, iz) - for (ix=mod.ioTx; ix<mod.ieTx; ix++) { - iz = bnd.surface[ix]; - if ( izp==iz ) { - /* assure that txz=0 on boundary by filling virtual boundary */ - txz[ix*n1+iz] = -txz[ix*n1+iz+1]; - /* extra line of txz has to be copied */ - txz[ix*n1+iz-1] = -txz[ix*n1+iz+2]; - } - izp=iz; - } - - /* calculate txx on top stress-free boundary */ - izp = bnd.surface[ixo]; -#pragma omp for private (ix, iz, dp, dvx) - for (ix=mod.ioPx; ix<mod.iePx; ix++) { - iz = bnd.surface[ix]; - if ( izp==iz ) { - if (l2m[ix*n1+iz]!=0.0) { - dp = l2m[ix*n1+iz]-lam[ix*n1+iz]*lam[ix*n1+iz]/l2m[ix*n1+iz]; - dvx = c1*(vx[(ix+1)*n1+iz] - vx[(ix)*n1+iz]) + - c2*(vx[(ix+2)*n1+iz] - vx[(ix-1)*n1+iz]); - txx[ix*n1+iz] = -dvx*dp; - } - } - izp=iz; - } - - /* if surface has also left or right edges */ - izp = bnd.surface[ixo]; -#pragma omp for private (ix, iz, dp, dvz) - for (ix=mod.ioPx+1; ix<mod.iePx; ix++) { - iz = bnd.surface[ix-1]; - if ( izp < iz ) { /* right boundary */ - /* clear normal pressure */ - txx[ix*n1+iz] = 0.0; - if ( (iz-izp) >= 2 ) { /* VR point */ - /* assure that txz=0 on boundary */ - txz[(ix+1)*n1+iz] = -txz[ix*n1+iz]; - txz[(ix+2)*n1+iz] = -txz[(ix-1)*n1+iz] ; - /* calculate tzz on right stress-free boundary */ - if (l2m[ix*n1+iz]!=0.0) { - dvz = c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1]); - dp = l2m[ix*n1+iz]-lam[ix*n1+iz]*lam[ix*n1+iz]/l2m[ix*n1+iz]; - tzz[ix*n1+iz] = -dvz*dp; - } - } - else { - if (izp) { /* IR point */ -// txz[ix*n1+iz] = -txz[ix*n1+iz+1] ; -// txz[ix*n1+iz-1] = -txz[ix*n1+iz+2]; -// txz[(ix+1)*n1+iz] = -txz[ix*n1+iz]; -// txz[(ix+2)*n1+iz] = -txz[(ix-1)*n1+iz] ; -// tzz[ix*n1+iz] = 0.0; - } - else { /* OR point */ -// txz[(ix-1)*n1+iz] = 0.0; -// txz[(ix+1)*n1+iz] = -txz[ix*n1+iz]; -// txz[(ix+2)*n1+iz] = -txz[(ix-1)*n1+iz] ; -// if (l2m[ix*n1+iz]!=0.0) { -// vz[ix*n1+iz] = vz[ix*n1+iz+1] - (vx[(ix+1)*n1+iz]-vx[ix*n1+iz])* -// lam[ix*n1+iz]/l2m[ix*n1+iz]; -// } - } - } - } /* end if right */ - if ( izp > iz ) { /* left boundary */ - /* clear normal pressure */ - txx[ix*n1+iz] = 0.0; - /* assure that txz=0 on boundary */ - txz[(ix-1)*n1+iz] = -txz[ix*n1+iz]; - /* extra line of txz has to be copied */ - txz[(ix-2)*n1+iz] = -txz[(ix+1)*n1+iz] ; - /* calculate tzz on left stress-free boundary */ - dvz = c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1]); - if (l2m[ix*n1+iz]!=0.0) { - dp = l2m[ix*n1+iz]-lam[ix*n1+iz]*lam[ix*n1+iz]/l2m[ix*n1+iz]; - tzz[ix*n1+iz] = -dvz*dp; - } - } /* end if left */ - izp=iz; -// fprintf(stderr,"V4 ix=2123 iz=1 tzz=%e\n", tzz[2123*n1+1]); - // izp=bnd.surface[MAX(ix-2,0)];; - } /* end ix loop */ - } - - - if (bnd.rig==1) { /* free surface at right */ - ix = mod.iePx; -#pragma omp for private (iz) - for (iz=mod.ioPz; iz<mod.iePz; iz++) { - /* clear normal pressure */ - txx[ix*n1+iz] = 0.0; - } -#pragma omp for private (iz) - for (iz=mod.ioTz; iz<mod.ieTz; iz++) { - /* assure that txz=0 on boundary by filling virtual boundary */ - txz[(ix+1)*n1+iz] = -txz[(ix)*n1+iz]; - /* extra line of txz has to be copied */ - txz[(ix+2)*n1+iz] = -txz[(ix-1)*n1+iz] ; - } - /* calculate tzz on right stress-free boundary */ -#pragma omp for private (iz) - for (iz=mod.ioPz; iz<mod.iePz; iz++) { - dvz = c1*(vz[(ix)*n1+iz+1] - vz[(ix)*n1+iz]) + - c2*(vz[(ix)*n1+iz+2] - vz[(ix)*n1+iz-1]); - if (l2m[ix*n1+iz]!=0.0) { - dp = l2m[(ix)*n1+iz]-lam[(ix)*n1+iz]*lam[(ix)*n1+iz]/l2m[(ix)*n1+iz]; - tzz[(ix)*n1+iz] = -dvz*dp; - } - } - } - - - if (bnd.bot==1) { /* free surface at bottom */ - iz = mod.iePz; -#pragma omp for private (ix) - for (ix=mod.ioPx; ix<mod.iePx; ix++) { - /* clear normal pressure */ - tzz[ix*n1+iz] = 0.0; - } -#pragma omp for private (ix) - for (ix=mod.ioTx; ix<mod.ieTx; ix++) { - /* assure that txz=0 on boundary by filling virtual boundary */ - txz[ix*n1+iz+1] = -txz[ix*n1+iz]; - /* extra line of txz has to be copied */ - txz[ix*n1+iz+2] = -txz[ix*n1+iz-1]; - } - /* calculate txx on bottom stress-free boundary */ -#pragma omp for private (ix) - for (ix=mod.ioPx; ix<mod.iePx; ix++) { - dvx = c1*(vx[(ix+1)*n1+iz] - vx[ix*n1+iz]) + - c2*(vx[(ix+2)*n1+iz] - vx[(ix-1)*n1+iz]); - if (l2m[ix*n1+iz]!=0.0) { - dp = l2m[ix*n1+iz]-lam[ix*n1+iz]*lam[ix*n1+iz]/l2m[ix*n1+iz]; - txx[ix*n1+iz] = -dvx*dp; - } - } - } - - if (bnd.lef==1) { /* free surface at left */ - ix = mod.ioPx; -#pragma omp for private (iz) - for (iz=mod.ioPz; iz<mod.iePz; iz++) { - /* clear normal pressure */ - txx[ix*n1+iz] = 0.0; - } -#pragma omp for private (iz) - for (iz=mod.ioTz; iz<mod.ieTz; iz++) { - /* assure that txz=0 on boundary by filling virtual boundary */ - txz[(ix)*n1+iz] = -txz[(ix+1)*n1+iz]; - /* extra line of txz has to be copied */ - txz[(ix-1)*n1+iz] = -txz[(ix+2)*n1+iz] ; - } - /* calculate tzz on left stress-free boundary */ -#pragma omp for private (iz) - for (iz=mod.ioPz; iz<mod.iePz; iz++) { - dvz = c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1]); - if (l2m[ix*n1+iz]!=0.0) { - dp = l2m[ix*n1+iz]-lam[ix*n1+iz]*lam[ix*n1+iz]/l2m[ix*n1+iz]; - tzz[ix*n1+iz] = -dvz*dp; - } - } - } - - - } - - return 0; -} diff --git a/fdelmodc/boundaries.c.try2 b/fdelmodc/boundaries.c.try2 deleted file mode 100644 index a6e2bd1..0000000 --- a/fdelmodc/boundaries.c.try2 +++ /dev/null @@ -1,1658 +0,0 @@ -#include<stdlib.h> -#include<stdio.h> -#include<math.h> -#include<assert.h> -#include"fdelmodc.h" - -void vmess(char *fmt, ...); - -int boundariesP(modPar mod, bndPar bnd, float *vx, float *vz, float *tzz, float *txx, float *txz, float *rox, float *roz, float *l2m, float *lam, float *mul, int itime, int verbose) -{ -/********************************************************************* - - AUTHOR: - Jan Thorbecke (janth@xs4all.nl) - The Netherlands - -***********************************************************************/ - - float c1, c2; - float dp, dvx, dvz; - int ix, iz, ixs, izs, ibnd, ib, ibx, ibz; - int nx, nz, n1, n2; - int is0, isrc; - int ixo, ixe, izo, ize; - int npml, ipml, pml; - float kappu, alphu, sigmax, R, a, m, fac, dx, dt; - float dpx, dpz, *p; - static float *Vxpml, *Vzpml, *sigmu, *RA; - static int allocated=0; - float Jx, Jz, rho, d; - - c1 = 9.0/8.0; - c2 = -1.0/24.0; - nx = mod.nx; - nz = mod.nz; - n1 = mod.naz; - n2 = mod.nax; - dx = mod.dx; - dt = mod.dt; - fac = dt/dx; - if ( (bnd.top==2) || (bnd.bot==2) || (bnd.lef==2) || (bnd.rig==2) ) pml=1; - else pml=0; - - ibnd = mod.iorder/2-1; - - if (mod.ischeme <= 2) { /* Acoustic scheme */ - if (bnd.top==1) { /* free surface at top */ -#pragma omp for private (ix) nowait - for (ix=mod.ioPx; ix<mod.iePx; ix++) { - iz = bnd.surface[ix]; - //fprintf(stderr,"free iz=%d\n", iz); - vz[ix*n1+iz] = vz[ix*n1+iz+1]; - vz[ix*n1+iz-1] = vz[ix*n1+iz+2]; - } - } -// if (bnd.rig==1) { /* free surface at right */ -//#pragma omp for private (iz) nowait -// for (iz=mod.ioPz; iz<mod.iePz; iz++) { -// tzz[(mod.iePx-1)*n1+iz] = 0.0; -// } -// } -// if (bnd.bot==1) { /* free surface at bottom */ -//#pragma omp for private (ix) nowait -// for (ix=mod.ioPx; ix<mod.iePx; ix++) { -// tzz[ix*n1+mod.iePz-1] = 0.0; -// } -// } -// if (bnd.lef==1) { /* free surface at left */ -//#pragma omp for private (iz) nowait -// for (iz=mod.ioPz; iz<mod.iePz; iz++) { -// tzz[(mod.ioPx-1)*n1+iz] = 0.0; -// } -// } - } - -/************************************************************/ -/* rigid boundary condition clears velocities on boundaries */ -/************************************************************/ - - if (bnd.top==3) { /* rigid surface at top */ -#pragma omp for private (ix, iz) nowait -#pragma ivdep - for (ix=1; ix<=nx; ix++) { - vx[ix*n1+ibnd] = 0.0; - vz[ix*n1+ibnd] = -vz[ix*n1+ibnd+1]; - if (mod.iorder >= 4) vz[ix*n1+ibnd-1] = -vz[ix*n1+ibnd+2]; - if (mod.iorder >= 6) vz[ix*n1+ibnd-2] = -vz[ix*n1+ibnd+3]; - } - } - if (bnd.rig==3) { /* rigid surface at right */ -#pragma omp for private (ix, iz) nowait -#pragma ivdep - for (iz=1; iz<=nz; iz++) { - vz[(nx+ibnd-1)*n1+iz] = 0.0; - vx[(nx+ibnd)*n1+iz] = -vx[(nx+ibnd-1)*n1+iz]; - if (mod.iorder == 4) vx[(nx+2)*n1+iz] = -vx[(nx-1)*n1+iz]; - if (mod.iorder == 6) { - vx[(nx+1)*n1+iz] = -vx[(nx)*n1+iz]; - vx[(nx+3)*n1+iz] = -vx[(nx-2)*n1+iz]; - } - } - } - if (bnd.bot==3) { /* rigid surface at bottom */ -#pragma omp for private (ix, iz) nowait -#pragma ivdep - for (ix=1; ix<=nx; ix++) { - vx[ix*n1+nz+ibnd-1] = 0.0; - vz[ix*n1+nz+ibnd] = -vz[ix*n1+nz+ibnd-1]; - if (mod.iorder == 4) vz[ix*n1+nz+2] = -vz[ix*n1+nz-1]; - if (mod.iorder == 6) { - vz[ix*n1+nz+1] = -vz[ix*n1+nz]; - vz[ix*n1+nz+3] = -vz[ix*n1+nz-2]; - } - } - } - if (bnd.lef==3) { /* rigid surface at left */ -#pragma omp for private (ix, iz) nowait -#pragma ivdep - for (iz=1; iz<=nz; iz++) { - vz[ibnd*n1+iz] = 0.0; - vx[ibnd*n1+iz] = -vx[(ibnd+1)*n1+iz]; - if (mod.iorder == 4) vx[0*n1+iz] = -vx[3*n1+iz]; - if (mod.iorder == 6) { - vx[1*n1+iz] = -vx[4*n1+iz]; - vx[0*n1+iz] = -vx[5*n1+iz]; - } - } - } - - - -/************************************************************/ -/* PML boundaries : only for acoustic 4th order scheme */ -/************************************************************/ - - npml=bnd.npml; /* lenght of pml in grid-points */ - if ( (npml != 0) && (itime==0) && pml) { -#pragma omp master -{ - if (allocated) { - free(Vxpml); - free(Vzpml); - free(sigmu); - free(RA); - } - Vxpml = (float *)calloc(2*n1*npml,sizeof(float)); - Vzpml = (float *)calloc(2*n2*npml,sizeof(float)); - sigmu = (float *)calloc(npml,sizeof(float)); - RA = (float *)calloc(npml,sizeof(float)); - allocated = 1; - - /* calculate sigmu and RA only once with fixed velocity Cp */ - m=bnd.m; /* scaling order */ - R=bnd.R; /* the theoretical reflection coefficient after discretization */ - kappu=1.0; /* auxiliary attenuation coefficient for small angles */ - alphu=0.0; /* auxiliary attenuation coefficient for low frequencies */ - d = (npml-1)*dx; /* depth of pml */ - /* sigmu attenuation factor representing the loss in the PML depends on the grid position in the PML */ - - sigmax = ((3.0*mod.cp_min)/(2.0*d))*log(1.0/R); - for (ib=0; ib<npml; ib++) { /* ib=0 interface between PML and interior */ - a = (float) (ib/(npml-1.0)); - sigmu[ib] = sigmax*pow(a,m); - RA[ib] = (1.0)/(1.0+0.5*dt*sigmu[ib]); - if (verbose>=3) vmess("PML: sigmax=%e cp=%e sigmu[%d]=%e %e", sigmax, mod.cp_min, ib, sigmu[ib], a); - } -} - } -#pragma omp barrier - - if (mod.ischeme == 1 && pml) { /* Acoustic scheme PML */ - p = tzz; /* Tzz array pointer points to P-field */ - - /* PML left Vx */ - if (bnd.lef == 2) { - /* PML left Vx-component */ -// for (ix=mod.ioXx-npml,ipml=npml-1; ix<mod.ioXx; ix++,ipml--) { -// ipml = npml-1; -#pragma omp for private (ix, iz, dpx, Jx, ipml, rho) - for (iz=mod.ioXz; iz<mod.ieXz; iz++) { -#pragma simd - for (ix=mod.ioXx-npml,ipml=npml-1; ix<mod.ioXx; ix++,ipml--) { -// for (ix=mod.ioXx-npml; ix<mod.ioXx; ix++) { - rho = (fac/rox[ix*n1+iz]); - dpx = c1*(p[ix*n1+iz] - p[(ix-1)*n1+iz]) + - c2*(p[(ix+1)*n1+iz] - p[(ix-2)*n1+iz]); - Jx = RA[ipml]*(dpx - dt*Vxpml[iz*npml+ipml]); - Vxpml[iz*npml+ipml] += sigmu[ipml]*Jx; - vx[ix*n1+iz] -= rox[ix*n1+iz]*Jx; - // ipml--; - } - } - /* PML Vz-component same as default kernel */ -#pragma omp for private (ix, iz) - for (ix=mod.ioZx-npml; ix<mod.ioZx; ix++) { -#pragma ivdep - for (iz=mod.ioZz; iz<mod.ieZz; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(p[ix*n1+iz] - p[ix*n1+iz-1]) + - c2*(p[ix*n1+iz+1] - p[ix*n1+iz-2])); - } - } - } - - /* PML corner left-top V */ - if (bnd.lef == 2 && bnd.top == 2) { - /* PML left Vx-component */ -#pragma omp for private (ix, iz, dpx, Jx, ipml, rho) - for (iz=mod.ioXz-npml; iz<mod.ioXz; iz++) { - ipml = npml-1; - for (ix=mod.ioXx-npml; ix<mod.ioXx; ix++) { - rho = (fac/rox[ix*n1+iz]); - dpx = c1*(p[ix*n1+iz] - p[(ix-1)*n1+iz]) + - c2*(p[(ix+1)*n1+iz] - p[(ix-2)*n1+iz]); - Jx = RA[ipml]*(dpx - dt*Vxpml[iz*npml+ipml]); - Vxpml[iz*npml+ipml] += sigmu[ipml]*Jx; - vx[ix*n1+iz] -= rox[ix*n1+iz]*Jx; - ipml--; - } - } - /* PML top Vz-component */ -#pragma omp for private (ix, iz, dpz, Jz, ipml, rho) - for (ix=mod.ioZx-npml; ix<mod.ioZx; ix++) { - ipml = npml-1; - for (iz=mod.ioZz-npml; iz<mod.ioZz; iz++) { - rho = (fac/roz[ix*n1+iz]); - dpz = (c1*(p[ix*n1+iz] - p[ix*n1+iz-1]) + - c2*(p[ix*n1+iz+1] - p[ix*n1+iz-2])); - Jz = RA[ipml]*(dpz - dt*Vzpml[ix*npml+ipml]); - Vzpml[ix*npml+ipml] += sigmu[ipml]*Jz; - vz[ix*n1+iz] -= roz[ix*n1+iz]*Jz; - ipml--; - } - } - } - - /* PML right V */ - if (bnd.rig == 2) { - /* PML right Vx-component */ -#pragma omp for private (ix, iz, dpx, Jx, ipml, rho) - for (iz=mod.ioXz; iz<mod.ieXz; iz++) { - ipml = 0; - for (ix=mod.ieXx; ix<mod.ieXx+npml; ix++) { - rho = (fac/rox[ix*n1+iz]); - dpx = c1*(p[ix*n1+iz] - p[(ix-1)*n1+iz]) + - c2*(p[(ix+1)*n1+iz] - p[(ix-2)*n1+iz]); - Jx = RA[ipml]*(dpx - dt*Vxpml[n1*npml+iz*npml+ipml]); - Vxpml[n1*npml+iz*npml+ipml] += sigmu[ipml]*Jx; - vx[ix*n1+iz] -= rox[ix*n1+iz]*Jx; - ipml++; - } - } - /* PML Vz-component same as default kernel */ -#pragma omp for private (ix, iz) - for (ix=mod.ieZx; ix<mod.ieZx+npml; ix++) { -#pragma ivdep - for (iz=mod.ioZz; iz<mod.ieZz; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(p[ix*n1+iz] - p[ix*n1+iz-1]) + - c2*(p[ix*n1+iz+1] - p[ix*n1+iz-2])); - } - } - } - - /* PML corner right-top V */ - if (bnd.rig == 2 && bnd.top == 2) { - /* PML right Vx-component */ -#pragma omp for private (ix, iz, dpx, Jx, ipml, rho) - for (iz=mod.ioXz-npml; iz<mod.ioXz; iz++) { - ipml = 0; - for (ix=mod.ieXx; ix<mod.ieXx+npml; ix++) { - rho = (fac/rox[ix*n1+iz]); - dpx = c1*(p[ix*n1+iz] - p[(ix-1)*n1+iz]) + - c2*(p[(ix+1)*n1+iz] - p[(ix-2)*n1+iz]); - Jx = RA[ipml]*(dpx - dt*Vxpml[n1*npml+iz*npml+ipml]); - Vxpml[n1*npml+iz*npml+ipml] += sigmu[ipml]*Jx; - vx[ix*n1+iz] -= rox[ix*n1+iz]*Jx; - ipml++; - } - } - /* PML top Vz-component */ -#pragma omp for private (ix, iz, dpz, Jz, ipml, rho) - for (ix=mod.ieZx; ix<mod.ieZx+npml; ix++) { - ipml = npml-1; - for (iz=mod.ioZz-npml; iz<mod.ioZz; iz++) { - rho = (fac/roz[ix*n1+iz]); - dpz = (c1*(p[ix*n1+iz] - p[ix*n1+iz-1]) + - c2*(p[ix*n1+iz+1] - p[ix*n1+iz-2])); - Jz = RA[ipml]*(dpz - dt*Vzpml[ix*npml+ipml]); - Vzpml[ix*npml+ipml] += sigmu[ipml]*Jz; - vz[ix*n1+iz] -= roz[ix*n1+iz]*Jz; - ipml--; - } - } - } - - /* PML top V */ - if (bnd.top == 2) { - /* PML top Vz-component */ -#pragma omp for private (ix, iz, dpz, Jz, ipml, rho) - for (ix=mod.ioZx; ix<mod.ieZx; ix++) { - ipml = npml-1; - for (iz=mod.ioZz-npml; iz<mod.ioZz; iz++) { - rho = (fac/roz[ix*n1+iz]); - dpz = (c1*(p[ix*n1+iz] - p[ix*n1+iz-1]) + - c2*(p[ix*n1+iz+1] - p[ix*n1+iz-2])); - Jz = RA[ipml]*(dpz - dt*Vzpml[ix*npml+ipml]); - Vzpml[ix*npml+ipml] += sigmu[ipml]*Jz; - vz[ix*n1+iz] -= roz[ix*n1+iz]*Jz; - ipml--; - } - } - /* PML top Vx-component same as default kernel */ -#pragma omp for private (ix, iz) - for (ix=mod.ioXx; ix<mod.ieXx; ix++) { -#pragma ivdep - for (iz=mod.ioXz-npml; iz<mod.ioXz; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(p[ix*n1+iz] - p[(ix-1)*n1+iz]) + - c2*(p[(ix+1)*n1+iz] - p[(ix-2)*n1+iz])); - } - } - } - - /* PML bottom V */ - if (bnd.bot == 2) { - /* PML bottom Vz-component */ -#pragma omp for private (ix, iz, dpz, Jz, ipml, rho) - for (ix=mod.ioZx; ix<mod.ieZx; ix++) { - ipml = 0; - for (iz=mod.ieZz; iz<mod.ieZz+npml; iz++) { - rho = (fac/roz[ix*n1+iz]); - dpz = (c1*(p[ix*n1+iz] - p[ix*n1+iz-1]) + - c2*(p[ix*n1+iz+1] - p[ix*n1+iz-2])); - Jz = RA[ipml]*(dpz - dt*Vzpml[n2*npml+ix*npml+ipml]); - Vzpml[n2*npml+ix*npml+ipml] += sigmu[ipml]*Jz; - vz[ix*n1+iz] -= roz[ix*n1+iz]*Jz; - ipml++; - } - } - /* PML bottom Vx-component same as default kernel */ -#pragma omp for private (ix, iz) - for (ix=mod.ioXx; ix<mod.ieXx; ix++) { - for (iz=mod.ieXz; iz<mod.ieXz+npml; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(p[ix*n1+iz] - p[(ix-1)*n1+iz]) + - c2*(p[(ix+1)*n1+iz] - p[(ix-2)*n1+iz])); - } - } - } - - /* PML corner left-bottom */ - if (bnd.bot == 2 && bnd.lef == 2) { - /* PML bottom Vz-component */ -#pragma omp for private (ix, iz, dpz, Jz, ipml, rho) - for (ix=mod.ioZx-npml; ix<mod.ioZx; ix++) { - ipml = 0; - for (iz=mod.ieZz; iz<mod.ieZz+npml; iz++) { - rho = (fac/roz[ix*n1+iz]); - dpz = (c1*(p[ix*n1+iz] - p[ix*n1+iz-1]) + - c2*(p[ix*n1+iz+1] - p[ix*n1+iz-2])); - Jz = RA[ipml]*(dpz - dt*Vzpml[n2*npml+ix*npml+ipml]); - Vzpml[n2*npml+ix*npml+ipml] += sigmu[ipml]*Jz; - vz[ix*n1+iz] -= roz[ix*n1+iz]*Jz; - ipml++; - } - } - /* PML left Vx-component */ -#pragma omp for private (ix, iz, dpx, Jx, ipml, rho) - for (iz=mod.ieXz; iz<mod.ieXz+npml; iz++) { - ipml = npml-1; - for (ix=mod.ioXx-npml; ix<mod.ioXx; ix++) { - rho = (fac/rox[ix*n1+iz]); - dpx = c1*(p[ix*n1+iz] - p[(ix-1)*n1+iz]) + - c2*(p[(ix+1)*n1+iz] - p[(ix-2)*n1+iz]); - Jx = RA[ipml]*(dpx - dt*Vxpml[iz*npml+ipml]); - Vxpml[iz*npml+ipml] += sigmu[ipml]*Jx; - vx[ix*n1+iz] -= rox[ix*n1+iz]*Jx; - ipml--; - } - } - } - - /* PML corner right-bottom */ - if (bnd.bot == 2 && bnd.rig == 2) { - /* PML bottom Vz-component */ -#pragma omp for private (ix, iz, dpz, Jz, ipml, rho) - for (ix=mod.ieZx; ix<mod.ieZx+npml; ix++) { - ipml = 0; - for (iz=mod.ieZz; iz<mod.ieZz+npml; iz++) { - rho = (fac/roz[ix*n1+iz]); - dpz = (c1*(p[ix*n1+iz] - p[ix*n1+iz-1]) + - c2*(p[ix*n1+iz+1] - p[ix*n1+iz-2])); - Jz = RA[ipml]*(dpz - dt*Vzpml[n2*npml+ix*npml+ipml]); - Vzpml[n2*npml+ix*npml+ipml] += sigmu[ipml]*Jz; - vz[ix*n1+iz] -= roz[ix*n1+iz]*Jz; - ipml++; - } - } - /* PML right Vx-component */ -#pragma omp for private (ix, iz, dpx, Jx, ipml, rho) - for (iz=mod.ieXz; iz<mod.ieXz+npml; iz++) { - ipml = 0; - for (ix=mod.ieXx; ix<mod.ieXx+npml; ix++) { - rho = (fac/rox[ix*n1+iz]); - dpx = c1*(p[ix*n1+iz] - p[(ix-1)*n1+iz]) + - c2*(p[(ix+1)*n1+iz] - p[(ix-2)*n1+iz]); - Jx = RA[ipml]*(dpx - dt*Vxpml[n1*npml+iz*npml+ipml]); - Vxpml[n1*npml+iz*npml+ipml] += sigmu[ipml]*Jx; - vx[ix*n1+iz] -= rox[ix*n1+iz]*Jx; - ipml++; - } - } - } - - } /* end acoustic PML */ - - - - -/************************************************************/ -/* Tapered boundaries for both elastic and acoustic schemes */ -/* compute all field values in tapered areas */ -/************************************************************/ - - /*********/ - /* Top */ - /*********/ - if (bnd.top==4) { - - if (mod.ischeme <= 2) { /* Acoustic scheme */ - - /* Vx field */ - ixo = mod.ioXx; - ixe = mod.ieXx; - izo = mod.ioXz-bnd.ntap; - ize = mod.ioXz; - - ib = (bnd.ntap+izo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - - vx[ix*n1+iz] *= bnd.tapx[ib-iz]; - } - } - /* right top corner */ - if (bnd.rig==4) { - ixo = mod.ieXx; - ixe = ixo+bnd.ntap; - ibz = (bnd.ntap+izo-1); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - - vx[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(ibz-iz)]; - } - } - } - /* left top corner */ - if (bnd.lef==4) { - ixo = mod.ioXx-bnd.ntap; - ixe = mod.ioXx; - ibz = (bnd.ntap+izo-1); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - - vx[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(ibz-iz)]; - } - } - } - - - /* Vz field */ - ixo = mod.ioZx; - ixe = mod.ieZx; - izo = mod.ioZz-bnd.ntap; - ize = mod.ioZz; - - ib = (bnd.ntap+izo-1); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - - vz[ix*n1+iz] *= bnd.tapz[ib-iz]; - } - } - /* right top corner */ - if (bnd.rig==4) { - ixo = mod.ieZx; - ixe = ixo+bnd.ntap; - ibz = (bnd.ntap+izo-1); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - - vz[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(ibz-iz)]; - } - } - } - /* left top corner */ - if (bnd.lef==4) { - ixo = mod.ioZx-bnd.ntap; - ixe = mod.ioZx; - ibz = (bnd.ntap+izo-1); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - - vz[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(ibz-iz)]; - } - } - } - - } - else { /* Elastic scheme */ - - /* Vx field */ - ixo = mod.ioXx; - ixe = mod.ieXx; - izo = mod.ioXz-bnd.ntap; - ize = mod.ioXz; - - ib = (bnd.ntap+izo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapx[ib-iz]; - } - } - /* right top corner */ - if (bnd.rig==4) { - ixo = mod.ieXx; - ixe = ixo+bnd.ntap; - ibz = (bnd.ntap+izo-1); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(ibz-iz)]; - } - } - } - /* left top corner */ - if (bnd.lef==4) { - ixo = mod.ioXx-bnd.ntap; - ixe = mod.ioXx; - ibz = (bnd.ntap+izo-1); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(ibz-iz)]; - } - } - } - - /* Vz field */ - ixo = mod.ioZx; - ixe = mod.ieZx; - izo = mod.ioZz-bnd.ntap; - ize = mod.ioZz; - - ib = (bnd.ntap+izo-1); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapz[ib-iz]; - } - } - /* right top corner */ - if (bnd.rig==4) { - ixo = mod.ieZx; - ixe = ixo+bnd.ntap; - ibz = (bnd.ntap+izo-1); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(ibz-iz)]; - } - } - } - /* left top corner */ - if (bnd.lef==4) { - ixo = mod.ioZx-bnd.ntap; - ixe = mod.ioZx; - ibz = (bnd.ntap+izo-1); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(ibz-iz)]; - } - } - } - - - } /* end elastic scheme */ - } - - /*********/ - /* Bottom */ - /*********/ - if (bnd.bot==4) { - - if (mod.ischeme <= 2) { /* Acoustic scheme */ - - /* Vx field */ - ixo = mod.ioXx; - ixe = mod.ieXx; - izo = mod.ieXz; - ize = mod.ieXz+bnd.ntap; - - ib = (ize-bnd.ntap); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - vx[ix*n1+iz] *= bnd.tapx[iz-ib]; - } - } - /* right bottom corner */ - if (bnd.rig==4) { - ixo = mod.ieXx; - ixe = ixo+bnd.ntap; - ibz = (izo); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - - vx[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(iz-ibz)]; - } - } - } - /* left bottom corner */ - if (bnd.lef==4) { - ixo = mod.ioXx-bnd.ntap; - ixe = mod.ioXx; - ibz = (izo); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - - vx[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(iz-ibz)]; - } - } - } - - - /* Vz field */ - ixo = mod.ioZx; - ixe = mod.ieZx; - izo = mod.ieZz; - ize = mod.ieZz+bnd.ntap; - - ib = (ize-bnd.ntap); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - vz[ix*n1+iz] *= bnd.tapz[iz-ib]; - } - } - /* right bottom corner */ - if (bnd.rig==4) { - ixo = mod.ieZx; - ixe = ixo+bnd.ntap; - ibz = (izo); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - - vz[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(iz-ibz)]; - } - } - } - /* left bottom corner */ - if (bnd.lef==4) { - ixo = mod.ioZx-bnd.ntap; - ixe = mod.ioZx; - ibz = (izo); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - - vz[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(iz-ibz)]; - } - } - } - - - } - else { /* Elastic scheme */ - - /* Vx field */ - ixo = mod.ioXx; - ixe = mod.ieXx; - izo = mod.ieXz; - ize = mod.ieXz+bnd.ntap; - - ib = (ize-bnd.ntap); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapx[iz-ib]; - } - } - /* right bottom corner */ - if (bnd.rig==4) { - ixo = mod.ieXx; - ixe = ixo+bnd.ntap; - ibz = (izo); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(iz-ibz)]; - } - } - } - /* left bottom corner */ - if (bnd.lef==4) { - - - ixo = mod.ioXx-bnd.ntap; - ixe = mod.ioXx; - ibz = (izo); - ibx = (bnd.ntap+ixo-1); - - -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(iz-ibz)]; - } - } - } - - /* Vz field */ - ixo = mod.ioZx; - ixe = mod.ieZx; - izo = mod.ieZz; - ize = mod.ieZz+bnd.ntap; - - ib = (ize-bnd.ntap); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapz[iz-ib]; - } - } - /* right bottom corner */ - if (bnd.rig==4) { - ixo = mod.ieZx; - ixe = ixo+bnd.ntap; - ibz = (izo); - ibx = (ixo); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapxz[(ix-ibx)*bnd.ntap+(iz-ibz)]; - } - } - } - /* left bottom corner */ - if (bnd.lef==4) { - ixo = mod.ioZx-bnd.ntap; - ixe = mod.ioZx; - ibz = (izo); - ibx = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapxz[(ibx-ix)*bnd.ntap+(iz-ibz)]; - } - } - } - - - } /* end elastic scheme */ - - } - - /*********/ - /* Left */ - /*********/ - if (bnd.lef==4) { - - if (mod.ischeme <= 2) { /* Acoustic scheme */ - - /* Vx field */ - ixo = mod.ioXx-bnd.ntap; - ixe = mod.ioXx; - izo = mod.ioXz; - ize = mod.ieXz; - - ib = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - - vx[ix*n1+iz] *= bnd.tapx[ib-ix]; - } - } - - /* Vz field */ - ixo = mod.ioZx-bnd.ntap; - ixe = mod.ioZx; - izo = mod.ioZz; - ize = mod.ieZz; - - ib = (bnd.ntap+ixo-1); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - - vz[ix*n1+iz] *= bnd.tapz[ib-ix]; - } - } - - } - else { /* Elastic scheme */ - - /* Vx field */ - ixo = mod.ioXx-bnd.ntap; - ixe = mod.ioXx; - izo = mod.ioXz; - ize = mod.ieXz; - - ib = (bnd.ntap+ixo-1); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapx[ib-ix]; - } - } - - /* Vz field */ - ixo = mod.ioZx-bnd.ntap; - ixe = mod.ioZx; - izo = mod.ioZz; - ize = mod.ieZz; - - ib = (bnd.ntap+ixo-1); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapz[ib-ix]; - } - } - } /* end elastic scheme */ - - } - - /*********/ - /* Right */ - /*********/ - if (bnd.rig==4) { - - if (mod.ischeme <= 2) { /* Acoustic scheme */ - - /* Vx field */ - ixo = mod.ieXx; - ixe = mod.ieXx+bnd.ntap; - izo = mod.ioXz; - ize = mod.ieXz; - - ib = (ixe-bnd.ntap); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[(ix-1)*n1+iz]) + - c2*(tzz[(ix+1)*n1+iz] - tzz[(ix-2)*n1+iz])); - - vx[ix*n1+iz] *= bnd.tapx[ix-ib]; - } - } - - /* Vz field */ - ixo = mod.ieZx; - ixe = mod.ieZx+bnd.ntap; - izo = mod.ioZz; - ize = mod.ieZz; - - ib = (ixe-bnd.ntap); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2])); - - vz[ix*n1+iz] *= bnd.tapz[ix-ib]; - } - } - - } - else { /* Elastic scheme */ - - /* Vx field */ - ixo = mod.ieXx; - ixe = mod.ieXx+bnd.ntap; - izo = mod.ioXz; - ize = mod.ieXz; - - ib = (ixe-bnd.ntap); -#pragma omp for private(ix,iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vx[ix*n1+iz] -= rox[ix*n1+iz]*( - c1*(txx[ix*n1+iz] - txx[(ix-1)*n1+iz] + - txz[ix*n1+iz+1] - txz[ix*n1+iz]) + - c2*(txx[(ix+1)*n1+iz] - txx[(ix-2)*n1+iz] + - txz[ix*n1+iz+2] - txz[ix*n1+iz-1]) ); - - vx[ix*n1+iz] *= bnd.tapx[ix-ib]; - } - } - - /* Vz field */ - ixo = mod.ieZx; - ixe = mod.ieZx+bnd.ntap; - izo = mod.ioZz; - ize = mod.ieZz; - ib = (ixe-bnd.ntap); -#pragma omp for private (ix, iz) - for (ix=ixo; ix<ixe; ix++) { -#pragma ivdep - for (iz=izo; iz<ize; iz++) { - vz[ix*n1+iz] -= roz[ix*n1+iz]*( - c1*(tzz[ix*n1+iz] - tzz[ix*n1+iz-1] + - txz[(ix+1)*n1+iz] - txz[ix*n1+iz]) + - c2*(tzz[ix*n1+iz+1] - tzz[ix*n1+iz-2] + - txz[(ix+2)*n1+iz] - txz[(ix-1)*n1+iz]) ); - - vz[ix*n1+iz] *= bnd.tapz[ix-ib]; - } - } -/* - for (ix=ixo-5; ix<ixo+5; ix++) { - for (iz=0; iz<5; iz++) { - fprintf(stderr,"edge ix=%d iz=%d vz=%e roz=%e tzz=%e txz=%e txx=%e lam=%e l2m=%e\n", ix, iz, vz[ix*n1+iz], roz[ix*n1+iz], -tzz[ix*n1+iz], txz[ix*n1+iz], txx[ix*n1+iz], lam[ix*n1+iz], l2m[ix*n1+iz]); - } - } -*/ - - } /* end elastic scheme */ - - } - - - return 0; -} - -int boundariesV(modPar mod, bndPar bnd, float *vx, float *vz, float *tzz, float *txx, float *txz, float *rox, float *roz, float *l2m, float *lam, float *mul, int itime, int verbose) -{ -/********************************************************************* - - AUTHOR: - Jan Thorbecke (janth@xs4all.nl) - The Netherlands - -***********************************************************************/ - - float c1, c2; - float dp, dvx, dvz; - int ix, iz, ixs, izs, izp, ib; - int nx, nz, n1, n2; - int is0, isrc; - int ixo, ixe, izo, ize; - int npml, ipml, pml; - float kappu, alphu, sigmax, R, a, m, fac, dx, dt; - float *p; - static float *Pxpml, *Pzpml, *sigmu, *RA; - static int allocated=0; - float Jx, Jz, rho, d; - - c1 = 9.0/8.0; - c2 = -1.0/24.0; - nx = mod.nx; - nz = mod.nz; - n1 = mod.naz; - n2 = mod.nax; - dx = mod.dx; - dt = mod.dt; - fac = dt/dx; - if ( (bnd.top==2) || (bnd.bot==2) || (bnd.lef==2) || (bnd.rig==2) ) pml=1; - else pml=0; - -/************************************************************/ -/* PML boundaries for acoustic schemes */ -/* compute all field values in tapered areas */ -/************************************************************/ - - npml=bnd.npml; /* lenght of pml in grid-points */ - if ( (npml != 0) && (itime==0) && pml) { -#pragma omp master -{ - if (allocated) { - free(Pxpml); - free(Pzpml); - free(sigmu); - free(RA); - } - Pxpml = (float *)calloc(2*n1*npml,sizeof(float)); - Pzpml = (float *)calloc(2*n2*npml,sizeof(float)); - sigmu = (float *)calloc(npml,sizeof(float)); - RA = (float *)calloc(npml,sizeof(float)); - allocated = 1; - - /* calculate sigmu and RA only once with fixed velocity Cp */ - m=bnd.m; /* scaling order */ - R=bnd.R; /* the theoretical reflection coefficient after discretization */ - kappu = 1.0; /* auxiliary attenuation coefficient for small angles */ - alphu=0.0; /* auxiliary attenuation coefficient for low frequencies */ - d = (npml-1)*dx; /* depth of pml */ - /* sigmu attenuation factor representing the loss in the PML depends on the grid position in the PML */ - - sigmax = ((3.0*mod.cp_min)/(2.0*d))*log(1.0/R); - for (ib=0; ib<npml; ib++) { /* ib=0 interface between PML and interior */ - a = (float) (ib/(npml-1.0)); - sigmu[ib] = sigmax*pow(a,m); - RA[ib] = (1.0)/(1.0+0.5*dt*sigmu[ib]); -// if (verbose>=3) vmess("PML: sigmax=%e cp=%e sigmu[%d]=%e %e\n", sigmax, mod.cp_min, ib, sigmu[ib], a); - } -} - } - -#pragma omp barrier - if (mod.ischeme == 1 && pml) { /* Acoustic scheme PML's */ - p = tzz; /* Tzz array pointer points to P-field */ - - if (bnd.top==2) mod.ioPz += bnd.npml; - if (bnd.bot==2) mod.iePz -= bnd.npml; - if (bnd.lef==2) mod.ioPx += bnd.npml; - if (bnd.rig==2) mod.iePx -= bnd.npml; - - /* PML top P */ - if (bnd.top == 2) { - /* PML top P-Vz-component */ -#pragma omp for private (ix, iz, dvx, dvz, Jz, ipml) - for (ix=mod.ioPx; ix<mod.iePx; ix++) { - ipml = npml-1; - for (iz=mod.ioPz-npml; iz<mod.ioPz; iz++) { - dvx = c1*(vx[(ix+1)*n1+iz] - vx[ix*n1+iz]) + - c2*(vx[(ix+2)*n1+iz] - vx[(ix-1)*n1+iz]); - dvz = c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1]); - Jz = RA[ipml]*dvz - RA[ipml]*dt*Pzpml[ix*npml+ipml]; - Pzpml[ix*npml+ipml] += sigmu[ipml]*Jz; - p[ix*n1+iz] -= l2m[ix*n1+iz]*(Jz+dvx); - ipml--; - } - } - } - - /* PML left P */ - if (bnd.lef == 2) { - /* PML left P-Vx-component */ -#pragma omp for private (ix, iz, dvx, dvz, Jx, ipml) - for (iz=mod.ioPz; iz<mod.iePz; iz++) { - ipml = npml-1; - for (ix=mod.ioPx-npml; ix<mod.ioPx; ix++) { - dvx = c1*(vx[(ix+1)*n1+iz] - vx[ix*n1+iz]) + - c2*(vx[(ix+2)*n1+iz] - vx[(ix-1)*n1+iz]); - dvz = c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1]); - Jx = RA[ipml]*dvx - RA[ipml]*dt*Pxpml[iz*npml+ipml]; - Pxpml[iz*npml+ipml] += sigmu[ipml]*Jx; - p[ix*n1+iz] -= l2m[ix*n1+iz]*(Jx+dvz); - ipml--; - } - } - } - - /* PML corner left-top P */ - if (bnd.lef == 2 && bnd.top == 2) { - /* PML left P-Vx-component */ -#pragma omp for private (ix, iz, dvx, Jx, ipml) - for (iz=mod.ioPz-npml; iz<mod.ioPz; iz++) { - ipml = npml-1; - for (ix=mod.ioPx-npml; ix<mod.ioPx; ix++) { - dvx = c1*(vx[(ix+1)*n1+iz] - vx[ix*n1+iz]) + - c2*(vx[(ix+2)*n1+iz] - vx[(ix-1)*n1+iz]); - Jx = RA[ipml]*dvx - RA[ipml]*dt*Pxpml[iz*npml+ipml]; - Pxpml[iz*npml+ipml] += sigmu[ipml]*Jx; - p[ix*n1+iz] -= l2m[ix*n1+iz]*(Jx); - ipml--; - } - } - /* PML top P-Vz-component */ -#pragma omp for private (ix, iz, dvz, Jz, ipml) - for (ix=mod.ioPx-npml; ix<mod.ioPx; ix++) { - ipml = npml-1; - for (iz=mod.ioPz-npml; iz<mod.ioPz; iz++) { - dvz = c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1]); - Jz = RA[ipml]*dvz - RA[ipml]*dt*Pzpml[ix*npml+ipml]; - Pzpml[ix*npml+ipml] += sigmu[ipml]*Jz; - p[ix*n1+iz] -= l2m[ix*n1+iz]*(Jz); - ipml--; - } - } - } - - /* PML right P */ - if (bnd.rig == 2) { - /* PML right P Vx-component */ -#pragma omp for private (ix, iz, dvx, dvz, Jx, ipml) - for (iz=mod.ioPz; iz<mod.iePz; iz++) { - ipml = 0; - for (ix=mod.iePx; ix<mod.iePx+npml; ix++) { - dvx = c1*(vx[(ix+1)*n1+iz] - vx[ix*n1+iz]) + - c2*(vx[(ix+2)*n1+iz] - vx[(ix-1)*n1+iz]); - dvz = c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1]); - Jx = RA[ipml]*dvx - RA[ipml]*dt*Pxpml[n1*npml+iz*npml+ipml]; - Pxpml[n1*npml+iz*npml+ipml] += sigmu[ipml]*Jx; - p[ix*n1+iz] -= l2m[ix*n1+iz]*(Jx+dvz); - ipml++; - } - } - } - - /* PML corner right-top P */ - if (bnd.rig == 2 && bnd.top == 2) { - /* PML right P Vx-component */ -#pragma omp for private (ix, iz, dvx, Jx, ipml) - for (iz=mod.ioPz-npml; iz<mod.ioPz; iz++) { - ipml = 0; - for (ix=mod.iePx; ix<mod.iePx+npml; ix++) { - dvx = c1*(vx[(ix+1)*n1+iz] - vx[ix*n1+iz]) + - c2*(vx[(ix+2)*n1+iz] - vx[(ix-1)*n1+iz]); - Jx = RA[ipml]*dvx - RA[ipml]*dt*Pxpml[n1*npml+iz*npml+ipml]; - Pxpml[n1*npml+iz*npml+ipml] += sigmu[ipml]*Jx; - p[ix*n1+iz] -= l2m[ix*n1+iz]*(Jx); - ipml++; - } - } - /* PML top P-Vz-component */ -#pragma omp for private (ix, iz, dvz, Jz, ipml) - for (ix=mod.iePx; ix<mod.iePx+npml; ix++) { - ipml = npml-1; - for (iz=mod.ioPz-npml; iz<mod.ioPz; iz++) { - dvz = c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1]); - Jz = RA[ipml]*dvz - RA[ipml]*dt*Pzpml[ix*npml+ipml]; - Pzpml[ix*npml+ipml] += sigmu[ipml]*Jz; - p[ix*n1+iz] -= l2m[ix*n1+iz]*(Jz); - ipml--; - } - } - } - - /* PML bottom P */ - if (bnd.bot == 2) { - /* PML bottom P Vz-component */ -#pragma omp for private (ix, iz, dvx, dvz, Jz, ipml) - for (ix=mod.ioPx; ix<mod.iePx; ix++) { - ipml = 0; - for (iz=mod.iePz; iz<mod.iePz+npml; iz++) { - dvx = c1*(vx[(ix+1)*n1+iz] - vx[ix*n1+iz]) + - c2*(vx[(ix+2)*n1+iz] - vx[(ix-1)*n1+iz]); - dvz = c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1]); - Jz = RA[ipml]*dvz - RA[ipml]*dt*Pzpml[n2*npml+ix*npml+ipml]; - Pzpml[n2*npml+ix*npml+ipml] += sigmu[ipml]*Jz; - p[ix*n1+iz] -= l2m[ix*n1+iz]*(Jz+dvx); - ipml++; - } - } - } - - /* PML corner bottom-right P */ - if (bnd.bot == 2 && bnd.rig == 2) { - /* PML bottom P Vz-component */ -#pragma omp for private (ix, iz, dvz, Jz, ipml) - for (ix=mod.iePx; ix<mod.iePx+npml; ix++) { - ipml = 0; - for (iz=mod.iePz; iz<mod.iePz+npml; iz++) { - dvz = c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1]); - Jz = RA[ipml]*dvz - RA[ipml]*dt*Pzpml[n2*npml+ix*npml+ipml]; - Pzpml[n2*npml+ix*npml+ipml] += sigmu[ipml]*Jz; - p[ix*n1+iz] -= l2m[ix*n1+iz]*(Jz); - ipml++; - } - } - /* PML right P Vx-component */ -#pragma omp for private (ix, iz, dvx, Jx, ipml) - for (iz=mod.iePz; iz<mod.iePz+npml; iz++) { - ipml = 0; - for (ix=mod.iePx; ix<mod.iePx+npml; ix++) { - dvx = c1*(vx[(ix+1)*n1+iz] - vx[ix*n1+iz]) + - c2*(vx[(ix+2)*n1+iz] - vx[(ix-1)*n1+iz]); - Jx = RA[ipml]*dvx - RA[ipml]*dt*Pxpml[n1*npml+iz*npml+ipml]; - Pxpml[n1*npml+iz*npml+ipml] += sigmu[ipml]*Jx; - p[ix*n1+iz] -= l2m[ix*n1+iz]*(Jx); - //p[ix*n1+iz] -= l2m[ix*n1+iz]*(dvx); - ipml++; - } - } - } - - /* PML corner left-bottom P */ - if (bnd.bot == 2 && bnd.lef == 2) { - /* PML bottom P Vz-component */ -#pragma omp for private (ix, iz, dvz, Jz, ipml) - for (ix=mod.ioPx-npml; ix<mod.ioPx; ix++) { - ipml = 0; - for (iz=mod.iePz; iz<mod.iePz+npml; iz++) { - dvz = c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1]); - Jz = RA[ipml]*dvz - RA[ipml]*dt*Pzpml[n2*npml+ix*npml+ipml]; - Pzpml[n2*npml+ix*npml+ipml] += sigmu[ipml]*Jz; - p[ix*n1+iz] -= l2m[ix*n1+iz]*(Jz); - ipml++; - } - } - /* PML left P Vx-component */ -#pragma omp for private (ix, iz, dvx, Jx, ipml) - for (iz=mod.iePz; iz<mod.iePz+npml; iz++) { - ipml = npml-1; - for (ix=mod.ioPx-npml; ix<mod.ioPx; ix++) { - dvx = c1*(vx[(ix+1)*n1+iz] - vx[ix*n1+iz]) + - c2*(vx[(ix+2)*n1+iz] - vx[(ix-1)*n1+iz]); - Jx = RA[ipml]*dvx - RA[ipml]*dt*Pxpml[iz*npml+ipml]; - Pxpml[iz*npml+ipml] += sigmu[ipml]*Jx; - p[ix*n1+iz] -= l2m[ix*n1+iz]*(Jx); - ipml--; - } - } - } - if (bnd.top==2) mod.ioPz -= bnd.npml; - if (bnd.bot==2) mod.iePz += bnd.npml; - if (bnd.lef==2) mod.ioPx -= bnd.npml; - if (bnd.rig==2) mod.iePx += bnd.npml; - - } /* end acoustic PML */ - - - -/****************************************************************/ -/* Free surface: calculate free surface conditions for stresses */ -/****************************************************************/ - - - ixo = mod.ioPx; - ixe = mod.iePx; - izo = mod.ioPz; - ize = mod.iePz; - - if (mod.ischeme <= 2) { /* Acoustic scheme */ - if (bnd.top==1) { /* free surface at top */ -#pragma omp for private (ix) nowait - for (ix=mod.ioPx; ix<mod.iePx; ix++) { - iz = bnd.surface[ix]; - tzz[ix*n1+iz] = 0.0; - } - } - if (bnd.rig==1) { /* free surface at right */ -#pragma omp for private (iz) nowait - for (iz=mod.ioPz; iz<mod.iePz; iz++) { - tzz[(mod.iePx-1)*n1+iz] = 0.0; - } - } - if (bnd.bot==1) { /* free surface at bottom */ -#pragma omp for private (ix) nowait - for (ix=mod.ioPx; ix<mod.iePx; ix++) { - tzz[ix*n1+mod.iePz-1] = 0.0; - } - } - if (bnd.lef==1) { /* free surface at left */ -#pragma omp for private (iz) nowait - for (iz=mod.ioPz; iz<mod.iePz; iz++) { - tzz[(mod.ioPx-1)*n1+iz] = 0.0; - } - } - } - else { /* Elastic scheme */ -/* The implementation for a topgraphy surface is not yet correct */ - - /* Free surface: calculate free surface conditions for stresses - * Conditions (for upper boundary): - * 1. Tzz = 0 - * 2. Txz = 0 - * 3. Txx: remove term with dVz/dz, computed in e2/e4 routines - * and add extra term with dVx/dx, - * corresponding to free-surface condition for Txx. - * In this way, dVz/dz is not needed in computing Txx - * on the upper stress free boundary. Other boundaries - * are treated similar. - * For the 4th order schemes, the whole virtual boundary - * must be taken into account in the removal terms, - * because the algorithm sets - * velocities on this boundary! - * - * Compute the velocities on the virtual boundary to make interpolation - * possible for receivers. - */ - - if (bnd.top==1) { /* free surface at top */ - izp = bnd.surface[ixo]; -#pragma omp for private (ix, iz) - for (ix=mod.ioPx; ix<mod.iePx; ix++) { - iz = bnd.surface[ix]; - if ( izp==iz ) { - /* clear normal pressure */ - tzz[ix*n1+iz] = 0.0; - - /* This update to Vz might become unstable (2nd order scheme) */ -// vz[ix*n1+iz] = vz[ix*n1+iz+1] - (vx[(ix+1)*n1+iz]-vx[ix*n1+iz])* -// lam[ix*n1+iz]/l2m[ix*n1+iz]; - } - izp=iz; - } - - izp = bnd.surface[ixo]; -#pragma omp for private (ix, iz) - for (ix=mod.ioTx; ix<mod.ieTx; ix++) { - iz = bnd.surface[ix]; - if ( izp==iz ) { - /* assure that txz=0 on boundary by filling virtual boundary */ - txz[ix*n1+iz] = -txz[ix*n1+iz+1]; - /* extra line of txz has to be copied */ - txz[ix*n1+iz-1] = -txz[ix*n1+iz+2]; - } - izp=iz; - } - - /* calculate txx on top stress-free boundary */ - izp = bnd.surface[ixo]; -#pragma omp for private (ix, iz, dp, dvx) - for (ix=mod.ioPx; ix<mod.iePx; ix++) { - iz = bnd.surface[ix]; - if ( izp==iz ) { - if (l2m[ix*n1+iz]!=0.0) { - dp = l2m[ix*n1+iz]-lam[ix*n1+iz]*lam[ix*n1+iz]/l2m[ix*n1+iz]; - dvx = c1*(vx[(ix+1)*n1+iz] - vx[(ix)*n1+iz]) + - c2*(vx[(ix+2)*n1+iz] - vx[(ix-1)*n1+iz]); - txx[ix*n1+iz] = -dvx*dp; - } - } - izp=iz; - } - - /* if surface has also left or right edges */ - izp = bnd.surface[ixo]; -#pragma omp for private (ix, iz, dp, dvz) - for (ix=mod.ioPx+1; ix<mod.iePx; ix++) { - iz = bnd.surface[ix-1]; - if ( izp < iz ) { /* right boundary */ - /* clear normal pressure */ - txx[ix*n1+iz] = 0.0; - if ( (iz-izp) >= 2 ) { /* VR point */ - /* assure that txz=0 on boundary */ - txz[(ix+1)*n1+iz] = -txz[ix*n1+iz]; - txz[(ix+2)*n1+iz] = -txz[(ix-1)*n1+iz] ; - /* calculate tzz on right stress-free boundary */ - if (l2m[ix*n1+iz]!=0.0) { - dvz = c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1]); - dp = l2m[ix*n1+iz]-lam[ix*n1+iz]*lam[ix*n1+iz]/l2m[ix*n1+iz]; - tzz[ix*n1+iz] = -dvz*dp; - } - } - else { - if (izp) { /* IR point */ -// txz[ix*n1+iz] = -txz[ix*n1+iz+1] ; -// txz[ix*n1+iz-1] = -txz[ix*n1+iz+2]; -// txz[(ix+1)*n1+iz] = -txz[ix*n1+iz]; -// txz[(ix+2)*n1+iz] = -txz[(ix-1)*n1+iz] ; -// tzz[ix*n1+iz] = 0.0; - } - else { /* OR point */ -// txz[(ix-1)*n1+iz] = 0.0; -// txz[(ix+1)*n1+iz] = -txz[ix*n1+iz]; -// txz[(ix+2)*n1+iz] = -txz[(ix-1)*n1+iz] ; -// if (l2m[ix*n1+iz]!=0.0) { -// vz[ix*n1+iz] = vz[ix*n1+iz+1] - (vx[(ix+1)*n1+iz]-vx[ix*n1+iz])* -// lam[ix*n1+iz]/l2m[ix*n1+iz]; -// } - } - } - } /* end if right */ - if ( izp > iz ) { /* left boundary */ - /* clear normal pressure */ - txx[ix*n1+iz] = 0.0; - /* assure that txz=0 on boundary */ - txz[(ix-1)*n1+iz] = -txz[ix*n1+iz]; - /* extra line of txz has to be copied */ - txz[(ix-2)*n1+iz] = -txz[(ix+1)*n1+iz] ; - /* calculate tzz on left stress-free boundary */ - dvz = c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1]); - if (l2m[ix*n1+iz]!=0.0) { - dp = l2m[ix*n1+iz]-lam[ix*n1+iz]*lam[ix*n1+iz]/l2m[ix*n1+iz]; - tzz[ix*n1+iz] = -dvz*dp; - } - } /* end if left */ - izp=iz; -// fprintf(stderr,"V4 ix=2123 iz=1 tzz=%e\n", tzz[2123*n1+1]); - // izp=bnd.surface[MAX(ix-2,0)];; - } /* end ix loop */ - } - - - if (bnd.rig==1) { /* free surface at right */ - ix = mod.iePx; -#pragma omp for private (iz) - for (iz=mod.ioPz; iz<mod.iePz; iz++) { - /* clear normal pressure */ - txx[ix*n1+iz] = 0.0; - } -#pragma omp for private (iz) - for (iz=mod.ioTz; iz<mod.ieTz; iz++) { - /* assure that txz=0 on boundary by filling virtual boundary */ - txz[(ix+1)*n1+iz] = -txz[(ix)*n1+iz]; - /* extra line of txz has to be copied */ - txz[(ix+2)*n1+iz] = -txz[(ix-1)*n1+iz] ; - } - /* calculate tzz on right stress-free boundary */ -#pragma omp for private (iz) - for (iz=mod.ioPz; iz<mod.iePz; iz++) { - dvz = c1*(vz[(ix)*n1+iz+1] - vz[(ix)*n1+iz]) + - c2*(vz[(ix)*n1+iz+2] - vz[(ix)*n1+iz-1]); - if (l2m[ix*n1+iz]!=0.0) { - dp = l2m[(ix)*n1+iz]-lam[(ix)*n1+iz]*lam[(ix)*n1+iz]/l2m[(ix)*n1+iz]; - tzz[(ix)*n1+iz] = -dvz*dp; - } - } - } - - - if (bnd.bot==1) { /* free surface at bottom */ - iz = mod.iePz; -#pragma omp for private (ix) - for (ix=mod.ioPx; ix<mod.iePx; ix++) { - /* clear normal pressure */ - tzz[ix*n1+iz] = 0.0; - } -#pragma omp for private (ix) - for (ix=mod.ioTx; ix<mod.ieTx; ix++) { - /* assure that txz=0 on boundary by filling virtual boundary */ - txz[ix*n1+iz+1] = -txz[ix*n1+iz]; - /* extra line of txz has to be copied */ - txz[ix*n1+iz+2] = -txz[ix*n1+iz-1]; - } - /* calculate txx on bottom stress-free boundary */ -#pragma omp for private (ix) - for (ix=mod.ioPx; ix<mod.iePx; ix++) { - dvx = c1*(vx[(ix+1)*n1+iz] - vx[ix*n1+iz]) + - c2*(vx[(ix+2)*n1+iz] - vx[(ix-1)*n1+iz]); - if (l2m[ix*n1+iz]!=0.0) { - dp = l2m[ix*n1+iz]-lam[ix*n1+iz]*lam[ix*n1+iz]/l2m[ix*n1+iz]; - txx[ix*n1+iz] = -dvx*dp; - } - } - } - - if (bnd.lef==1) { /* free surface at left */ - ix = mod.ioPx; -#pragma omp for private (iz) - for (iz=mod.ioPz; iz<mod.iePz; iz++) { - /* clear normal pressure */ - txx[ix*n1+iz] = 0.0; - } -#pragma omp for private (iz) - for (iz=mod.ioTz; iz<mod.ieTz; iz++) { - /* assure that txz=0 on boundary by filling virtual boundary */ - txz[(ix)*n1+iz] = -txz[(ix+1)*n1+iz]; - /* extra line of txz has to be copied */ - txz[(ix-1)*n1+iz] = -txz[(ix+2)*n1+iz] ; - } - /* calculate tzz on left stress-free boundary */ -#pragma omp for private (iz) - for (iz=mod.ioPz; iz<mod.iePz; iz++) { - dvz = c1*(vz[ix*n1+iz+1] - vz[ix*n1+iz]) + - c2*(vz[ix*n1+iz+2] - vz[ix*n1+iz-1]); - if (l2m[ix*n1+iz]!=0.0) { - dp = l2m[ix*n1+iz]-lam[ix*n1+iz]*lam[ix*n1+iz]/l2m[ix*n1+iz]; - tzz[ix*n1+iz] = -dvz*dp; - } - } - } - - - } - - return 0; -} diff --git a/fdelmodc/fdelmodc b/fdelmodc/fdelmodc deleted file mode 100755 index 2490595cb11059d767c62d36f5e165bc82028adc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 586080 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%0AC=5}X|G=y$IdokJVs?tOJa$tkKt?|IYErlW!?VM zo{RR}VrTvS7Cy9XNR9~bj4gupY&oI2m%N3K^O0Z^&1Uc^bYe#%dM#c{oJg1MxZ%d4 zZ2v>qk<UK^N1p6@%I?OQv+gD{e3f*3D;<Y-&7(fp+|_0zAl#in=r*$emyl8mD`<+h zi<;{)4{3MD&E^_HOd;FF9mrH|MWj`vb0bXn7PH1Ce>*-@CBw|3yvbw=tRRY=L-b6$ zq25IF%gPOd<8z1m)Rp$P+^3|KUG8%#pS#_sM3fZc!~FGW?BPSi%+%QLB@ibtSCGg* zbd%6L7wRL#-Bh6jgW(Jw=5`<d*%f8ZQ7&|(qPOf|g8FaN6RhCLa+5V!Ihvq6%*101 zHo2QviCw>S-_82gZCc`6^*zpg8~fVNeNR>VBk)2YyS{(Tw`0Iu6`lo;SrZB{-krna ziRF?^5+<K8q=RpfLvF;F^)xGCK7Dl-Ea7k_gPgh<mc%I$w?0$TWxH|+*hCOR<LMZ= z=-o@A7sf03fMJdyaGjm}@Nu>IdLjP`ubSOWDE}a|An`a8deU^|Z>~*SXZ&iFmJ=!F z(H_#Ji7}PsLfV-xL^4Mw0F*P#8YGk2W}Oh0O)G{AC8Us#&Lv#}(-w8rTeh+bjazds z5!YE62q@ZohAnV%QXdd9@^L;zNYegkq>jx{6%pI%GN2$Bi7ZYu9VL1p(e1VGAisb( zk=dWJi~@<foUQKyhN2&^cfc@=Z`XhrskX7C4@t(`wTx%s$ZS9`;!fj3QS6I{BjM;w zmKlu!<1K{osI}<XMmELcliGSg$37c2&0T|!H6LS};_u+|hhTc-Ei=akEsrE3YatAk zfR>;(nT9&*fh1}ZuC!D7>6y`8N?{NB9$AMTd@wW|JSPeS8%75n?bs@N9@bjTN>WrM zHETUkT9h7OAZlxc6@37r7BHHu=}S7OG(sVj6q3{uM&_Y;EoI9%9|B71Fp8K3;~hg# zD5)v$dWV3>nAdeGU8VqNqoXrPo-Up1uW{>b7%7wCxXlf9yMJ&ZfnnY<%#I`tRLeD2 z8}6*ua~S~pi7UCIHGK))izFjK8r$)Xm1_9--HE#1%XqKSsiAp+s=E>|K&*$L{zR)8 z38=kA<&UL&istaaTefDO(&tmU?mtt0BKi>(yr2riD~l_5<^-#N)!%-ODmcMapv(Rr zszA-hKK<Xd|JHqqpXZ8)h!n=h+W!&77q$Om$LEH9%CB<eL$Lale|LO2OW>n>@NdUo z9J_dUdg^R=AbjoL)bL2NmYd(Z<2_We&m_1pnny8g350(_rhhXZHvv#w;Tcq@O~6!R z_ScfCYQM{j$MAP9WP*lQQzY2#E!&fB>m9Mv@Bv*kZNV70^2b~;<-%!tL~km?bujKj zIK5&~dj=#US?RP`3-$bIjoy{kt+CdUv@SB*nf64G@}bK%31^n?)5e>}sEs*M`HHZO zUk71h`!*1dw{MU5K)8%Ap2~q}dtCzqJQ$`%yh;PF)O-wRh`cPdHtk`!TB9g(Xh-Y# z-PSB?PhxjN-3zWgJ^QrhQ?!Q~sv^7^&c8Tw6s=3fhtJJF_?z8j*Qnim06JNF^jF}a zlGNF;!xA5`5PZ<~;eR9qT(jU7>$@FB$g4mX>YH~~l;bRYH*r%0CVITSLq>Qg-||s( z9oK`Ay(Pi*lf4nJ)Q|>a$8*r6pfXA9e4^{#2LH*~M}*W=!tJz>0I5F`32-#J#9c6t zx?~qOm$-hUp1lHN+Abp3is=QWpi-Y^4@T1TA5Z%)h~SpXa~w{Tg44g?CX?+fH-BkY z_KTRm_JjKXCquz!i{XS3+0uRC9unN1<BQ4@c4r^LP_<uqzZTr)Vz?Uw_lteuE*9LM zis6<D?i>5Uog%pT#c(1++0X9__esH>R}3d=nBB`MO278Kg3F`e3&n5?1a}{BOhqMQ z-2?NJm%U#DX<TKNjcF)=`D>Rm-Xu)v364EWH`p2P?AOVztzQpG!Q^H5ZF&?<pJFtc z!AXkwTNtBp3u+Xj$H@e9gJM3Zn9IT#jYUwdn6HL0>UHqWpNL6>G3sBiT``{yW7Lyi zqhcb&V6t5H?fnYkboLgmUiQ-mjzN<GN?ykg_jZzUxHM8i-*xdhMEQM4ZM6;fM0Hz8 z-ZD=3o4a}-8gogO7(Uswg5WqZ6|ZYZ&w^;J#$#qUoO0#?Xxw`Yn*{mf(7uxbIxU_o zHOj&X9k2_COCrMGl*>~Ca17vu%Gb(%;JWw{eIgbStA`|rjT5`n#hSxCsrnEYx6lSs zq$`r>Uk_wDmATHYKU!O*>7kSv{IH&-B%B4TwN>KH)utyh$gzMBk3?;$qZtmH!q5LP z)F&>jFn!|ka?>Y%k{5Ec&r(p=-}Xz?z3O$1Cf0BZS#LGPq6w0m6-v==g`?CPi}m=( zhx3ZSdQdG9;#<oq)D=k2c5;7@ByMT><^uuEDwl@OBu7cqtwhpRC+>LFITuZ<kf3ji z|Aj=IB6stcP*hsOz(th#hAXk5;qPI8F30itdKLpl?@ioYIa_Ax2+p*<hQC862|kq* z!lm7-Wx3oZN&Gfzfaw_NY)jb@fcBHLg(9}L#+bx5nmm$RiK0U1=5T+PN8+FqWI2ab zv`0~<2g}*Lx2)3QWS0e;w~Q0k=G9=cXkG>6nvu9W{uW8%2MC)8)4Q!M2B?H|;}E0S zf08_0wEr}H;~Gb_|9pKTmT40-*L_#&`zrTcrSCtu@3_8KxbJFxKcR28H&F0(1PTa$ zIc#UqbJPp=8J5!0qgi`t<W5+R^p&@QiQY9Ux$K#iRGi`t?5HO`jk(mCQLoqqSlF`^ z4D~O~p>4xe_)+wT?+Sfu3zcj0RQGLd{=WORHec($t<CZ%FR`TBbdwJenn%qgFi}1m zJ61;<JJv)~rMS(kLnG;R>S8hF>zy=1X|bak)?6C!$QDN3(6&1oXRdmVc4(o^6tcUJ zVdx-3hV?G*$R2ieVquK9b^>elf@NW2*U%45l>I$aR@5PtumJg-!6(jtOsj{up7h^f zrAU-&=3Kuzc<fkfu7;^o2Pf#TlsGkn;}~@oOEvh51Jek0{xb*Ww3Y?PC4yYwAcYg1 zH{>AENff~52<&SPOhez<RRDvVSo?H*E3gwBm}aH(KMP>E`O1MU5ZJ*EOcU05Mh+}A zZOKC}6=e39qUr1$Re%-4D3p4GVE+NEo9xbm1qix|(S%T7Xb&M9#jAi+^74MkeYxaz zlC$gKI{V0@$X3HpRG7xHIrzd&&S}|j5ynu9d4$DboiCkgK{0xOMYHmxRyEKW!Oq{Y zbDbNn%;{8T1<xs_og=HTiaEh1#iZlBy<DVF{ih=FVxCi|8teSMB6G{L9UloH`~ETU z3aD>EXBg0^1iuRd8iU~H3gDZPwc1Yt%n!gkptMfX+{W$Tv9>GsBFiC}9sW8Q{bzV( zBKT8{#`;Aupv>_HSiF<df~zfMr)Ze9V|0^w6kHf@X4>rfy>_-n%yiJR;-$kQtLV&4 zd~bN4g~^SWVAfeUBXl&9q=n+NQcdhovnZBuM=+pc>j$$B@^{hSmx+k%3IW83#legN z297f>jBh2Y#k@>RL)UhzKOoZU`U|<G61;(s-Q1xHH4&}IQ~YB;%el-}t|F8oqy``S zHtL`VsE;<h0g)OC!ZyP5{yQHoVTlK`3gL2vrxwC7g(nl1I#q+9LZrtLNn5m*2zee* zdnUEL>Z3g+Y19*^W}<&23gx$JK^i8yi?B?O>54;j^r-;zAOO(66?DU>?eg5xwgv|g zW>(@qqS}^{G##swr)8LND?<kn;%VUoCwz^O*Mh%U=bpyzE0F@Z36RFfE5Qv)z`ua< zCr?ED;dl0Os#hE3(O4}qwJu?Lr|FXwP${~xvouW_JB|FyN<fa$Smcno!QaMivB3|7 zZA)h1tvn2E6Ql-+1b;XRi4fms0wd(0aSi_K4gOZ`5!Di?HBN%Bw!tW_MP>LR^|4#R zW5d{u)<$B`Y?EpTvz5m20SgEkhpFr=Wz#ej)k9jL85-^2_6yb2BAC8@FltcnV_*`^ zi58Q<b&$5`ZB#kTi|($}vjfv~sx*w+O#P%;3Mhv)S*{M-z#$RU2!>8CCoRRB-kJ&h z*XTdS(w*c#l*%MKqIwi!H`ZX2cwdMoKPhV~Fq823Fcf~6+kba_u%9=-kqC(9q1<)h zrMbc@b9Gtolm|v_gfv~iSPbN0xx1)ZHbFxeK`dXQ^Yq<N(tZZl=R4jlm4URZM=9(Y z01Z<5Fo7<yClw4nI{R>q?H8kWA!39;GV+ZjYXv)`p*+D0sSnDmSjdzZaW8I$goEm- zbgdfCL`OC%bWZRn9^NN-+3a3Y)&n7DYTW%HBvON_YY=|ZWRfgYCHO@w*wT6r!R-@9 zA;UOIl;Bx7tSF<%HjWG>yo00VTn<T=my7#*2Sv-hLkJLkAh8FQqbG<Z>s+;$E+?02 zZ1i_&y43W@N_=mswe7RV<LYgECVHG1ZsM)No;AhWqsC@|dL5mIubsN!veSU9#Z3oS zGVoW^c5j^=y2vf$5UlO<gC1RQ`4K8kF1IiUTx#Pk7+2yFS0cBEqLU&|rXx>iT?m;{ zk%cyllOo)Ldo|5<!>z=6oh{%1?cYHlQ97vWmCILq%N#|NE1e3vGuQ|j$>C<*eW}c8 zv3l>9YjutA`W5x%4|-jH(#9@RaVQ6N+$cIc$>h@XA6i>F^?8LpWjK!jT({;2+p=Hb zJa*snzgouYL+5{Pj5z|_|3x;$U%Np^fMJ~fj7|ZMJJU`9#RLX;i$?OOO7>(5%Ck48 zZ-H+eNdb<D1y3JIr;(y1oHip$ciyhYO)|$1DuDc5Am%QZ12PtE=k*RGiyPmtl%;@Z zea&O+SgR&ybvmft0@OtYm5l48(PXS|JCHvVK+Xt3bku0_)!7atQvj(6K_p0<Y<02& znN<MU&p_O{AW#zRJCAfwXB42Gjk`uKQKNHGh1YoifZ3fWE5dP;ULlYxbQneO+IZ;? z@>@l(YXgtsWFO%VQ<xjyaX$l|YrnXRz6bd19VCk_h_Z<-h<a&xl<*sr{R(D6pj?4n z*Sml*$Ctu@=ymWkf$S`M_6K<bUQV-qLNy}t?7uL7hEmG`tjrX1Y`?igdRH(I&ByU- z$zXIu(kC=xJcNtrFQ@zm&Pw^4<Rv=FAe_Pjp5K_6g22uro5=)}`wjL0u?yJt4KWjz z*f%Eg>F&N>01-h{*llSsi>?Hbs?dA}_x}=M?O>Yu8Jd~sKD~x_lzBaUc1iGuga&a! zt*Q17Lkj7>SdU<JO_4X9(^A^dT|#q`-3{~-4FYY^>&EWEV@Vrm9*AQlWM5z<oI^!m z><+$>MS|;8@0a-m(ZphYqGc_U3{Fj_YA4alj)UyH5Dc%N^{W&9S}97Qq_#y%WRh_^ z=1W3ymnw>l|KUk7RQ*kLPmKLT`Hj`0yi9iMO65d+6I3jR9*yd{H^HUJr3oJg`0E-o ztaYz3YwJq~tIL%&>7};dD#%|;;SjnViH;YcbOtNHSvjEfSb_Iu5(Dg&o3YlOJkXrR zww@Gs6zcAm@XU?PF7!X%87mWYZ&AcBe}{MaibUORzN>u{(0d7vdWX=Mq`&KLYQ%^g zFgo==Q^Co|y@_7#;jp(jnc{{;R@A*;9Oo^5ju}bRJ?t&|GqYq{HThVccXHBy9p!aV zc4+so;xNTkf4DfC;1j2DaI*N~u)tKl1(eDAF~x;YXpBRlG5uS`Aonu7YKFHsDwLtb zvG^&r5}CJrGEe)+`zJnc8X{ZMT%xN_E#(c*e0r*55AJ&YWg99ETeObE?x58==NqZR zM^rY;K_ymGv+m$!j=zE-A)YO~?UXssnxe(WtGd6?D#jO(ze6?37<sb7Qz7{$4)hk@ zWy(KUr)>GTAW^zeE{|7~&;=L=BqGG`TB=~B)ad1!S%S?RzaLQqIrR_zq8QwjPpE;w zExL@QE~?p(nH%R}vLvd&_$2?eNj|Q}pKtVEP9bor9*|!6@zS{=earPzX6}etj)aVq z5j;CQ>nuG(6QC|%yIqyPpq_?fL3c;d4Bo=!LDV&ox&|Ide^J6zcSDL>nG?G!ZsM~Z zG<$b^_vo84(JyM!qE|9!_kfloc1V|V`YNroT(q2Mab8g6olY~!xHf_zbs;%35ma6k z*;O3FUCy-vk4JhtE}MoB#)DeXdsK(lHQel-8X#I6(&)lIoy6w0#TwQec93xNrfemk zqB`jeI(nOukm@ktX{cg2D;GZt)!7EcWJJElw`S+FKQpS+=%Wqs7ENbqXp_s{L1d@8 z!GEs16uJ|qP=uprI$n){6vGmk_V`|8RR8TF`ZDSX&F21;;0I~{1E6({-hVFPuMX)? z!!ZAu9ERFTW@Mp24KYrj#&<`TgRrszR6lLvGL;bTk$rAPO+cN}1LjLUop-X&`7Q`u zIpT3h@agc8DfiknzdS(Z>_}acW&>@Hw`>!AUV>x)$jYuBiYh=&W>z*t-s>M1F)XRu zl<-b}IKsU-y>lkoIqzhR*{+{5W)0xZIp9ujgf~bQAI=P5LY?%Vvv)zC(#D{=`(VzD z;}JgNb(_3}Pq0eU{?-QnWjKn;`3dD@Z%4gq<6|@+=`)5Wz$O#D3B;j!CucukE1yrV z#YqQuS6w=bj`Z$aIz&#Xi~mu^970)jb*YHFk(NCG*gU^atF0e2_;1OWYLL2wwi_>w zY5!G_4fPu=@cY}s*9C-sP!Gex%HY>0;_ZW65ptoJ5D(r*F_9D-EG@=IxZeNA+55mp zU0r$q3>h$J@H>GB*rH-Pb|)4Kaj`NhR7NK{qZ7pyHA!P+8z0v`k5y_xX%}fE2|C3I zSgqPFZQVX}x81s{-P-!Ef06)6_#*~X3?Tm$bw*SoDk360@6Wm4nFPe`{(im;^Znj? zzxU6%=bm%!Ip?1H-VUxd8bsj%Xqmm@0mH{P$rDT-;C0b?VkU~A(yBWtgpdj*FteWn z_7QQw2-C3`VdB$_aGJ&M#fo4I5T-X~QSfeKPB?0EqcvKIvb!ad%OUxBFZm{m)K27V zD6p+r@yz!I=lNSN^1d;_$)9F|)%ikVf-5dG%8_j7E>tu((ZCU*ZcPzWb~OKsr2EqA zV0oBpW8UQ-0*8sLxG5F;AdzGK8v8p2zxr3!quAf#D}cM$-!xF!@yq`S2b}n64j86J z;p$|sb+}(=b%CWGoBd7sZ`j}OSyl|zTU-wxFpC2nbiDCX%r9{)=J)ESn4f%A#(Wm{ zYu@%5-0utbgNPv2vAAD!sJB=bMddz05cT;Fown8b2e?LIwWgp0e!juTR^)$5k~{W_ zTubNu^8Wg5%~*W^nZ;d4_M#$jx(Xt$_Y-&y*bSezM+;~8&$ima$&-0;$qu`P!&aKR zii2x7IOJolZefJ`Z9lXncf0#C`^Ec=1!&EU5fk_pZELAbWM+&TRHolpROCp1#7I9F zIeCew{g+e}%$$g(D&@Q0;LjXSe*y=Gc_h;-3iKvPxlnq~(F_1F@||=aa1Uo@PYkF~ zG3?-IR&ddxu@fbu#4=X~GC_{Sorz<U7=3}8p3nJL#}Kk&2uKAm1mYq4-1+>>MFr*@ zk&-ZT&YdsA4tiSHf#=KE%4OLtk2NhHtZRC=#=Xl>eu)~aMCda1f4=dCcwl=!w?1E< z31hN5?gfxV+{NoH_P_((>;#34Ne{;r?Ks<HE+a&AXCS&>qSZw2o~M}J$~4C|^>s5} z=l%`rZp^Kw+_e_T7gy23ip^c@C(ZJUEV6gJnYxTQ<(}mo2txbYG^)Zn;>zWtN<IwR zId;i3Ip8x(8w4D$V#h|^Hb}DwO1>}u;lKA2nA~nr?_+=c0=w0t{Z$hUU9qb<`l!{9 zw9#o>J)J{LutP(L=3m?_TqLnJP=LRB`L|sk9<OuZzuT>qT?*qBc*lVs%Z1a1H(Vdn zLjr+ac3LfPvYMS<M8_rhqlPiyrIgGVlQ|CeilvogZ(L&hj|Q{`ky*j26__-KT=N#9 zRHMtKK{fvZNo4CFES&NNFM=lwcGeP_CNz>oc;2D|r8+)p5q?5Lp5hZ;>A|%ef|h?u z{ffLv>c<s5W)fwPI=vY><0gjZ&ESzpFcW%jSBLF>mrnKPI;&|s6?0gj-bDNH#KA0Y zM@nry2sjhzH;;@8#jQ5$n?8cBy#T#QuO=*0SEV75*SwyTrUQe!Dh&tRK{_HKbyb=~ zg1evP2fHe<Mze!y{)@d2?Wzpfd&^V2cU9t{*LeP)5mg37*Uz38&(v^5=c-t`Csw{b zR{ne}^WB5(L`!BbL+D+iOc-ar?F=t6MDs}Ws}?SGBP28tZLkcsg`x*;WplN$GP-*9 zgha!}ycj4cZ~gpJnmPv~!A0NAC(l2D!`xk*)mA5>Yv$i<&;n&RM;Xr$8McDsFE_Oe zij}WTqBa+LaBaX0=B;p^JP%*a2P2Y(vYi>zTD&da;X!C)1opY82$;Yu$Bs*HB4#4P zsfxZaX9ZGKto^OiDg*Dw)^pVC)$fnR=dEI2c`vpJ>EQq@w0qu92W3aJ%Cx`ByZa52 zK%+B$>69Z|xT!P(-rx*5SrO;Pfl#O`YHkWo*?p<WgC--7C7FZI`LmoFMQw){*(fAz zF<qVR@Z>vOJB42gmQs2Fl(O^^9J5x;o2^m0rNkg5<smIojI_EQZvy9{J8pkq_9RPJ zTWgh0dmMtkqK$8fFInGB0417TzxxMH(ctqlDGIy51V&01x-JkFB8sfI;~vRp+WE|% zCi+3_$(~r#J1!1XW%=ug^7V;Ka7~J!2AML%_StLp`}+rUwpso<@G-h%e<Ip92WPJp z3B=d_Lut92@6jwt-vKLY`4T+4Vqfn2{MbF3xo_)9oyzGZ9&VK5=~_K$Msio`3GsPQ zF3FQWj=X*>b`9f}&T32S>dN#wh*SGJr&Xp`#%5Fo*0CA7Dz^TRZa8MwgI?-a)M7+r z22k3i{rC=abvs-tDoY)uo+f`0Xj{z=$kZ$*e@Nf!M#63i*MVI)LPVIU+Fii-V7``} zKpGNLvzA{@;NV8i?1rYEZy(lwL^18<IsI=Z-4*Lz=hgApt+%b0I<k%g=9f>WLu}YN z)#G~%>6p;X?Y?FvfVE%FERSCvOTR=v$H$|6Fv30*H(3ABHx<PLyRlqJbE>W7`j4~c zFA5I&%i}y7AoD8KY~v4X&Cpsce4P;v??eq?(mm)Aq~~-ZX7}6*k*rR*8JZsU&k)=C zd5TT;1|Oa^oDUh@76O2yFr-8>eHaWAfmd0M4aCY<qmN=O!zCu)utZUf$9s!^h={^> zMk)z#h-p>}_d(!A!JES4_?Ht<HdQ4$5ni1AHJxU~O$0Y5QC6BK9*brCiO^#s>Fkd} z^os9unp649LKmJz$ZC)FB0vDa<`Za{mrN1Am6@@}(~HCDmmq0e6c;OBj_)KX`#8l8 zslw_}B*0c>f|C+~cd9aD&Gf>dtZXc*$XV4V@K0#EQmd~7aCXHn*jT-qN)+3sb~HdH zV!;)P0Ldy3aqPdEK5Fi{gqaeh=aZ7qw|uAX`@engM*2ALd%k;DpFE+Ac~@jEVBaXr zvfVgDz+xkGbEsmCcUKXz4jy1f48BE)g$2|Ihz6x!V#Ffo(L;AUDtnDA9I>X4YQ2^# zOoZnE#1SmYYu>{70*RM5!kt|Ep=u$`WAe%IBD=Y%GRNOKulX)CXJkw(R>VGqKJ~84 z^4>Vh##P;?J1xDI>3*q_*i%>2BX__0z~Zw96o2X}6?vvcUGFiTm0s8W&S2y>xRn?S zUBeYa;IG&~)K`d>(RD?}^Ey{S-=`4A;humX$bF<suudJv@V)B&^o_4%lL}yy3P93e zZ_HW`oxGJOo%5)!y|R2gd&j}v2)2UHli`w)SvtJVo!m*yBvf}I&Ja$PI4|V#v(g)} zlFE5mr7&`xA5f0XeDxaMW`EbZYsB`W0I&((OHMa{0XU)Nd(}-$fuynWuiG*E68LFT z+h8VW@UaUQN{(|TtUCu*cc()rSC`O*zYTa9&C+HD78)AzdlXPSi$XCrqf$ArZojv9 z6k>+WI(Nkmk@L;&QFb3!M?g}p*hx0nbf9+j=e!A#@8q7WC5ei*n6$*ivz%uZK3@y1 z-#yy+0kHqn_mhwP{cP*0x3~uBMUMe*@m3yz!@TfJZ^G0e^xbPZ(<Pm=d<Sn6KJ=PS zCLxh|++9zQnR=)P8SxKE-C8=wbKlZC7yaF8oqsASme(ltB!e^}1(e+F2HCHbV{32} z>?d#}Fm1d}IoOp@2}Nj}OpQ~Q(zMwJ;$CF<BGg-HZq$o($$BorEW#+QY$MN!hF&D< zOyxmyjL1wmtvx$9GdGa#rs|34TxX>+@lytIYNIMsGM0A^NUls^`JYymUK>mI#WHss zCUtf$1<&O2@qK_Cm*Wv-iU6^NzqXh+Y6eEu5%D3qMv?%3BkF=7675#S)gbziF<$4I zyNPc}_A0OQ`K{iF)DZeOV)jrXiN4~EN)5qcJ8JgOF|08{+Y;t&6Zfxg^*Vd+b`6XO z4pr!23dM(VS8<Qm*~tz~zZ>sXEFENS;*cWbc##*7{s{uZs%qx|4`02@U%OYm&Z~Pz zE3Iya#UCP|;AZcn)mV$i9*4EK?zm#FYz1$r<LLV6)Ny0Hk-;MD#YHr?(mQE|H!@xn z()$<|?KtLVmUoxj!5~s|+4!Y9z2@PdoCTvqpENY_kcA%<X-}nJ0<=Z$qOfzBy<3QY zdWayF78p^X;X<cDa%(Jn<1jsCH8zs35zSt%sM-u(o5h482Z@NUrZxo+nMUzCHZ8<_ z;kzCB2k}uP0)2Sh`=Fg?TMmT`t%ER@ULMTMhZ1whrgS2IHwL}dt3X1!d>q?aq-pgF zBNF{qzv#HAz~#o2DyTm6&7cOOr&6_Mon{Q`HFN1Y>D9byBk;o<u`}uKFhL9{?E37Y zZTj7&&k{2IKKuQ(8>eW!zqkJ;lm--Ba}z{@+(#G{bnSkBPo%H)+=bR<+r7}a^n!pm z0ytmH%=fn@>*nG(vJAvKj)bj%jyr@!XZh;@KJiEZ!*TPSO$J^_1YS&{M-Dt+$(^f+ z6&SqkSq{A6g2L>A0M03VqK<{m`4vj4I8hH+^}L?-Q+vfA#>+BCUJzu)@m3eEj(g=! zGs`tI-~}7y5;C|3i4GtgW|wi%ja^XczL3C3EK^DW6+YA{(}>86*Lo#9yDD=zfmN|$ zR7KY&GXFF#=H0hE8SP4Ct{OMZyRS1g?7d|4pq>)Z<=%a5!#ZQ9zZYxzBsk4`urq!- z;R-*|7b#fQeQoh!y{C7kqR;YJ6@7{Hj`*;iY0Z7J!>Q;R5|h!xs%ctr-|P_(#My(r zyMBSj0D=9Fs2$h<<qw>Qehp&ULM0Yhv`!~ZLh+S|06Te@u~H%DnP9`9(4-Y^bx{1K z6<Rsc6bbhfR8<I9v&R++p|yDiMf#Ts0#6AE-Q+vOBO#?2jir;Qp!BBYy84@Cv(j69 zGqB2i!Q_@dhSk69``?EagI_nI5tsBoU{kV*EIP^%ZBAz9Hrj=7b<SW1vo{Ht5~tk0 z85OxW8U?QpkApviSKF3=gF7}xrnCfuzIwyljtLiuZ>+NKE%0UNlu1;P$ox(W*lMDV zw^qTSBF|@YUo28T_|keKJfU9xbxm!cm~VKe@e+rb!XemFCvO|n6we%1;ooPoKly@H zM^US;SRdqz(dzR4>S|ZmXAHmgxoiWU<sL(ks_OnciowR7uIAs0HYaVxo|4REagfp1 zY>F9o%q_Na561vmeACe&+uZ%%fb2C|SHlBA7NClwK=v=xA&~tcKgMwdU@-$c1H|0b zcw5Atx<(@~xaGRhvc;a#U}B~v%soMZkH&%w7pdO{>90oO2@QFsSKZ9Z?Dg;|?y{`~ zg7Z80>xPz%BdFN0jvEr*%^k~^%>D{wv71`j_y{eMVmF0`-$o^F53YUQs@?4ceJj-= zEbe|Rzkl^2z0_oNYnIsW5lXse4tk{dOzix&quWcgzd7y(@8<oC^{hTx;rSJB#wYyj z^=7>0O*rT^{g{EWNh3JfODrY+v?Z-YCs2LTwwKheEA)IoBPX3}6>3hp$kJ<Ga(T5t zq}N+;FZED}eQhma5vxs{;2Et#{c?eX@Oa(~wu1`yDq$8WuZBNG4y@PywLN$4!0kpe z)tNHoq-t6tUxr@^np3+s>b+(c@9e6pU!fQNZw;HwE9`of+&8T*M7qw~zwCn>*j5Yd z`{)tzqM09QK594SzR}+<a2oO??RnSq?C!?i<O6%pE-#YxVX511=8X0xte7)G6)!(R zU!w2t*7uRE9D?v>aOZUIcfLpO87Ux`@D>9YavTHjB2pIeXW=Wg-5WlOWcsgX?!Ku3 zXu^)#wp(wf9W7Z9uG(a922hCq?_-+oFddifNet^2rnTkc`hZ>Mj4^oCFQ;`iN7bja zyl5a4G-#rlIl4lXqg1Hj!iy_F%-Xi^q`e8RKt~JkBh}z1b&+}FQ>r6358(Cd+Zg}w zxf<Rz-MhO{4aa6AWt%*7Rr*CUW#~@$L8xgGIQ4$vdop^wuE!6~M8JM~_US0}Cp|A| z_>Jt}lbgVo`*bL=z7Qo|zJvn5S?LN?xB_$Vg&zLgGRVg`@P+)0@-tJv!7OC|<GVt6 zDU$s4YyB}Tl5;<5*!*-KpJm6XvZ;EUGd_{VVP>=GK;(NoL|M`0b0&SgqD_4`qCVP= z(B9K$y0%MQ+Z%yEwt}|l@9@tnANOqa?cEjDw?8PqRQc|FRT2XOR~1gZ?3cko7U^Lw zbf1mFOl?G_^9-jjgE~qPC_O69F#lrHK!BK)eR7KJPENoTRb}-b;=oKHr@o&-8g>7I zre#-huFDcuC^QQk#L~bjq<V6#oiUU#p!|i3F(Hjpjp#yJt{bhI9=8J&)c6Bx%syj{ z6T?BR&;xNS{l|CH^h>#4sa(?qMfqOX)q4}O-zFu!ExLR*z8zEVr%bv7v(^cpGlyag zgvl?Vj}z5&_zbIRld78Rs(PMhoTupQe%i@?!KE&@)D_v0?)7QayF5FDx60`2>6Np~ zFpisd9F6{)YWvB_MT4TdXOF<Ic^htanW+KhE89#esy@{m&CVV{axKZU_9lJ&M`Z$+ zMc98Nw=Y`ioK4jiDM-`3vGklN!}`2tS>Y7GXO)g7FSY3rkRGOx{^PMxzx=0Chrh@m z8@Bn{x9!>EZuh<3@hnTGD-+p$w;ho%E&JM$3DwybNU(dbDL>uL=NuSk_CLbNcrC5O zkkU?3PHwl3<@x?_quNHv`uuUQyG4~#V(H59tT-XyQQiP5iEQ*oH~rZ4n_rJ=QqGzF zF97WS(lE<4neIZ5!|~9HE!yz2z7J;?kkz#RcupmGe`pKnSX#D$B&K(#DJm0PozM`x zDh_AwBwfFk`=9*CeZou#A#fj<CS>^V3-UfVoc#->>`-Js{mDZYf<a%G8l-`;=8*~@ zEZeg+d}RRblnQftHtF7_?p#8VY_$Jf+wW|--ZN9{JJhv(Dki}&`-`Ysbx^$P5v~w2 zzoZ6L1*N}AX}N69bES@_6fQR`ufJ6x)k~q#exYmn3pp+3=T%6pP-s74$W+tWR>*7q z0fYB36IisKhlNIplIh}Rj!&G4XotQ)V`iCS+hdU%#lX}$8H*gNoinISJ8;0uvLQ5w zvJZQkb`(YXyo)=V4h6l%=lu=P?vww^^rrm*=XGx5l>faA5j@Z+7?<{zoc2cF#Cde* z<c%q;gRv@SsM7s+o<r=@uIu8xoqV1{ketFhK`1_ObzT^3+CSJitoMI@VUY3{@lT;b zy@V99uuz3wEJAxBB^LCWf9}^>+_c~KdGD{|LW$8A@lSuPO1W4m`Ht!(6dRZlE1pwD z+Jz-g3)2RCe4)h3i}<I%I;C8!ltOh%i49DNmEfnY3G<q-L-PP|^^$JqzS5>W(leKL z#WLSH=ros2hX-fIn(oqD_yWaj`gQS!7kLv=o4RL*i*d(yI?OGaqwCptbnes122L_K zJoh?x@gB5yhmTW=bsetI4j~>zCu+m?fOlP|ckN2-cfrA8C@6ZMx~Ogj73XtCDq%DU z$|w6ca?!wCx5B%2xi^y6(Y*S30rCR<c>(gA<}?<4_tr&$&9Nv^nXYA}CZMg;<zs_i zto7ecU^vXnub&d(lVM&cps3;Mx!|tIe-8N#3(?<}<S}i9kBLevN(FkT;0OfdT~*{K zYLIT<jk3yC3(ODcM1cHsGuE;`99Z9HwGoT{)n?{@3q7qH3<~HU(HJYA2nqgTBL^T9 z8q)>38hSpB>Pz8JWktGv)B(Zr@}m#{^P}pftWAb%jcM5hjd1+lWP!<ugwQiGwp4Iv z!P$mLBitNmL|gl#9T-ZbAF<;=ilL+?<=?5<!4R`7+{goTrAr}F+(bxlFI^gLBZCKb z7bgC5)Z0gg&|Q%FcvvLbEHVA`+?&9~B6sb!?>PS5$U}Nt!TS^P*Z{Z8ZX98I*g8jt zPc{2_s0!h~-Mec8pLi4SCGzfCTu#5xDCm%=5XYOa-&?pDQWx_kObL5;=@Eh19nd(k znH6g07S{}mN#y>2A;YgwbtPeIsGYCXP{h0I1{&f}9rt!}7S=xx+k}E6`mxviy%Sw0 z9P$>c4|k2y24n)BJKn+zd1P4E|4B~&ko}KC42?!q+>L1AS12-|cL0$)c&7e@FS5^4 zI(M>a%by4Ed7v2I%v*fMXEwhv06Sadk_t?1YX5sk`Df`JS^63AJ`AJ2VEC_RAI<yz zW&p?fJ4%aVHM&wq@jlf{m7n(ueZ9X>oyoSw`}&wP3LS*Hs-~~HLIjIxHtcf<U0Otu z@dTsGerd7^mtW!;VQ&m?QkXw1WHBGj8*WzrKSVgu5bh>DdnHMH{&xS!8kM}ZqA)T% zm^IDk>+po~D815^&i<>F@|yqibIkL{7#4nnU`4dwmW%`}M}6R%UTecyvd0{5I>0Hf z$2gHI@kz}mIHH8<)aSto$9;Rei#yWt^=Q7@iau`5a_Y;+_Yn36biNE8WGKBTIQxqn z`BGAGUf*+3v1}BjmzO;0xKimwCFQFt(ZONK@;cjSK2JNR;0FPnUzNGlXDTV(=v3rJ znm3Kbq$l&rONK$lJxH}@=dEJVzFS|zpPjqeXE%sM*?<~)G`2=6r46^}t((CI=r5$P zH25Hfsp#|bC#wI>EESbLZa{(gWtR7lQWxewyGxTUWQF`lz-fbCNx;dsLL7lv1px;$ zFWzcL3phA__#p1}E?(aBF#^uAFM}Jsf`_VRu8xv%98Ghyj-H&r9|Qv;yjC)f&=XFA zPO?-vXsTt&vv+B&nS<+|<6Xp-=g_bL@52f*&ZProoc!mPYI>!1E>x%&>FoQfG!#e< zOiA|3IF}BTaSF8-t5*K$uT?3RD<$7iy@ZkjQ<6@`xwIhT6sjvxb^Oy`ol-7WN})QX zBnPG>OQLxh=LX3*PC}K8^B!)Al5sjKGglsr=?*i@d`*W2UyvDVywF?tJOG!3L!HPr zCg(7D4lfM9Wvv}3={V`8#H1UWOD<5!QxD7mCh2GvP0}gBeW?veXPtK~MyB!-GgEsb zN|0nyl4O+bjpP+uk~rfk@`jQ(l)SZgeUUemyrKC#q@0wb96t{!hga5ns507d`{Kan zxTG9i{HoO>{OcEVU}0KE4*iz8v$;;(5Z3{fB<MKwyKc<@K}V=K%olWoZYY)v9hK$_ zI!a#aV<pcaO?Cdg7(pkFpp#iEKp!RO99^FToukv#h7)xD+h*q9!pbiU@F-D7oPnz0 z7lrO0k65GT@@eP^P1G4GQOAM7^77-LTwz?=VK_#QFwE}Koi*2GuWvisiQqY84SO&y zsu90X`^ddJgh^ic(y*PF!+S@##22`+gvs8HG7mDNLKrOiyz*ss^#I?Y@(2SyFmacC z|CpZ1Zqx5+&HSqw_a!Rgu8*CJ+_BYbPJG^_KSaI=+y#rq;w|Qnk8<J3nF~?L68QpB zr;J7l!kX&7L|1kwf_uqiZ^BNm<u9k39-;L(w)R4;hbfn6AZ*t~(^HGC##;&Y$ENPK zL}JmjX<QJIOtTqB1uj!jP}c);hduh1L<71FwgxSH4yR(9?Dl-gOoAZ8d%2+CxCGZ6 zU^*O;2pq7uK9}O;kW7D+%*+p(PgF|B&#>zyGvklfF_ggS6t{h13B#)sH`z-wQ*e?Q zdqRrCTTw1fxo>46%B6YtwO0;%HWBUi?n8Z*h~5<D0M32w@#6`;QF%Hg_o!ql+Katu zWo+2nm8Vk}i|_;OiSuxHo8~>RGCu6t*y(R4qd<q$=m9z1O;<*2SdQW;?vJBRWzpAE z7=xE(B^D8^g#4zDhs3-G+pXemwVjH-Lh<F5!!}t5-mS{q%w@+9U>bXkTH?bt#ZF(9 zjBcbTNm+Gv*rs?h9DD|XK$1W{s)Bzzir0J1(@0CC+jYbn@IdAgA8u}Xr6{`DyZCuj zFwH%uILR;=7L7p=J!#utq^7MSx`0zGr06Hh7PK~r5EN+R4QU`0A*H5MyC%t|GLF?g zi|5(9xb$F;s3uI%1ROTTV_0ySWb$y-7>~lY`c0MbE^epDN|K(vFdhFXV(|EO(wYtg z%*1j*I`}i{9*6(6*F070lnw;LiHB5QGE=fZHnWJj3hxzH4-D*K^$JpSf;v=gor}{M zb<kVzCoombgCn%4$d)y-QLRds!1j&d)^@wD+A!Yq`v`Exf8brbj$+co$yId_ZZ5bD zc`dfr_j_098ES0X6zFbK^-ul;&<q)=kLs!qp<{RV5G&O|)bFc0X;hyfW$6v0>h>0V zIG~sfBi~PXDmJwh$rEjst{Z(RR{mlvGe;sA4z=c#<Tmzl*zuZwJq9Gols##{#bom? z!mIX3T6uzR8Hh5g6Y}+*-cHmGpYbd+9pnw(p&>tK)8ch*fC#af_Ui68isnV$XKjzR zo=Yx-vXwp(E~Z+q?j9p$mDoBUZC$EQH(j4}ZX5Mb$21YoT}m3hjNOJ;j`lf`89zF~ zoeQCg!!lvd^dbb+Wteot;j9;NN8Cjh#z<8$rUEhUmQ&8Ab9maye2wnvP_Os(HZO9& z1zEtENLr~`(oIj3YI>%)aw#4i@<kaP58+`_Q&#HLxZo$=h*!K?P^04oR1}eCz1sKH z#cem>WVhNIv7b&?Z`Mmr|GayH_xdW5Uf;soO<c;g1>d{Z-{uczn47p0WBZF<E$16{ zlZ^LOY3igwUM<#+2<{~vD+XJo`e(2HS+9TagrP?F{W|IcVP9v2s`I87sSi67rliu6 z5Kgb5=pk?6-B?S3!1CM&Se^^!ai2eA9=CY+Y&P~i!p>&O8QPC{Ei>3PqQ|Uen)q)T ztY(}XHDLzRNuoq^19y&TiSlI^U!taN3$htZk?hF;;>;G>%!tn^UWrK_nW=9Q04}== z0}Nj(JRB?_l6^t%P@RWq1Q#N9k6-u)?ZwbTugH$pV`l1aDUAIFjbipkVKm}Ucbue3 zSmxKety4Hmse7%|KGFW{&4pszpI6FS_=vqzZiL%A?c|s7XzzeL?zI-94aX$Ww4c4x ziZ5s-5Oe+r-@<4|dSk-7m;;&+B}!-&l!TiO1@fUT*n!CSZxJxGVJhdKtx_&3E=0aa zg^TBCF;U8wbCqAh(a`>FQzmf`KfvDy=^4Q;D)zDdrl1;21wLe_q+?hF!*DyL3Q+W1 zF!Wr+z0Oc9+O3_^hIq7R_BYfyC}u;4FZim>V6#%Klfi|GKG8Y<@BDI-!J->KRcQX_ z{Cv9#u{3ype+3Wtz=KF=HUEjfK}Nh24K4-3x&<kyjr0mxY3ssalZMhbeX>|3ek3!& zW^IuhdER}3&fB5Jh;E%<UFl62zx1|u^U_Cp8<n+*blhbAEL0`DW2y`K69~W<w{gX- zHMlf;b^wf`HpyOm6y5s$-%x)#2O_r78oTG#AM#7R8&c_I)*I{P47`KVYj>aM@ONN; zes<fthHI0xI{E7$mQH5s0y^Q^HNw_Noq}TcXZn<Z;{Tid*Fo5Pw$fEO1Jj>J!YcOt zf5+dLSgEMA1PdLys2(g!gWJ~{Kr6OXrQeV&sS=!Sj-}V_K6SwQiluR9UmoP35#}bZ z^{12)=uVsSIzKm^GHA{=)7Ekd>9j!{YEW_TVF|_P`f+r<AEv=E72@u}Q`7HIU3Tx` z!K_H9=x-B`<bz@Q0O&$j3yQiD2X*x#`)9^UKYWmTi@$A}p+;KE+e0}%Sd~6lm3}9$ z<q%=e*mM-Fjb9CTrwu&?b-}gCDeqKVy%s3Ml49v+caLB`2af->`Tt<ZdMaEyc-ov@ z0>sI)w=(vV`BFvG@0i8yAOAyy1OnlMPB3s&l0A56Fe7+P*9{DusejAM(~{fUsLb_{ zh%$O1l#joMs^a!&N=QSod!+nN|9|yw^k?_4?yvUG!K*60PI#r>3Bm%Iwm}c`p6&j+ zD65Mj<gZ~_cK(bMA#hKlY%2Y3#g>Y<1?>c{wrn|-EgA7?=n~6d_=qO}BH{?5zKiUv zouURV;ZgfZ0YWpY7*PB9-F*S`WfSyc{;doCoZZB7Z-&W%AXS^U@O&5*0wR7B<J&~w z5CXM`0xM(Dm%Ucy>hrpvN`Ja_&g1lAtf~qH|5*uo3jf4w{-(-#bt`uNoc0u}c4D$& zJN~Q0yV#yxTU+2N?Rv~i{T@-de6Di-sm7FUwv>I@iM;A+ht?KBuK~CHiY*2S8a|~6 zFbEvKc^ttc@~XANfW(QsdY%4je@)s0lb_Kcgk+tBD{4H6rj@~1bi3Dj7WG>HmzoQ} zJL%2IqN-~8zB0L}a(c38PJ;Dll5NS)NL|NUi3IOZaH$HRg~ID}g0$KIZv>U)foElY zmL5s~5Ner5;Z6$U+L|x?BJ+_ioF2-hwc_fyb6zWL@S-96YK8zp++HIq)nOj_E5$g6 z_4RC+y+#0O^GzVOdbBv{2p92A_SJ`6SwPEnXk?io230_avwNyB;6%3ryu$YoME5<8 zib5d(M`QeJRfv3hi=Rh$k$Xf3pX<!`)BHjqCI*l}a{qUyFLfX-8~WtFWTb~d`tLcD zeRO+8BMl@Pw&pQH^_ZN|nSGSUmbZ~O(pj$HLf2~7y}XvfGa{mJUDtCCn&>I%_xtSy z3Y3#erC$Ls5C6M5b~yVt)Pgn9+zft1n#}y!WgicA8u}G@18VxW%~?TV(YOffOtCey zPhLY$8VKG}K(e3xmqW6P_%$SRoZ(13d-X^>JM~C^5lFeHTr9fBYds~8Z~v)~@aav$ zj;jXXTb1x_u#l(ZkvzVQF<ko3PvhI*qw(#LG{HYMfx*oB(fGC!m>2LZa3sF@h-O%0 zNaawWdN6<z_l7hJCo~F{Ytyeqe(*E|J-|p|*ead?qmOGW)9hCd3<ky6;(=mToAF#9 zv+Pswi%-EXJ_EnTd5d)-TzK`3t2K>pWNZ0_I+}k4(r<3kcKnW(6!7V*N8#5;4!`8C zqVTr#^vqu&=e~8a<mox`l~J<(Q<0gj$Z!=|)n7!(`64>QKrMZQam@a!74cdiNKmvH z=ES?y9Bml7Q?c8FzOhJi|FrEe8l2FOYac^0f7|d$q+M*FYSI5n5Ol)l`>C|fRh;zN zqe8G=5DQh45irPDsk81?EfNLkx2B=t*j=9IhdR6%kIn;ttxKt#HjnC;BnMFF%;zr2 zjQx|wmP~I=6@3e=D|Kwc98lR=X{(_rl*8Ire#@X25mJ(`B{}AY$aD&da#jP!a4K;5 zSkQd(BhNwBKQ~h%f?cc6+aP>IrF50!QC2f#Jut~0aFxr$@P0p5E42vz6zQOH9G?g> zG93@`v6PXITsMPr8$cS+1-PXpPik>oMYn74yE9K~QQ{jtLv}<bF*5r~{4hO~z4fV- zZ68o}{1Ii-gZr1pFF+_r@&B2@H5O@kL$(RlEEe@FbIz;3)H;x3ML)&012Y}j)+_PJ z(VV21>J+o*ExumJ4gVJcB-3x_z8sQ7CVqtJkD8!RgFj@=ESfVV_vRKk+2-|!nW+`T z>@pg*W8dIGx%Xc_Vt>c?_bR_r`#<G(Z9XDD)^(gFJ$KP-N}dLELqifE8{=Ww61z(? zgMS}tkO@P6E-bw3TO*ZHH{=SWAOVp5;kaBAQN{Fqzu+kob7@iTAGRLR-Z!=UStWuO zZ4G~cN|=FVHpg7)v$6$E5LffaNsaH98ANz^+-W2t+vp3b8x%;_Nil?9eJ!q=E1*kG zYDS+8>KT?&e<@NT8v(g7@>kdGTp8<eZ)EL=+<2|OVI!?U7ts+78b76r2gvWPpJ(EG zNnPLz8i+{t+P^ol?-E=^R57&;&Pxf}t=msaUADid?v8Gq^Ay?3Yz?SB`6RUo>ikFf z>t*f6YBkOVE)4J{xZ%>M`-)N=4XvmDEK1?(cS@=8oWnK)jJ%B`z8-QSJs@ZUhWakB zn?$G)?AK15`jlgy1RzGQc6j)s!Bqel%(uHQq0jN?dtUSX!?lTB!OLr2>s`DUAfOX~ z+F(#a=n)?KN8j<ABS+7Qv=!zre!6b2?yhDA3`qG}g8{X=Z%qsMieA3ffgIl?z*6l5 z`0U8(Haq>~AklzdYK=Q4DH0)k;Y0ZYcO)0hk@wRsAmZo|MuUui;b>BVONNUoA#mo? z3^fX!v=A`>qOl)<KwY6CA~cl7Q0S1!CobAY8*zcQv{H~8&(_0GVauH4nE+CXyd*h5 zFEYo`?gD)gw9^5&`7}pgP>ZVQiGERAMgwTeZH~5h(}zF+&T0D>7Vu_)#ZedjHM3A& zkTbHfJbUitc)v~IODABse`8%7Ut@j$;vKg>n?4D6EnVQe{0slWufM@C4a-X2^VaEq zM;)UbiB?G>b9=Dqb=<?=K}Ef->Gh(h)GT|YX30RPq!((W7>X8OwCuM`7Xi`>Wtm3N z;tjA&UwE`-`ofa(y#rJ%dHqV>o}9VlAgUHASu$l`%iE<1pOPuDna%54&OVmDr8^#7 zO?(4H(0py2m(<wQY5K0s50i=7e4z2!tkYg=E1xOz*cNK9_2zv3L;8H7T2Qt5`WEJ@ zC?Jj9UwS$HvLRP-B>lDdn5g-{1v7Hge2fCP`T4ktXKtHD<8|zbI2A@EZfE)~Hx0af zroPL02*88~>bstlMoXL-eb>Or0QmX&@bz6~1%22582&fE4It@~bY49`$)HYKN2sg> z^o?HY1p~_JylPY@gpMqUwA^3lA<G`9Jj)$^O9*fLNHhjR-LtNB*~gqc&F0DMX>7b+ z^O^_gq$le^n_?D!uU4FFZv(7th+e(kgiT)aFL#-CRa&lpfWI2RDK7%W?eq~O6jmj& z@lD9V{Ghi6Jurajg&nVcOtwW(9zzbMHV7obLiY3T42F83h$?;(nj!wb{%4|nk&f&j zvbZ1&S=rSZvRd&&P_6u^R$pSaT9Khc-r^#9+P@z%)1F!Nl9`LJ&6$HlXYTI@`|<|E z7p)@VlPr}z^uQ~3`g$M;eMEd*LLw#swzcpyiQj70Sq$QV-b(K6Yd$~~Km!TlObM4Z z=lhYao|Zu>qO+ZfXi}&1C0J!^u)0Vp44rgnnQb0yizC#PIjg#0f%!8no=GY<tNk}7 zEjtJS_+ggg_jwm@RFlPKjw$=Ix8NQI3V+51Hh#TwLg}(UXRZijX5oqg-u3r;b-v#m zLY(qnvK!Lxtm`+{v_iiD1AeRiQaiH0|3!Z%SXcWETvG<LuPjV-zQssgW}30W)vZpK zJpl*FTesHJ*-yNSUoz8CQ~O{oh&2=`C`f_QneFOB2^KiOT(G`j-O`bonjJp#z!$XC z6vih~x(<Q4dM7DiS>ldYZ=R#0IXcqrEocH1bVZx>9%a3r?`Ruk-b$Crw6(%ppgSA# z#e8@!)RnW^I8Sbhhr<>S05xUUcWBjCdZO17gepq$^)UD&QapxwvUereVDq8{oBf{u zBI`u<TmDO*a%TE3VoljA{g+0)T;#uK1!tqY<f7}3<cB8Odke3E7_+oae8Bgr`(<vh zQBOPp4UBT&TX;T&KJ8a`{DW*y=1@L&CizU0aA{TUlUI%2=-oG7=DtP}@0z~Vxgg6B zdL;8?#j4!#_J(}#f4@F=i^V3<dk^I|<Q|2QQ=WI5g52D~yWwu`FRpyW2D^1ki>Dni zVR!N<`;m|9{g%{Nx@3t~gV4=ea0h_O7fF{qh(*fQ!QYt_Ve8jl2cL=i!6ky&rx&Z- zyv8f9W={e8n{>X?AMq+Xk+r1oHs9^n9irB@rxEm#9NXw0^EB#5K8ej9<X%l`#%BP; zy<<>r>c%7I_o(kh%lLld{rT_z=)Nbq6J0AE8_xYNDi|Q|gSG@ygQ7vXr}5=HW?OHz z?aotfnYN99s}m+8Lcoi&GvAO#-buvtktF_AwvpvA&M`v;8X1)m%|xCj+-kv?k#cA} z_ic`oE>VBz#*ZF4lE=L8|B1)o<UmJp81i|{6Lj=Q9`h~gHy*Q;EP72@8^IXYcMaG2 zseg^zi1k=Mr{{jc4zI8u1)2PPb?!NiC^Nr>_xt>J;q#}}$BWx@aMY!y=p@=^GQG~( zAf_>cXt@P4(F<w2CAzLdRN+<0Sc;nCdUcXltY{90R@f&$y_WX1F=o{Fn;{!OJ_05s zFbjy@Fo4oW%m$uHFLhQ>?vjy=pQ40N$18Uz2=ta&TQ=X3>}{`Urd=%n($y|__|-8E zku5+t_Qz7YTb-1*IwScyVV~;1AxR{c!!SEQfAu!ewQc>^<u?+!{~}4Q0^<~=wskVY zldeeWA5j%^SVYjgyhl7fl#F)5;X^o_B%>=hmR;P=<y=6i>A+BL;psf2(mR`uxLjbp zck$|qHo2P;s}@zmlrZrr3A>>P<ByTTZL@^ePEH9&KPH0efmnJ<xN^}@*w-vVXUp|W z#F+v^qZGTW4O?z3J=BDl+24-Q!(dAr5huJPPf=9emvzLDK7z4D7v(c93g*8oilr|K znoKq4t1<bwr2AUlwoi-uKP~3dV!zIdiruGt=bT^Z_&6d5JxQ0a@vO>x&yP!%k4cu^ zhL2&(7P`?_z7E$yZ=uZR_*7gUo>_tQe$NKnnrv%9n!D-&--`ELiCGwYC#3>72;A)M z(;#aPS+jQOpDly%0=T7QnD!)?^$}lgz~sM$-&=48xB(`w=k2)T?8dfI9vt?bcS{g+ z<}Kvhz>d~RvI{Ph#3^BSJL2z&y4@fa-GA%P@wSae@erD{8a9SB%`8=L;PaKi`MFB3 zLux70WhR=G_@d)%if|Y6lIO}9>ax9Do|ry2zUcV$I<U#G%1fS&D=&HPrO!qVk8zDa z>+`GBzy|JqpmJ5YXadXah&mRX&1I<T`af29nP_|ZY_IhJef*GIn|2IN23Axq;(BP^ zXqYSu6T^3=cbUVhWS}#aCTr2DoKGY7L}Dq-@-A~;wXyVxxyz_0ukX@M>gpG4C$;89 z*0*_Ezsy=Y&s`tlwfq||AfvVy6kfdUd5-k|gd^Q<Kg{{dw~1=?^fa>BTEEFNRN?BM z!qe|PU(&}sPJkV@Cuh*i?)6_x+IY=>F$txY7ipq<?DxZLx1VX!$1}X3=V_!J{g<m( z)I>+#TDHu7a6pz%x9G;@1dBvZH|EvB`NM&^F?<G(9J1@j(op!ywo%&-ACBf`e-0YS z@k29|W~M&f${4op;8QdwJ^-Tavrl6k&i)*gzd}BDe6Le+8u^`HlJ&lLH>z{l+rNjv zV!G(u!X3_egqSd^5XiLr^DA7q0!_fxNBX|XMPr-OtKGzvH4A4hdx_a>jx8FyFumI5 zvuq)r;h<Fy=?fKVA=>%<?%a2~4j<O$w{<$Q2D9>O#{P60bH}XA_<_wz+dng+kEaF) zo#*!GUh`;IcDBmumT}5PT-p0o_BqNzO+B}BqTh}5n}p+X5AQjA*it2|l*o@iG&DB` zo#nBMztnU1uyX((Q2ZnKoQS><Av66DmZkj6AvNXkllo+ei{BaKNg9RtLJKdEh<40* zH5Wq~l?m!*I+~mC1~7Jr>Z+p}6Q+W8&LG|#v~KcGe<eM0w&l)X_CX)<6#gHS`y%h3 z*{}b;Kfh(1g|@xZ;y{Z5|CRQC2^>%_PNVHXxwBT#IQ}GBZgv(5yY<6*PA|{>oMW6v z+!uMHxO8)vO&<C14Ht_ZKQLTT-Q6K@1oK_!HU{NF>xmg_NhPRS>rN6B;g#&Ymv>%6 zLl6?2QkA!{?(Kb-H%@PKmyEE>m<ZT-i@3KX?rpq#6Wb<lqWfqvkCS+0qUY)7p72tB zfaxRQI+Y;Tm7lD)$HU!vdpyj2-zxNY_<DOll+<yknJVL`8Xw;8KAhr8ICY4w<0w(7 zX1l#StsA+f=^ggYW86L7$Ya7i-o#_deW2iJX<fIC&Tzo3U05gdcB5;J7?*l`+`Y}x z+idR6d^|jtM|#XoAHdr92&2mb`e7{_9v%s6ab~VQ)bz?HNJ)?J;<fx4g;ih;!c&CT z^vCx2D<0jwV6+sHUZLf7>9rgylBB{Ne`wL^>ch;CUHCVKZ+LIxT_N@r)e141#Jmys z_kSna3?b6IXU=)&dR{5g$OqY|@^sR8rPn-avhx2(L^9z=yPf5?)BVD?P<EV(+Npl8 zMHd6h<Dk~BTFNh~zR#~(Brm%yYE_%Q#A`0r7cdCCq6gHRU86#NrJv&jG(m613?@Wj z8Kp5731vCP`OoL_%Cb!`D*Xo_#yBu}&2LatUj<d5(J$cL-=WWi;auj}Hm>9D`@@sT z^IBe@A8~N8jU0)B&0~IP>XtUuiRgmb1vSlnauEzlh^Xg9KBl<l2wlK#c79#7EO0(V z87^?6DS$bS{6dFq#*5Wl<V7Uhvv%EQ8-&-`Bz!_|5UC%r>x*a#?8Y{+pPctk??^Uu zdXKK5tJCaT`93_Wnd(vHc6PG{??JGXcf_Z+wU`^}1q-8_AN4QM@Gf3ReAp(q6Ih*q zzaOXk0K)P`k67pWRHF_>X5vG+c<L2SK?d(47*jI6AyssLI6H)F8hVmi)kw99bJJSU zBjG->s?vmOcDgR*YPR*hgkPfhH@UOW?vN01GGm;BW{iF1?REp+4(iIp4$|jo;5V=U zk|c3@8tz6dy?WU(n5P8!G46;UP(VBk+NAfFw+jq>T1J-k1~Vzlc-4Bfk^(#QI9-qU z;?Jx~Kbs<q2TM+T=U5%{JGH;isabrRez(w@Y@s)EmErfmkM!AS?euUfI9(dUiyFV1 zU#1fSTjYI)jnjDb3NM0p(TF`>IfRUC9l23RL|$i6KjyABO5>379y>mCdZFP9VA7_} zsv*{{yi9a8Ydt!r`Zt-sd&0$5%ST@4VN)?aY_ErC(Nb_Vmf~@VQp+)L@oTd_NC|$! zkLme|`@^rW*l`}#JR_QDh0e`>^{ce*=W(RKYbnB;RQVIRd(SWI3wS3SU39-ZQMHIE z>MdT)Ev%A#v^?yNpjSjF`WN<Q3uk%1VYpR{NGNu!g`R!%oTIuyxOZyV=d~iw(H|#G zXekOQ6PX!aC=n&f7AF|o{ek{bfk*xpJZd^L#9R0ao+vI9<R&<RE>!U(u8rdVusgNJ zdi|p<P9AVwB;VQa*>yy85Wvv~Ep9C`COAvRN@X(9Oji9zn!k?4nm?3R3OZ9q0IiR( ztzrGsR9e_=G`RKqnUs<IaVWQW1v8+I;FU{VAMp1{)8Qg>y)}in%=R+5)gPc*zvVtk z3C%vB<&}mluC-${g~qB>F;Yvv6`WJ&+9~GCcg%BlKm$jO=^Yy6M1!Jg=EuURhEELy zyez%4n18B@nOdz)wuG9(Jeg#F1)tOk)x~#Oi}I_}GL@HlpZzWk<6o(jv&_~AZuRF@ z99D5nF8cHF!|)Iwd+I`DaemL4&#yexM{FgQGiuixfT%YD4R&NmgR*Mb4%XwL9vMEv zzNqff*9m*pg2Mx>7C_e@@@jXhzOT3(_OJCM*HOA=#SP3D&ul$w*i_c8@<z3LS7JiX zc?9*t0;}b#u#DBKi1vz0eF@I=qf^|eM<HAx6kd^>ZZf!HFXgV-I}g63&lda*T05{& zWX>!1!BFnN5IDeHcGHy6{2zj2!)gi|jTf@s18zDF0&e<2cx!~9A25G-bNGmBoJ^R? zC3b?h7?$Qi0F4I<Sj3emd|E&xrW`GHX!zlK422DK4X=(h^ZUW2(y}yDKczKu3ESRv zer)vy0Um;s6S9>(9{5Pd{r#0n+c6AP5w7uMH95@o5l@Uz({xCfek9_twmyY;*+TQ< z7kjNu8ehX|_*WiMWrCDj&NRotiU@V@$@e4QHhc7=@Se47c+bKei1%2xfaZWz>^2fc znFWV?fdhKrv@VYx6ZBdRN{}juA<b3Ag8w}xq!g&AI9PV&L|{FT;C6l6r*u!L3J9oi zWZ<W@1Jj-ir6bs2N2);S+KM~8<|{es>?mE5CyI-&p_YQu1$a{9Y7bh6q_gWu9-(50 z+7fqo7;*wTdVc?C`y(Doo!ivsiLX^aIiR+kzm5E@#tcP}K??ycCn8+m>rt@R?$oq! zqQChbSML=;>VcdAsIT*gN`}TkZrZYXRA0U>t4DPnQCDzIobFr!jj6w|*o$=gXS8d; zl|5`j3%!9$9@!h_8^0)=6X?+$qE2GdP$%tgY%X}M*if-g!8#1K08Q&emu8BSi#`zs zfZwIzahi+3b1JIo5Tz1}mC)#oC>bpp72?>DH!3w60>J8jOJ{F%{H6`IPOn9$@<e0A zdcuy%SR^u4J><7(5w+^!zvfpIt@Z<>O7$$udX!zFLXP^343>JM<E0#l=m?$nxZNM` zE%>gZBy-haD2a6#N}>)2_CrZ#DZ}C?i4F(_5)Iv&1xBm2f}%WP^KOWs6`PiHB|zAb z(VCY6d&wWZ`);IlojG+7Ajz3736uhU&>KDg()DA1Xtq8r?V7D_ZB^r>>yU+sMT=d# zgT)fQH<NHgW4$%yK@q4+3sexMDtZ#wi&l(Q36D>8FAc1JD`UXr$$Z*`h%j5VW5}a6 zva~V&!TGoQ!z3u5K43^91;j@6C))@>Ju8=Y0mpHCq%5APy^P~?ZUy>H<*lUPtTpLw zwq;yGHEVN;=>trp8nBJh_9we(ylsoT=I_|jMyNWv#1r`vTmqWk5a|MnM(4iHCT1iV zyiL{u_F8^f%nWkkCKdR&D)31v@QJ#sJwhtL4wNE^09%28+axH>5Ix`v@cc?}&+X}t z%b3^4P|d?+A=HkcHtjyO_slIeceOYfY|xYe&*z7?2tT<gWIKJK$!dKEq+vn9&4dcT z)_8$}4UpAL%YO2=jDnr$E%bOwaIxbtb`uq=2zQkL`yMwz821}HnqwF&8JAiATmJ4C zgzL<Hxz2niXr~&L7PO!a-zgShRlz$fihZJzOQyPF<=mz-%N-!>umgl8zo!%=^}yiU z>NE&-p39BB$UWhQwWcEMe)z?~<4I*3<=~Ds`PgW@9Eis!Oy}(ed->o!DDlukzo)ZI zt13C3+x#4+D&W#h)mn%7g(nK6I@}_o5#8nkY1RM(-MVE@G;O?HLOZ3Ai}qL_Uh4uX z3+(@NE^1|RuP2wY-fAk9USDLpL4c?#?FQfRcWP<7R!b+{nVUp;!(?CoOXkB&ae;Xa z;w4**Wn>`pvTIjSN<NMk>eI53q8Mnu1EkMPz4R^=jW?8w)SU+Ym_A@2_Pgq{f1m_P z39sdN?6f+jI}@vL_BN%mgeGQhvL_CFsQK%7*`4^T`VuOl7OlQ+g6J0N`%<C4u{_zH z<@>+ZEb1GI&*oB%uIwNy)oe_=khnX7`!uLbK~7CTQgo2wGA0X6l@fJ2MZ4nNC%b|A zc4Zwmh;H>-rAotVX8h80@0{I$<*j+aK|cl;ZwiNEA09Gy(<|0sB+E=aKo0um3s;+A zk^J4y444mFUk{?>R<HkO62jhZ+WNwbmF4NP*4GAr-<)LthI~>Mu*UL1J%+rtz@&s_ zMjs`CM?NV~e+$oD&#uN|48H(@6hr55M;#m2TC^ecay!H=yH=86>9=4@jkM!J_QTz; zL_Uy*2!UEZv9(+Cf*-l8P!YEr))Fk$Dnh-_Z4Tn?!8zy2OG)y9JB|qBr5?EzS`TOy ze^*8Nu0@cohx?ge(5H{*6oXbq0y>QZB;+nv-i5<l-bIcmVcx=3bTm%{IG~GUFcBgm z$zYoOF0-9B0WlsMKno^n3!}Ml!7&Ic_LdInN<279Hdy;vvcZq;bh1H)-@hUo5IKW5 z@FFqM=Wbmb53Cl2K_ak@A`w_en?(j#%0_W8qiatf%Ee@}IbgEWKrS@=P-BqGz}OkE zPZUuyj_k3wD5gkYzlp}aa4q6dU$zi<i{oq7#fkCLtV3+5-3Yuf;_V?+ED@@J_oM|D z3Jij@c|YWe{S@2R^{VoN&!~y75%c<Mqb3vSrcje3ZA+-hCv84mg9OvjysV--0MyG8 z^-_LQdG<blgVO@LcU=`Dmu>mOnpf+TJ9B4K`wdH^@x1X2QK3JE+oXcXobxaEjY{iN zO;g#o!bWHGF4E*R&xf-bkvmf9xl!eu(zAKgZkBIm_#Ena`dT4a=A8TIlAW1)D$6Vz zr6@F{nH*dg8xAG7jv%{B-_wU*x$>v*E$4c&-|BB(B+P3*_1Mi{Gobm7H?8@7m(lz` zy6R4H&Ho&1%Rc=@nlIe{L_fEy;9OVmt=p}ix2fR06kJ07UzGnnm%rBKU#<LaTfPLK zBk6sk;MPf|(dVyXYRsL0z~IQH(PU5&MI^<TJha>zSnChI2&r`{@1|@3Gj_An?zX;9 zwiaI_J*aA6+rH=ROMFwb4zZOaGFKl|M9)N`VP1F|RO_6?eC&{!Am<_6ByyZCl^Oq2 zz6b7+L$rQIk|HYlQx*gfV9;RqCfH<(!0TFhZ6)yCL!9I$TN>foi11z17E)hmhQK6` zb`31RL9_99F?|s$028LbVRw5T4!Xx_Vr>}laCH*ZtmTp@X^(RzAt`8kXp^W{4eVz~ z?XTQ<8>TX2@51<aSWXqk$6Ww|KAo?S_vR0Do_{-`N8YPMJ%TUddX{9UI2q`pcr{Wq z*B9t6oQtq!r4xa7dD%b?tGZH`VBwQw{!r_wrCV>k%48o;=w&K=lYdIb2T3cP%`rQE zN{T4CnkTN{!Ea7GetlP3qWA(@YT6FEIM;-Qftzwnfj|IkIIAJt^=vF^iN6D}jIfjF z*c|X?tg+7tl9P=`4|^?&_lDq<kYe!e3PX&$0m`DKHZu~8;mVqfczK_WYYObhu``(> zfizC8;H?WPW+fW%ybCPnP-b9-_vofrV5RqHF77?LlRvJ;PKBp&X?ep-vWFxZK0(Di zF_DRv1_{ZMNUy2NOj(e~1iuD4wJ<-3Sia3IGy7}7s&u=Y&6xX=AGyp8$%ccXtC~xz z;2sm!Ih6BQD&3Zk6QdqQQh{zA+O6i}uO%|`zJ|(v=ipR&V=~PJQNCQC#)m;ym5hz1 z0_~|lX9~ljkRug%Nv-Ulm8u5J2`G4p7*l+CCSFW6Z=k1jc9P38!3Bx*C)~-A2%sWy zhZc3u0i(E^kBQXMk%+#?Pg~`%9+qZ8;axf^F<V5RQ)()@Sy5gphjmw;-jj@eXde(u zX0A(JZ6y)E=zxkR&U0G%!Z*~83QhI&7SehW(GOHlD!RYF7H(8f|NKt1C8F6vdHMo! zsE&^cY4io38+AVC($-ft<Ii)}A_!{qFgXOUQM{bCc>39RF?O(#<cLVjR4a`PU8EzC zY<LfgiR}k;pf!LAr2DAN34Oe{E8XQ3F7?O+d7>g_q7zCY8Bmh5p8u{%P{UYkvqM2G z$k*t0sBSbWTCJs;eR>T)L4Mg|Og#Q%HTWvxUctkA!qjRW*0QKVLw-YDncxZ9YtAC^ z1@2c#AJFDOc*U|jw3lV|2L8wVhK6tYC&(SVe}`q(bAMj-t9yy*v5N+|ECM~=ofHL8 zCqr%z!bv9*i-~G?+Wuh50-BZ%?UM^K!7q@+Iu0-3b`z@MuMS^ie{nZ5WDy0_LG>Te z8AqnFXr2`2M(e)%IXr#Pi?h~sJO>4N?Q?>Ys^Ee%*7_@~^|flE<jyBSWEk4<Y*gau zUIC0?Abap`51>|p@^XP71sJZ~@ke{rd_YZfA#{C+OHQ1XiWJe3T>@NPD9A8F8uzP= zYGNi{g!2I*`2iQVO>s{u5O|*K>Ma70E)=Wj)e{3PEdxqDK9ru%#6tnW#lfTOt_w2p zF9b{wu37J=0V5P<)%+11NLK@NY^1RQtN_F+A4tHXel0ab02Ck*GIV=0L^=fq#?OXd z*QWsnokiC;`FaZ~5-L5&M~rwz3w+9lNF@LmDYOEAmKp-)N3F4iW{(Uq@WEjFMEbWa z@sI{$_ayX?ZR3{{^pOKbMU#nR;j#I5<3+CRp^^3UWv!)yopia3fg=vqumPy%w~pHi zB#zfBdQ3!P>s6_-jsD;@ZmI=A*eO)MDBQ^F0ewI`r}6-T#U%r6BK=YM$C)b+rk%-_ zFi@G=Knx~NLY5*NjE^4Rc@SXont!N$Zl>%+qosr!tH6S~)Wl#m@EM9@9V1FlCHx3R z?8r2$Rxrl8bRs8!xlJ%Kb;xbV0WfASa>kj+O2Wn=_ey9Ad@QM~k$S2K3X}|NN)#=% zWe5!xnO#DTor`vqz*3hQ9fNEWMCg8F09AwmW2w)AC+LP8Qccc-#h|sCuE;-gmDo#V zVjD;UJM@^|#EQVrZv^Xe&nkXTAhPg{*ds;}#c*XnquS-wyj|&y_=1*>di_$RH|iT4 zv0Q3B^G1x8kDNE^n&KoIh(uFY2&_q>XG}IN=P~Dvek42{z-z^FTr=cFKA+?RX(AQe zdTyf0sgfwWHm-<NwXQr(bHf7dJ?GVIVGm5$p_&)G(O7S-vYMC4tB3So`4(m9U=6=D zZ+q1YrtWR82HHIG7OcplZ`to%iQxqu>a%2eb=-!9YBaJ3^zuet+UJeFlpVx6mbk7) zhsTUe>Z>G)s};PcZj&<!8Sb(7+UAX{;iH=UI)baNh?R<|(4A_?ON78h^}B_ry^NrG z15fNZ$)l^d1$4YAm{zY+GN9LOwzXTlQESwj8ALd|gt{-;kA7Zw=q<Po?<?r85HZjl zy~kAUUUM7Gio49j5s_Kh2LQ6dAw#*qMon59B3hs3$Y&mBJn$Xeg!GX}d?Qr{+67uD zZ)nOBW>5)@{T)bd=q%gNG;(e-#sX;#%`jT<HmfL9a<|V}R%tzmcYG|a2jQ=IQ!(78 zXUYOPl~7H>ns{J?w4`yb<3mx&4@4!`sblFJWb!?h_h!*XiH4<<?iD?yv2#4S%GcWh z9r3_s_kBGM6%dq~P1IF7{@z%oENIGD*<eb?J|NMQ?Wp5j)!QK%h=-Av`G7rXX~_e^ zZQ7UIxG9#wK?n37qxH#0JAej_P+r2LEEcD{Ioqwz-6AEc)ae{gwde_Ix?|o9$P#tx z{0j1;*LpVefez_%tQ`XCTY~=<s^l5b5us0-XkUOc5H4Yq^E`>W^{@rl4UA>R2^<Xq zDmAEO=7p=R!T_T~BO-bxFt7m7VqmpknQRAc^}8iDhYfClz5TG->r++w5!ovE+COUq zx=8}vq<+wqJqXbh>iD30QLF|;g(`Qv=y(ldeGr(Pqm9j)qu?gCvnq<41>GCSb_5@< z^<*F{ET!R&u7H>Y`;<Jb<BI}JkXKBLF8pPHLYPnr_%L9LR4E+xxeHin8TA_kSPE9t zeJ7YW1^qPJOzG3Tf*H)@LBet~A_hHKdDFqXjrlAg5_$1JRxqJ$PACC=R04(`eg)9H z0Wf+=+)@l#Y|C~v;xa%?cLUR$&#ZQWO}m6ZuYz?i108lNHOQzlz~j=fchXFPWeZzH zV7w>XC@f^TY981S(n6@j)T%yAXd+Z*2?7Q+F|-i1NEQJR@^YNy6z&@C4eUn<V-44A zQdOnnRdAvTO}88_Vz*S}vA>btLpjx!Hug^L2%<leZ7Qnayc$`Z?WOpnq=`=^_~2>5 zKEKqhA5~Y@<h5qQ8iqT<F25v}y6;5<NhlGYl$t}^cX76d^y?EOgl60N`Wur(08(|m z{1qM1Q>7ZYJ~zhJ!1%mJQ86*5D((~Ed)xm~zF5@;J_4(?$xdol<Va|ufe1hj#)-^W zqjd?`{KJ%Ir}mEb=ppUW@RLpiuredfQp)&wqTxjqe3F7mND{eh1=-69bonCWw^{xs zn$T|1xv)LDEzyvVFiRNFI^c{S6g6a~Sk-L*&Qqs$XmFX}c^cp})zg5}R!1VxhhD+o z7iJZENQ10OZ%qbP3U%--o+;K&xE1omh6LAfl)>@I@l~W<g!@2SRVLh=sf0E|qZQq2 zro@_ubm?IzmASq}h8h&+%gpL$-zaOMJg3l1aOvW*undK0j3_uaRkX}d)m2VjqiPHE z(MS^;oHn+Z%ghpLO{dr-B73NN+84^0iUJODKeNz*IJcC)O``Ir6?$gP!<LFnP{1Ke zUJn9`ugu6?h}@STeY$I&V3SSwei0=d6eNkt<W~ZrX+iPkaLs1M8Da!$@mcu*N-)xY zP`R^eZ^Drrxab|~A3Cds1P`Am8E(ZvyUB>BA2&x1Y3(&()bS+AJPpci!27bGe`B@G zA~l)06@h1|O<*#U3@Mgg2sC0@It5iCGw&3ezL{3~4g$Sq)x+t$s*JFYq@?1l-bX}O zXL3kJS0^(UhlnG~UNknWGZ}r~ZW`Rc>#*gq)3@24+k0?%{B&*{WP5#IXBFX2b*W(A z>D);80guV(0o@-+LT@s<);?cv3Gb=IbCjrxZnA{V)3+s~+(SsRw#uFHVehHhm#oOk z?Bj>EpS~s;eGw-Et~VrgSWj~=D#f!vT5K40RiXT=df1hbmKRf*-UKlMj@TG;<MYMK zE4Ij{@I&MsV`gyF{m{MRoAz4>sE`t06T5{HIXVHoGO8pRz%%RvLzSKpUFM48+RY@P zuWN5}7|pCxPkEs)K0_hC2vv}wy~jSv+HHs0oqkL)G`_H0>8)@whwrT5pW5eCYDoS6 zMqnXxKmEgWP@`yX)ypLVeqi}uQ@&^SkH0UL{dYDF|ARIaksHqI_JJDNsX|fx6AV+d zL)CRK0&cC7Xh#dC3-f%jM!V&A_3>J<8%Z&WDa-aabjCOkm#Tf2!dfI3NidN<*!y1g z$?K@Jlq(IICxX}l(X3*D^b<9+K~J~_g{~o-Ip$D<h(#w4T@s{k4$h(?<cS0B)j%+A zvsnf*8#Ryvlw;?{)4QteB{D+uH4D`rtMJq_zA3;MmpSERo>gcaBktq7`VS3C$VeYc z_LK1PWv!oCu0@jsr&x;U68vZEmrV>@YP5)2O$=nPy$p7HL6-Tl0JT~b$x%Z9lYm#f z6DX~vqi}0v8eo^-L&Nz>OTPRJW!XXxGpq_-!r^B6h*;AZcm~{*#xit6v4cbC`z5?q zzaoi2l#Z90Gp68&FZfoMPzV@R8z^e@cG5WIG2Zv7bO#C2i1LpdX82SXis&FwQDT|E zFhNy|NK$6KQo@!Z+9)<W0j+^bh$hmKX%94LZH(EP`!ewaA9>a&YpcqOU`jv+62hU? z0?T@VWVJp-oT=T#$2*W<=p}7Rf=PFjcV#X=2+!#OG}yl~-wp60dWe#cr(T|@TT~d+ znCxM=XBs&Z!4;knC=j0$iYYjrQDg4NO=RW`4oF>@$OkB=I&|`9Cv|z%QZwLRl9_Qf zWnLew3L2?R%Fny4BDNpNz#0|ov-hR8H9|*vg39b5O>{wJIl6tH7|0+xC~71bBNf=D zV*4$7(s@$aX(vwa27IVSi}{E)RF4o!A0z_69zMlmRbX4n-^q*LBVZ!UxGWVhvhLES zE0p?7J^`-oK?yr-NUmTiy;tC|(Lng!s3^iWDeAOezu83E9odu`QlpZ$K@Yz=)1e-M zW$61!;9;51(QwSMnwGg=IGTDVaYMhAgv(-{G+7(G5vRtz5vAU!`eM@dc_ZdPU-qnu zd!w!>_D0R&+G-Dc`Vz}(v&yp#9f51p<;9Q>)CMtqv;i$cNLB%q4AYfx*c)*k7b2GZ zBTRPGKNV{a^#SU(82SgUZ$U5cuG1_m53wFNzgN9l3WT^f8V_L`$CYfKhrf6Ox|F7s zAte7-Oe0al25iJ3r;s?TSg=w`kh>|_w8GR6Qc##*1$=_^1K#LAhD8WfM!QmPL`NLa z*SnIp8tklVDz!ha)CQdwG<+xr7%Vw!`Q&9(2X)~-bO&`|IV5h)Z|3uggq=>2z$dlP zV8-W-Y*6tAmB!1z-e{0}=5o&3?IgYG)e`0vf(%G-^un9eN|M~`zn)RWxR3m}{#B<~ zh`j98E;A4T()#!HqTx~aAbog)g<nnO_3u*?ZAGRQSxwd37?be_@;;`f?WiZ{?^@V} zH!^{KBC$V?f?^t&;VpO-UkhXtEpxBjAsQ<|D}w8k9iEv>3JGRU;8%#L^$}Pe<paxb zm?=rh@Q?z+J9v*<4PNs$5silB2>Z-?WCwpJH=G4RXa>uF+$~+76etGMM2T*v{OlVt zzu{aX3a8dtS)wvjKIs9Km^zOVyp3g_c(V3|q;aajr#m9rCHKYCdns}KagrLg1lSaX zW(?KyD%(fa>;eKyT%8<V7x``@a~pqRxUU3yk))^bB-2{0xJ<pcSE%Fxgjb~CS-i;E zf!#d_K0IXo;RaaBVL^(lQ?|4KTn?`MzJE}EYxgPtUGlq0MW1eQ_EkVS;k)ULHOo$q zLDs8f4Cs>aRj%6dq<SW~WC4||5lQON7-&qUGT-E;Yzh1b6T`2hVHMlqD);xu=$q@; ziHRIGXnuu4AQO(frgB-M)<07Ab8wNoa1uJ_t_E30tEG|Qtb-Fw_ylK*j`vJ3QNx)F z15z${t=mCcG*+5vO+9~DF%`P1`s1eMgVpXyf0$|WY@0fpv_*EJB{X|<Fwo9~)s5no zc!?<z>_YLyHhtiP=1moxF^3BBQ-@{>E)6V~`$`3#YuA}(L9-{O8zLH&ghC#xS39(+ z8Ge=OFmq_lNl8~9!=sy;Svlc52L2%JYKCZKy=%Z}Ca6Z$@1St$ln3FjGhHtG^LZ#G zm<Et{jF7ltLllu&+#Uta3&L%iJJjXc#n;JO1_eRK3k9(U{fe77P2}-ln0j>(h$@g< zJ=2hvcMwj1yw|G3ZD5L)TQ7e*=)pufSKVP+1Oxen*Wv0R1>KR0B~x}@ez7q?w?slS zw01&T9gt3CKjy|yFKt<bO3<6w3KRYn)>HM%26PI&08na%zh5r^*PQZ}`+dV-S^&)y z9Y`p^`Bh(D94mXe4`=fZ6^sV13e{N}mTrVqfd<5_iXthcrO=QrgjmsevsX0>y3X{2 zm$=ru1**GzL|;u?ni?PS8w0ZKOPmtGe+(`Fvg+jqK|rs#az{WM)sFKMmzpercjd3> ztA6+Mn+&uGWR046l8XJ`LHyc{A$<BU&wN_a<nKZQPCL(!0FXq^2&^PX%*<q<opa$l z%}oZnP$DF7?35&?->l!{IMwAW9MPqw3G!NxBLX4lVEa&twQN8N>E;305%B0_oHyy< zEI#B^6MNd+S(w*x?AUu1jvbe&-po1g@r;AY9birNp#ab9n8gS5Uv5^nm0vcV^3zG6 z{Bl>mO66}<`ONS?tGXF3dzs7rin5brgFdI+S%>2rmZJWn49?S-6g-jmPUokMI@|+| zLQl%p0^%Ug9?gcFdg}A%WA-}Iq@Z$4x}9a<Kw9B20h3?DQ9C=1Q?dw5n3qBPXqR8| z_kWuE3a5Ov;$|{FVw=#l*S~IET$cBmFLcZay`DT9o&O4@S%48F^?FolifdIPv!zU& z+KbZHIu>cZzq&ZuJc!M+X&yE_bTYVYe*ekb?>L7K(58PGpk3{Nb_?E>%)v+30<^M0 zH~{&+LEStH#S9fP=LGm9!3?YW*_85H+VtMYyVv~Ix0oO3LFh>Tq_3)+@1NAeIb@oC z5hu^5Z+1<;PY6z$p0B2VeAuq`Z6hb|iSs1SUaKPLn#)akWmN-#nrM>rOMD%o&cP=V znQIQ3PX%x~V^^)lusxBPL}v>AH9ErD?_<*qmko4lf#YL?%Cy-j8ga{*?0jtc3rxp= zcP9%zLN~~J4o3-!MdEy(ucMk<+V0dD{epgnevE)AG56*vvw#bENIEeQzzxW@w&FUz zEu#KC+mC7sSic!WES+SRA&gb{t<sV}BG4Pn&G}Cjl^mN|Qv{e}QUn@0C1oZk6{2qx zD3M3%tiVSKIB_>gfdk&7-6(+`?O}lGe`Wc59P3OqtVW$Iw<Yh<<*7{kT)a*WU7ES6 zWl*ZY6r59h-vo4K%qSkSiNJ^EJ#sl0m0sp6Ddjsb-F!bT&x9AG8ro9n=P%<<EPTf= z$;=)aOtMq6Q<M0mo0+sKy}By!W+J+^Dl`7Ka;-oc#6>^oi#nx`8j24{TkQ0{lzE15 zKhGX%m*T_L#hW|5<`e&qv_&sCkBr^Qi4}8^^N0UiGUOxSM&OWa;CO2APdp6*42jD# zsUd7v)-@dwsP7%`;twi0u}93rUjPuvjTD}yxjKX%^bzAhF>_FrVs=)1(e>D|5cp1J z{!)J$r0JY7Bv_e=4~M$c@8n!kRRfe51u8T9CbQa|G?R_A<7+5g8g8o01j~e&msSUH zoMGkHyv3&<ymui}eW&m@LJ6))h1)2b<dQqRW|`(O21r6~WJuOSoqKt+5)sIi3yoc% zY-5`j(!B-NuRt>Wrt)cfJZ;Cz0-O@1b2%FBDYRcBT7oKvU-e^w9sZ*9;6TjWWc{9$ z-8tuud>3dKOLgBd+n(Xt=C&zo8!Z7<zhKG>R9B{7Foy}iQoq-M1@JQPc-dgTDf%D> zf|xno`e`M1QYsNk_ZcLdx?kr`4bichzYj>u-{T5i*=dQ3nW+!(G!w1BajbXk!vUT4 z;R2!b0^EF6kqEp8h8`D4qQ@qL%x^7VS``;z6=4aIzmt^Q$-oC@vb-!49$K-FkeFiP z;_F^y(%;6Qr``zcUu;`TDv%$&Q8Uhwfjm{gd7aHje_qW8;v{S!wM*QHy3qE9+d0Le zJ)yoFU3U(JH)-3L-#NlouozLG<XrMo=Tha!vPnG7;A%W}tMT&?OS}c&mY<p%TP&~{ zsc){s=41ox3xsB8!8~c$LJbzLJca~;3p0~OCK~qnR@%^6Pr)z2%(2f1!^?0Is()2z z{=47>nMtMK^kimkLmY?*zxhzBfqh_24>W-v`F)gze@kJA9bZ=O47@`ra$cjV_hEpO zo-i?$5}|nDb;~O)dm@&()wh$rMW^U8z2$B}{7&k3#xhg>Hql@qD$D*tXX>5_W~Nl6 z(!1k<E|*>!ekwENY%j7izyY0Vnyu-^&8z{x$JgTow88G^_rNGBz0hyzq-U%r63?EP zKQ}LJ`T(&TwFQF`U=W(|gpI$*qUy_!v4;Dbd#qa1m7zSu=&a?<@XP$+_fQ;g)xYQu z@^>0DX~^ky*mu;Y(vsf^o1yk5xiNIz#4Acp+0O?y72y;p*?FJLk^x$wJNb^%98&Wt zFf+nk3))*~!t#PJtca#%nA1?lE>=49sB|nMKDz`peV5mI9Y>@wz!@(UejsZtp>h2u zMlOzFrX41EmNUz7<R8<E(qSONB_sODhUfAFAlgHM|6v=`l7X$*y=<@LGbWkGCi8JB z{VJvi@y<lU`h;Cc$4`k_u*{?uM-62QmEVL~3#_3EF*OWz{&%u!nTc$YnaCh}VrbI9 zNiC2JVA%!O6n=@je9W^&X0j>PNGiQwVcjLU$R7qhU{_ogDKmogCjHBGc90EohYU~m zv)btFodQ9xvU+TnY*|>f$im6dS!t*YqA!a+MzvmZ_>*N#_O2ejBouVatWsFqQq)Kb z80VbvCKHpjO4V^$8^iw<<zt!44q<AVsEI)Z6GA>?w$Cad+_el$`$?`!AF4|4q5Q*? zCsMh2A~T=AB99b4dkt+<ZW1aIPg10GA)0GV$wL%iO1NJ}(r6>8$uyqI!4pLfQ|t<) z`lQUIcx@!peJS>rh8iRnt2JZ*{_a&VZEh0g&jhnam3psgluVrnJew#&7Sa5SqY%d; z^Ik`sdF-WxF0#>Y0<5pLJ5W>?b?Wm9Y&1))6Qa1LG_;Mr&O}DaMk-TXfjB{bM~c3V zN{uX5vKm9h7aWQ9G47JoN%mRo>=nDnDp8hST5XZFigiQobCuqe>rvFKc7N3yD!n@1 zuk0poBWctya>hw~FnY#G#d?=QkTS~0LNQV`kEUjxI9Zu0oUH7o6>q_r5bad@BfF;v z$4fW*WO^-_K8qfjD^H^a)qDz?4TTd!UFGkzvodaK{wRDmKY4djv<;!)y^6kJ1YyRH zY$KDpH^|h1Wg!T{28hWtetQD#&<~a4o07DNzC0398zqud5O^wR%gpXy$|L-5@<}<K zO2^8hWTq{SfQ~;;R!yXjS32ZWJ7qf-Z9U-tvxP1rmaA50`d!A7*BWF4>$OtQyFhPe zq=NzZu7u+3lp6N=!?P|LTQ)V=s=#`YM(dEiQ#S#OdWa58vW0b(aoAwGRls$+m44Cb z+0Y18F`16f<u4M8F86_<A+%ceMI`U_S|1jaaXO-btlu4$gn>5&cmZC#AG~xxgSM`% zJQjfc9{TW=X~y~{I&HwSR_LRWvrL*nmQGKH(9adIr)8&+8_(JT$m*r(1*QR45fNbp z8~k7KqbW}$w1u}_JS2NEg%W|~?C#m^6W~odb8W@7S3qeXR0<$b@HZDnGI1iWb%%3& zSB1nAqcpm<U$`_;o<!!-5FMLXmAL?O^=+yyB<`Sj_JgKmRg9zrNta~CkJIx^mz^Rq z*#nq?dyT59y$9Nc;gkKY`A%=sTleW5F)sXMGti7h_`#6m{yuZW-pHr25;u{SNFO-j z&bhc;#xH&zhiT&R)zX+C3)S?R4g{X$)n=~J{`Ei^L%yq|mQ_f3he2{P<w+BiUj(M_ zlXG<Gm#sdVJWQ}>iu0f7HNWdue0fmW{Pl9zrSQ6{*dZsFeX;or@1PG<jS?7KRgFBU zHombF4eF3vhHI6+i9-{m4syNvlDDx2$2Pqo*_Vxb5-Krh&aIT@!f3zw9eS%YTO%7x zthDMyyWlTA#6Y!XUGpn=>#;8Iuv!m0`r8!5^cJ=@f91DXGR~Z3<LPbb_2nC(-;HE6 zy%R+4hA{KqO^=YVc@jl~#68SU`9{TcZ22B1#iTbAzUB>WFrA9r2%S324Db0IYJpZ| zX3p7qp{WJ_u?n@of<2}dxLXxIVh9bDw}UeN0Sr5f;e24g#hHfMyS+zyr3FjxE^;nJ zvB1l*z*Zc3cJP<we;v5U-9r%g&)iEFHqjpi4rmYEeZ)4JBW8~-&z-f;Kh>&`VK!!W zlt>%(6^sR8qr`0;+Dr^&{I2Uxx=A#2rMSpwG8zVxQ<$d+<J8fTHolIP<4*|_HFteZ z{=gHQdr_b#ktu6RuSwI1?dg>asauCh>Ja<=^Ie?hoDYfaLU};6`W6Jtpl8Af-Y^{K zS;Eb43+9~I6<kO&gSvuu>L;%xdR4odRA573Pi1t)oZrif>M?p%Noc~BYAoCIQiF)4 z+u~ow?8u|8sBZlaZjX~vp@a_6Yjg{H2pDA=1f;V4Rk%yp<znpmY-e4W-jizBitd0N z2^S!9(1cyZ_3#oO7^(72mt=y!RL{7|QjSxJOEdA2oHW@nSZ_LYvqaD;?@@MdD$qw1 zwTa1eyJ(Bxh!6N#oVecUB{4!X`pl%J<cFI`z;o$wlP+RWj3pPZi~T?L-Uhs?>dgDj zP7V+>x`Redr&z;G+9smY;9$*BY;*8L&XE(vDXqaWopjQ1n0e@wI>FKzplA|g7dPT) zm3FklJC8GCJN6MB+tSwB6FvieMXU(o2i8uTBdsES5EbS5{qME+$w@%l&ig!bUGMb{ z*G10WYu)Q(uXV3`-CyfooM^(bSf1@Xm=5kV28*)iTPQi2SJ7$R3jcI)m$j~Qna&<8 zQa3&9I#Zh$3a5V;zmr#wJ73F$iFMk-nSz+u!6)jm(t7=Hc;O+SYk3h^F;3J9it~xU z)sbaEtI~}R11a*HRz%UnRLNm2wAZcnw4!E)T_<{qI%*>l47BP*&y(oUCc~MV!`Q^` z!XHy#bbc6xOH-A<{I5t++|gif*Jnf}%6R9FTMycyY1VocrAwU9^>JnEYss!)1!^l0 zp&Q4Bl&I$P@dpHuS1M)oyvv>~6MQ0GhWcNARl82HY6SSeJ4oS@6oB;&sD<vC^19!U zXtI;;C#FqEPM>X(FR>>zFjwx4cs$CeG`g`{Z3w&CLr#fF%%W3?dvq7JJx}0y0lLrE zm!1<Mb;EghIP~F(`?`Wa2=*KHh4(ByMHNUd_BtD`Rbm;}Xf=pQt(LXE0Tn@28XKin zfZy{2?$B#ZzPf~OU<+kJDl=@088cAbwlQPjRlk|9-01hNRLD#^ExaV2um(vZw}M5N z;F!|F7x&#lZa=x*gfH9sc7(!y?^RlHw_4m}0JPfp=8fQggCFYB9Jl0l+mZ`E&DkK7 zR#1gZ;FNd%U2nAEH3(H!l*guAz-g|>SadL8ThZj%^0LL3AF=q_@Crxwm&r9g%AzYz z#F7+U5QZtQg9V&!%m<ruT6_Jh8%<EO{8|8l=1kV=YYjhN?p9!%TY*|*!hn%0k*#pX zLt2U4ZIVV>>!-F<m^dx726spheZPDrl^8F<*d@c@x^R>0<c<Kh1ciIi63hk9Ad|HQ z=J}z;mJ0T@HsaXt&^e7jq;-aX#&J%EWGuySo<}EzmE2EA-eKOF0i&K^^UN?YG2Qr( zEke@sKtUsIT*8UV<zXV!3<gu&5b9Q7HcZ24F?dbX0iny{x&dgRjaOgt8OuYX$CA84 zt^D>&QtQx`q#IHpZnPu^-I8?6&@IV9fZci>1gU8=PeQaLH8hNg7O4)ixaC!{BsUX$ zV$_m!1H_WN*X_%ZnQ4F0$$VX(45wDORe1Cjd3JclA4LoD*Ch+`+tGqNnc}}`JvO=Z zsMXMO+p%sj+EuP27h{Wm+va#Rws0`7_qu2~3Qx`cbCmU{ZMeEzv+;AkS2uGoC|dS# z3|fXD%Q{Lk^IFrXV1qQdEvd#gd-p`^HSM<!1h`$Zakg$uHNKJJVq{ylZ^T<=wzE%L zWu_CSB&yVH4T#LrxktCarGlYW|1RW@$GHzK+bK1{S(!$>jd_}QRxWrUc#+%cK}I{q z8ENK&7YGr(JlFU_jzy!0jF>9Wh%|+tI-G9Y4wd>EY5_RtuKGoVQ)~dry59!%gy5(< zo72JeRQJ!>HGfr}J@^!l6{+N}a{i3}U?jTE66s2Xm$G3VVxO2WuB$FeDJKO5^@JIT zg~vrn_F5UdsMmDkFS6cKG@5~B^ta^89NU-<&-gCAVP~6P-*HKJ#=l5g(!EKcPFl;d z-T3Y#U%m202ByP1ptBWS7aFNcp<Pq04!<TOzK2RNm3(a}b{VvS)ny72CK~^^A=CGk z8gSZ4a@x^uM&AgN^Q`nWh%-dI;fNI+qcn)%(yUr>HO%MICo<s|6BmUw$qctGNib~j zzqv)q3?!M`Hnddk<Vqn!CPovX1WQVcPn>4LvOQt?p-l1s^nDe3ZfznR?2-PhnJb%8 zhEZ%f5y|&^u~Zg~Iu0YiH6fWuhp;T@SHMwGn#NtdVqHZ~{MJ5m>=teYL(n?7&(^Ie zZ?^@>6hzRU9P-1DQM*W-W8R(wTdR0eW$EBq_K8d<l0r@hD3LDmFvr0r*NHfpPjg*Y z@E`+mH8f5B=fWYOv%+IG6<*=Z7bPp&E2kd{XL{W@<#JbM*GU?PL^!h?x6y@_dZ`R& zf>uNt`v*#<f~~E=<Jwi~G&&8b#?7g4p~B}_?3}5FA*sf#DZB-*`a|)<b!I`Gen^Of z>i&{&+I^5TkY=3DlO?x&>E*Qda%=L%u8)HabS06rU7f4FiEoom_AmLcH)J_n<dRvF zPD=hFbBXX|`XP_Oa4FX*>`umeL3BoT0T9G(#)ON7B&3rMEP0xsK2=wJXtb{~w~Hf@ zZeTKcUj#vd-31*l7o*U`D#kQ9FnYYi3otY-AWZ+lU+?Rcn52CY+XG%M6ursVE=f^h z)Z}fbjYhiIwe*Fae~ABfu?$yCRG<I-^HCfkfu6d92lHq7U<>Yank6OIFg0`bAUP_M zMs*cy)x<-cuB^s>$E#E=)#);Gk<OKy6O**z03bsmF;b_U$$Va7=1x>~=B5hB<xgQs z|0PD~=K-5AwcHws3Yad0xK|AZWBH!`)<}kyd};?|WzIHr&V;IQ(g9MZT$-OtNj+t9 zx;au=M3%TQWtto<<0`&WBQt67LHQj092X;e*A!>W99U&P$M-HeC(Oe@bXGVAKgo>X zgq>me^loDk<GsD`XV17>wAz>)Tki~1;#xjHN`N6ghttF6)7-~ka!C(T_eN4bqwGE& z+DUg>hmAbwTTKKX0uZB}hGUwAW2&-9?R07zDyy%2J!X}K0xN_9VWP6|A{TIpwh-+2 z!QY2~q>B-adrxVAxQOiFEjP(w$}%u!@Spc`gR^LhUe@pum48e?S8u}knD6@ZpQPrd z{v`F8)Sqqy(`?IgVk>yKj>aiJRX_KZkfxhRfHduhX;L-sqDk0Whe?u3Ig<2ko<x!a zmI|JPcdZf$ngv0E@c4JVMV_i0L6RUtkR<XQReD#FWVWS99%dGP3wp$o{r@CA(tvh- zR<!83-$;uNI9l|3N6;c62E?I9KcXe<Tf_9IPxMHnc|OxKFFo0@K<Er>Xxa~#;PGjK zNVapU=2NLAqsN?$F*R@=W}Oe-L?Q4P@ikM>d@wlExVtrYK@30(62ECe6yTy=hi|c* z&8?qrQUwYCMYCX|20O^YRNIeCZx$zFW@NAsEehU9Hy+LgPw6h|W_Dw7Kd?S^;ia%X zZ$fv!rmxFz83xb`xW2tD_(djotS#7N_a;+oQ(+99?>-Da^dTOy;lwKLmF<3>YZv!% z?c$#9=PQzLaqZ%>Tp!WMFtr>?g_n8Ue*xt#>pDgBJ3&f$_gfVU$Lp<<H!f0n+rc(I zorBtit+sKckTfJ-PLDQQMxX%$^{rF(u<3~ZG2i9nt}pFpWi)tCrjz@+q&t~^VVF3< z>Wj?eiJr8@LE5#XvDF)}92g)nlV;sd^eiP33tdgSv$xvnZgLyj{;c<M8o{=T_$)ch zmF#bG>*uk#am&3f$DI!YM2mIV@X|xf)v;OaYTqO(#x}U06x!I{M?oloG~xIUM1^nr zi&`r(Ksjz*`1QV3Acim%UPi=ZSd8sN#4QnHn<FuH*8f#8_9lAr-(qYe#x@U&u{JJ8 z7h{`?VyvdIM2sy_EXDezqCER&fd02UiyCU_?<UW7&5~k?6GNjFOGn7Et8D=~JADcL zHc5YkehJDQ^iOuHkE?;4iq2m(2Bsn4DgqP~Y2tEjBqOh7ic}=C@_ciH;Z}#cxDsF& zYUpg|kjQU!tj=x9C>W4a*r1}O_$-QN!gMl`4R+%BhNx;pJ=^%O3U;7OGBS)Tgt9l8 zZo~=A#mEq?ZU~+PXb}on_^;rVoc9>|SJLqU+K~+){<k_Gfv8exn511oK8}ssl#2Ac zT!e#GX?qU06cnXmnp@HAq@)+lqK{s~j$}Q{1Vh>2RjGFYTdUp&&zLKO_q-|<6V6Ah zW@FK7zX8y*U$llD>@QB;!Lji(WUWKIc6-bL<%mmDWn75R`BN2^4n}pQgB|itBxSv; zF5{uacKTqnyn2*wCmrlW`|DK2lFu1XgwO^y4w-}n!3A2tE+7xUG-g-cq{WfeDvdpT zg`Tw!hEs1uU#FxNfLl2+OYBr4kvI)9R-G*K!InzQpU7DP4$n=c^VMh#o{-{vnVN!# z@1o+^Wr34b=$qM3rQ6G^#o+aV%Et6yas488)Ol)H%B`WUKNT;l87a{>tDwnYCv>$a zTjMU}7JHYel<RnBOHEXxuy)!ljb@xH4VL9HzxAUO&Kf8X^A3Lg6AEXI7u`{5Q#flP z{)-gOMFkgo^53EEZA~6rVhSz}nZLWXIgCg`hK|Pj@o0LmhA*lnf3zK^wYVFb9jEy> z*l}k4pRnU-)A|3a9jBRzJkpM1BQnyC(;VAzK4r7I3~Vg&>&S1i=lqV!W38V5w&$2V zM=PPLO<V4>M{c?PNL$YJ(dud#o(It&(Vh|et&@XTW+U0%+X<*&G?cRA4sWuy)Yx26 z04tuJ+|_GnLkR?pBO~5qA9DMwmiN2wvy0w)pKW5Fb@q-Uw%U&2tyZLu?aFq^QCsZ_ z>)Ly7wPu2S_pNq~Rq-BM?RwY7Z?)Afh$?%Jt@aLA-Ft1dY;c-a?YK_g8}G9+(ArkJ zjO^j9Hm@}lZMCcQJaVhmR$*K1?4)hA+C$>47JK*0+G@2=vemlTbe;g(XFJpm*dr8R zJI%0hujMi8J;oNzUaYNFdoUYsp`8q;d3Aq>?Md^<d5<ku75pFEa`RLd8I+<ecReX? z%hjis7?c#ve3U`Soli0wuf~mUS83aFH7EZ?TW+SpY`n76^z6oEwz%b@w;kScJ0ha6 z2x(Xb-mjK$;a99a3O)D-rr4BdZrhb2f1N(k3B}Ty=o_&kVM5Y`p=fE2El4<GjWQv< z1Z<>nkqHT352vD&32D}Ur3tB{Akt~}qp3Xn7ub(l-qn7@nU8n39}%Y(`%#OtA2t79 zwI6lOmhGr{DdNp<vK?(Sw86R++m4F*H<Ujk?MG6-)$xB`x*}4)x!V%_@a;Mw1Ip7_ z_XbAPDO6H>DtJczJHk7Y*)S%)f|BMo-YLPAX1^dxkeK*>666~$qab03D$R8#I{Ouc zcFn7d_fEF+u)-5Vx3oAjaMdDvl9nRd{|bZKkPZg3$QTjVO^8zz2Ccz?RvZ%=amRkd z%=j`O0f_L)Q^qAZ!@QJ_ra~;7s%2pa_Awzn*DDl81cgZ}YU_;6gxNonWmg`yMOLS= zU8lNt8J*aiFH9^XwuS)gt+F*JV0TJ2_DK!Yltv-goa!zlQV5eN4sKl-1#(Q2+oG}0 z#0IFdWPoZi15~-}Pg(ETQT8VcOjqtlfNt^n@C9i$BNT1~iDO0>q4qENFgFOROOX-k zWuwH-2vyGAMk9<+I+#NAJL&3j9EEVkN_2Hym!*@hEy4Hx62@zPu5oWBi5*YW>zjR= zsN`1vHeHC(yWUU@$0^jHDC;=WC{10_URPeC?(N53xzcO`t-(Q^n_uLwT3pZILy~Q_ zp;iM-vyNU3YPvB3<n>+>R7vFC>=gWB$4vlg%!~&{qLH;*^&Hl0k|6Bu&Ne>9F#$Po z?^0Fxf;GqlFWfDh&ditg7gICrt}!RUenja}2(cH0*aSi}F}R5Pe_X_f)1ri7l#r=f zAPy(e!7o$6=0-vlql^|>bib77d#N0+6ztTdyq21}Ste-EVKZo1eii5du%UzJ&;hTu zGyct)Bb^PK%c6x2&E5vkp~=tzrElV_2pzgn-lmg7LWlk8j*QpXB;Pc2=r)_Am(~df z1^k(i=q3n;VMAXUjcrvMj>p1=<a{Y^4^7mL^`>)4LP)F`o8^u~?!9Hk{cmo_H4@IL zPkYt|zxR8?7*S&wQH;;7UX<X&0Qm4#!v~!t5@R9<_GSEvy5yN5f7Lf@HQ(;gxmc4S zQrW{6r8xyrW+k`=$bMaPHFPeDCYI5JuOMAGwBGXFDF{&xaRDQymOBV$a9H`xtoN2; zoCx=XP4f|ARUggwt153xnhPGijZ$u?cM!N*OUKbL;-LeMfKUdVi_<e?y*C&qHf157 zcs;v9QnYN?84v6ilZh6ELhH$5O!W;6GtnVPv$YWn(GBr*)LyudU;MooJLx~1e3l0l z>bgFy#iS2NnUUNa?lfld?oE8GYnrnAU3P^=S!2lbS63JSP8x#?YXy^6nbKr>4*RF> zm0$H~aj%t>q;q$Wf^$W@hOyz_JY@&&cGb?^;>7exI+T_^34gl{oHV=LIov&iwXco} zXh{`#14(!6qieQeW;)0C#LdJcutyv#Lfu)uW9ixH@N*}bzulW{oj)fNV?RBwPW+4H zq??zXq~ee#^KU2lW+g9&?wS=sNAXPc!9EI7fBrZ|9nXxqNcX|{6VQ5w^R!F(w{6N{ zs^|c#Q<a<i-dH{p_C)$82FMNUI$?Fr?CUoc5n7Wagzn&1LoF2WSN-~QA>}B9cIPi* zoEFaBK_TI=a5uu~4xN}3PRm5U#(v#N9pOj=??>V^8>@o;g0Gr$hvA0QjvA@~p&nQY z+Jf98u)hS2-F>J+c2HULR+>WZEr-oQ&k@+X3;>7Cd9osGhRt=@toi1P7=jFN!seO$ z`r0*y<%{1Hr8Tx-{ClFbhTteDohNxDN(;#&lvZbdGfHa&t}H=mRq$Vk(k5Df(nuEH zI&B0>H<hAvM~u=EE)1n(e>EXb>|bPbpah?9j#qZ6cL1cO2}~H$clN_$RTqBp(BZ>! zS65OY_h{rhAi2S|wHANXqvIUr4glc-Zej+|kt5*~-k#a+O$j-c<M+uX-7MqZA~{3O zFC1UQ57|#Y$lE1h)gNI$EvgQj|8*+)2L5D^Am(&UW}=-9)hU88qSitRTFi(l<y46k zHQ-JaSuq>85fK}HtqFEbJ1!g>gd-h?DwYv}lj<v5r)(1=hf`3w!aU*R^QD*Aks7@1 z=TWvRZIw+At4@#ktd(3mnNB{p<n**xuuStJ+m=rL%=X=tOJXbP3nF&fif?2qMlHvc z7io^WRb@S{|0{0AVpm&}hY$m36$|RDLpkqd`Hg+EuZ=sjZrf1#sNcK8_F#BVg|PJc zhUry_{WO!@j{Wo|PDy;bP*L{7e_>uYCGq_e?36@mBBvzg-tQbbmXS5MHF{a6mmfwi z?Q~}FJG>O${|vq>3ZtY*V8*swXHm;a`736is+&KA;DlgW?1*0#7KB#t)Q`MRS4mL? zH;qy&54YPMgU^v;2d`L7hzia!b0)QlXcY%=Z;`(Xo;G$x4k0q;zRWWb3GH^A;%z=0 zRES%<zcBs=;puhmmh}7V>h$zvt`y^=xQ9@oX#B853dZsPpAM2LC)4QwMK<?RAQFh{ zjf2Cd5|VZ=U>uy_`0B1ULT&|brvlu24&=PoTk)oB+@9+^Xy?Vfo$25Orud@J-QYIt zQgE5`rmTs)DQDL=7pl}N(MKn*)bomI>sWKB{26Ad7jUS2GS&UFiq_-{ZT^hMTYGmD z7l1q}-*jFC@dCIMLFCQh1#oFaTF0(!1w7H_9f<f-TLBS|Ix*r=aTmBaoOmOV4&>*^ z3aC(Evvl$aRsjBW-kayKzjmdpvgzS8d?i7N35g$tf6H7SmKP;gF42%JfWxWe6P9aU zl=33LA(aEj4*fawg?cV>qI}MF@8q2}U0oNqCLdW!v>rC@Ot|!rc}+fn{c>xD17C8U zd?LnwJR%MMx4sMhzX|@|C?Tu`f)-!c-rFqSctjvv@<f{auzHXDP%vCNhoMfVdeuui zo+&0yDto@3W=TlGl0?%HX=9Z}7SH&Wb0FBu@3cFu;QQ<RyB?AQXX9H$(MSakr-I!G z(@mMl#1@qN*pPuApQU58lB039&nvRn{xRS~IP-8D1R&k`1`ZdQaE{j&Y;6m6icwJh zOmRbsm?0^BL0d2=+$;PmALUjhQT<QPB?%LE<Hnq~Ih*_y52?yMe$ShLU;$+mnzO+J zqHbCIRI&&6q;OP8B_Dvy?hbaNKkE7f6FU8n=%I5~;j}#y%q*65HCtA&8!?njNkY?c z|8u!5iG>P%G5wITEerR}D65iY8`ytIxQLoa^|x$;q1Ypo<U=yu`x5j9XO`$5BuQ1A z2>d1&AEF85GMdN5dtTr-=1wh}?w^>}-&4}3a%+H)_4zM7M*}V1?(?Xs>#up1JU9Ii z;@13hIPraLoqH6!BC*DGNRQu0GqmaC(@R?nGUe^zn}AC`bOhwmQ#sV(Dvas>3RjT` z`&YZ+(IM?P^bTdccWApV>m7#uf>D#gzA8<;q$cMp^ED)6lA3v&zjW)&a3WXYOgxK| zR!zC&9v;snYRP5}grCI>X2QR&)-1M;e>#_Z2OVNt@?m!Sjj8c_U`HE{At-NZ(jMwK zrghRj#K@*>@@d|PN^>LAPBh((>GAv0J$wA#g578cwh(q^wSBEt<X7D%@PsL%&&wts zSonOQN%10v*G*43MaBGbv2fuDvPzfG_jFEAOGqF2+bknO07R^&&YpCzM)4S6WpU|| zqWldC`#EY}^e29-web)-?960B&b0==$SNoY2gBsCRm+-!zp!w86w7*#hnF3`IIQ^& zBpkHDkziUxY#FLTLQ6jKS9AJ+-y>zFLQUYXRT}jro%}`CpYdw%>!luB?;PQ=_0BM< zy{w`&c+Q40)%Y^*1F0};9$Svnh%`fx4tDiv>!!SpmolEm3M-j>`AY}1+k4w#H@Ys+ zXoOWKT1`bPgUf&}e%K?11WU&87*JTD-HM3Bx;qY(vN}cO3i0gigR_9ccp(R;!RqKj zFj`f~ZF0^{YnLKD)MmNC1jIWx<}#j)xQwTa%V5+*Wy30th|qG0f>Hd%%_a}|tGYy0 zdyIl3fs8ogH^*$lkjd7toz3~q`n61qgrL3p#XFrzk6iJ<^1Jf7CMrJkmkxg2W=D@E z;CG=zdRyhcXD9w3m>e{ca3n7Nq9afJaW57yM!)HqZQYIiDDRM1IQAzRj`{*=-)Rgk z;NTGsdpdVyPJ24}w;b0!X(c2@LmAV$$Z5v2aBm!;D4zH`m2cqQK<s9m;vvk_fzkti z!GQ}xoiZYX5l6%#<paSFz8jx3Qko=}3}-UL%e?@dqFXmP4aAdrs-*SCr}6%yO_R}p zco$tm*m^kF%vryhMpSz>%PAmPMU_Z~VcXCs1OusnNPq5L7nG=z3HnAZep()(8$jFv z*4^^LCjpH%*64?+mc97%WN=)?mFjAjdSNWP0|}B23?nCWr6gAj^3K+vBZeA6LArBB zoC{cZnjrM)pcUv4>m<xkV*vKCR2?zm@E`n1EVQs6-0e>PIgVwdX(%0C@rCSmFN@0% zRJh{lu#rZxi`y}VPaEA`a{ljbJOB6U(sNqF8h6~N4V^<LXG1ozClEftKJ)ISr>Fuc zB;xabcU#8QDL&xH^MCWyW?MRWd;MCvvE<2-Mq|SCWN?$*km1rY3`NLrXxmoU8gwYC zffBhkdokCJp<lbDghKaz7V-yG-9_D|0a^8h2V%~q6RKl$S%*oTGAkW^!DIH*;a}+3 zXr8W#RjSfN@N8N!D$=&eq9g{!U2#yi%Mz?`)4Ypf$7`%fyizz7e}e&5PA^44@jPVX zyLwa*7H<e~kzR=9iG6Bqfxek_uC*Onj(orx6`%p)ojf7;B3Ul@G{r#Hud@nR85eak zL;qJ$2HS!6WFu_3+|)GDoW32QG(p480`BAR698Hns6{vwwZ^_7oQAFSKBw{vOwSj! z%bgw(2-!lT40Z^qPaT(*K~LDM)aaXJxVA_qPDRL=oFb(mDm8UJ?d_GmW|<1Oc3GUJ zqzUpkdns;;eWP&EYPr{i(h1&BMLGH{wMsg8q*XKN;@A}HX6)QoIpS1QIMGChN;N(b z&QOT$HM~GUq;v~g4wIW_EFu>)j-&<sjT@+XEl}hQl1Eo;Mv;3Ej)Y)Lv&hPNVB{Db zP6gfL@rc!1h*O#_X1yULM>`i1#tb);VU#4bDY2hA3NP{}m;5Dx{d399x)d*6+3)wX zA#5Uc>7&54I<7hH`DZl_l4|{Oom)&iG%s2kcG8UOA;9!LrRz(A)&y}?8=WsRKu2+w zMTMFKA~GA-rU_B$CeA3Iqs*3)%vo`!GBg`;sg5{<Yr~CxY3RzYq62&ad8iho5Lv;a zA{5`D-!O5`l*3%BS)TQDo+L3%$_M|%#Cfo^=P9Oj-ammu<;0~qzY^1T0-o-abTiu4 zt!P`Xvx&QMEA_9XGH(bOcMT7I&oWwuvC0q_3mq%FZcf~9qC&3U(x+adulu1rUaiL; zgp1&SA6YUJC-IMa&swaN!vLp}eSDokPEeuh#1Bk^boJ6nNPx{1QpIE16Ehvx$&;&6 z)U8Rex6>8S71Zm*5=lFI!*@B$C@u#DY~7M4GO#5buxV4^@~1E&XJHRM3nf;D&(XT} zZ|0VW7hq=l(&Hb<0lWz2w=XrmFFol2b_uO?Sm6AmjXBO(YoqgTM!nvad>(8%hNnrp zQazZmZZqB&t0g0(130!H(Q7eG%d|Hoq`W|j$>d4dySH%eC>D4RSHp_mfd#H1E+xaR zrNBqPR8=TYrC4AEdaQG_b_n_^^3V?ycV(u-zx2TOJng4~jp^{S<%|%*BZDACvY1}T zEZ(xtO_CcQ@#}9A<FgejDRH2R%dqj_MPYg@rn@)9zzx&jOqejX*Z3OE4J1?5($0K$ z*`{%Gw;CCP+etSLao$hP!Z6TK1VS$y+||9eg6l4!1O5!$_=)C91#m~_=}h(1<rjnq zT*mHPi>Mki>*9GL`B(SNNEZw_P)V(DtpjS9s2UQ>vYnd*AX=t{osvT<rb*Y3NN}Fi zH1~k=sAbH-4c4v3Fx~isBVc6=ArMF5f+{t*5VhFXR1Sh}Gsq}7L;O8-7Tb&4K7@#Y zrfRZ?5;qHaYR~#^CuZ@pyEWPtIBgnm`KRluI790dwkqL4VLEM>>cc=4*>BoOMrXqu z)OF1fo{g2x2HK&*!njkqri+wll%%?ejR^vc*`-0pE@`}CYLkyjBe)DYa&reM<yW;S zR)WUObllE61|9eJjZY#7p-#z;=97wM8|Suc&NCY0uGukz#OfddA5`9A(j~sHOUqtc zdiI53{RbcxY42gP*SwzGY&7Lx^;zFvdNLvEY8CU;*dtY83oJ!<hnb@^5;fj*X)U7r zHyl0;g{WJC{>N<2!>%*1Mz?L!aqOm8y?tB68r9KJ%~)-5_=ojDHog(RM7)G}CJSF? zWospu`>Q^}9wXKET84~T=21(U5j2(It&z&`SYWiStIXShX_bvxIz!oN_Nt(Bu1IkU zF8ockI9}C<=fs0B(;<&#!CTqRN83743l1Qo>VhFiojVXag#7t$VnQ&qigGj<I`WWV zp%{o#I||Z``_dFTEbD#??3zXz63u9Hwq1JjpD|_!&mtnpmW|p>B2tMhds?I?MENzs zwPA`}8%k{1ZQe_`HvEWLMu+H*)^7dM%S`BKQ+Djx;7r-(*+5{WqAB};k>;W)o8ah? zDO*UK!9CwA81iJj!AQKl-Kh{SZ%rO>+%+eoW}!mdADOambEfP(C?w|kM}|R$XlBYT ziaR};Fs-!F_G~-OwunzDsuRC0!54dD@mSlRfWxKgL=hE8kQTeC6CKrKy$i#Xqh$+Q zAZ4T}7EMzmgw|>|tw@PBv4I@|+0KP1%yvG|Dqo$sY#_RWx58~Trbi^IZZGBWt*S8$ zLN;xKZ;hC=5-lRUo8hNQt1D;~k0VrIff_A6EghZ*R(GI_;MAQRnX|-lwzd`OW0cMz zbKYP=^<~`!PZ~?DxV5|%?lat7#$!?cf|l#|BmHEX_h2shAF+ONJj>1LC+no2bQQjv zit@8elQfVDWY%FAGesoQp3dsJKxULhPC;3X_R=Z499f`Zbzh{_bzL=$1Tp<3Q=u<% zI?H2J`R}B$Z2X-xmh+fRDHzLF%4MWPVfl6Ys-nI!mE5;vn&5`jl?78*mcT7}f26HM zRqsxw2Uba}tK^bj(^aCLq}2vgmZq*88m+7R(oam^CtYRT66q?FOr4_QqMVeja*8P$ z!>TE{<kPwEida|KCNCnGve#o>r6ZEV>PpY4E6;W6%Cl5UCb_#rUHPPrh%)?ZZTR;b zxjxH{8+D(I3q<-hyoNTyz3o}}v%>pFac^r56}h(`+&@Zzc?Suj6_~%(!qrBgm0Mh= z{d86MB>n-x`6+D$w$dYArk$74IphF)<Yui$EpuWIe+%yJYC?E8dJlcjVl>ILkwBq1 z*$u#=Na0zBHyqnROX=Q_F=wYy;{!8Mx<T}fl7%^wsYnCn?}VRO#_P7Y3uC+F@1%s0 z{!U7fD*wVtIIrR!(fqD^1b$fT3bFf}?Geqx?r(07_`#8TM1$9dBBZIya63%AFY<P} z+9ELQU-Cf<aXZrY?dl~&=c_K~jBjV3Eql~2(FXB?Q-AJ@_J_}j$++*n!-rdw``reC zE_SBdAo|!v5i4?xc5<UO2t<Y-MjHhCuz9}~2Y4BCqy3@O|E&*w%<_n-_?mWw>x@N+ zD81Lu={Y{k55G*FF%uF3MyW%cE)>b$P9~!c@3A_voo~k~(F{jt+B!F48Q?}1RHAa1 z^l**5-T4s}<Dm5oYee}n_Bix=%|(sqB6=lVApAeZO!T3k*vkR3sc`PMQ;Ley*16_= z{tSXy;OhoEy^G>7`h;HsIhPX|P5WEk>KrOji)Mp^rWS4U2=4p3yxGNU5{Kz-sWim9 z7UM8IOxLiOv32R%DY1AdJTSEjIfhwLfW-i&@L`eRS05nNhJ|9%3bIg4DTQKcu)=*a z!^AX&P}b*Dkt*m{ivbokG`@5|3sR$nxvd{S@p-B6ONS>r9<enzB!9L%Kr-ToXIx## z0U>{_;`!AtkZ^PrsYb|fwA!gi_2H%>#hlI~Sw)_|-|_q!4pHq`M9>BW&)?6|p+R-s z+*_PRGa7EwG&stFiWFOe0;EZ^a3t&RHhoi(YJk9tJXM;CRO8z9=~x1gfV_?ug~+il zSQqI?ldZUGm=LhDO~GP|O41b$Y-z2kz-iTq0alOYEK}Srb|?#ymN6$)Wa*}^PZu?$ z99oO~<6<Xz#WF`p+9xIHB2$vGOuKEFIxSBLf2>i{Xhr=0X4Yp|%DP<&iH199D6(#M z-J@MV;=2j*5oSniH+kM9cBx3=(1k(9u~ET%rypgfa`O>v)_SuYfjcIOYmU=6qcx-% z$;wC5kSf~C*O&*l0R(7Bp$RZD!|G8pTnO89(heL=Ns5LPoq?{IWr1laXw8U2lY$Q| zY3z@9q?R<#&X9Ln(me3N;AkbOFax0-i!)-oQ)`y!NQFngwT`q!z^FD=*9aA9hcb#P z(q&fXW}Szvxbp}Vsg{nEA=Hy$rHf3YW$3xrIiW=rLu>Upv7c$FdQ>{S#+RIOVFk}4 zw4++HMeS%XXv)zw03B61YRrIBj@|*xQIw-=l?<thm7`6Oa#Tu3t?Nh;!TQ#OttYjx zpFdZuK2kqAs~ik=v<Rdep&zZINQr(_bE38IJLyL?1uA6v(H46dr8tfCqnd!2NM%Y( zX)5B3qT=)@`caKlq#xBdNI$A^LJ0YPr61MQnSNCBW%|(-JQVe#9lwiy6#uiOGh2Ua z{iv!&KZ?}!9{SPDQS_tu`CXD=UPtIhb-v<g`cbXtQTkENkCQk;MY^7ZVHK%pfmEbT zMHOjNq$2%Bq#_m4!K;Z>|1SE`XNUEppZg9RHp)g+xLOf@_z4n>wxVMkO<hw6rjShH zd4INC=7MUFnQLjVJxGDbvbA4q{%A)nBBiXy{rU>{BU^Bt4`6hfl37FOe;p{1-p*Mp zvW@+y^rj3GVb~&Pkt)?WGEFo|#2B1u?{i#+(~e5$bQ;p4cg#lgqPy_JH+|@|YdAN4 zDs(DKWPbuQYQ^U1*hOJ(0?T*5xPR-Q^rKTvAb0xF<)!*jVJQba(2r(xp^j6K79oOn z(v8HfakgB#Hw3iW(Ey~SJawE9#LMYJ<G3)9QEWd1g~Dabf~1ID=|*B(?uRrA4K$E8 zxUfDN0g+6hR7`|)-I0@JGSRIDTIpsRzG8Kx-@K9(e1$}SBL8%WKJphTVP*#1;ru*x zN5VL5J3V*A&_svxg{m>Z&=*=RgKUTM)#dW5W}60<N1=v#%Vvp{#%X1_G$5RI{S<Co z;j$gMSe%&f{ZrCDCX>GE^W56F@@D{RK#U@2JiF$_<-;n%Pi~_JiR)7#7b)p^LgIR@ zMnoiBFg_L|B$vP%*CUn(u;f+>rN65V6PKRIuvPFps6Mxub%Z2k^z!wD5QHum)6*0w zKk+^FS55ggO9pNN+il$v(8a}s?Lap;7P&;K&rBqi#Qctkt9qk3iQ~iSAiy$A7zr7O ze=W38?!FZgOcD||^tqB+_5FVDecv)k*o3vZ!dGGuS+ZNR-&=Mso+1Gk>vEGzVdhhj z{Cs3BV_DofMwX{enFKU(h0}h?iVu(L7{vSZ(>6<ICwb=Tu8l8Olnp*}qn?kuSlNH> zvVYHI->&SRkj)M3hoK9Z!h?TB7&WLy2L>_XjJhjo6s>MNfxa2`4}Oqe-p~FrMdeC& zz@Gp*P%G-M3KeLlXTrzd!^6=MmXWE16H$~^5N=y${VEJsy6m+9pA>F;p22)xqkwFm z!6}uvc0erdPADec?N&F5ifpGFUD|i?@RUIJxO=%Q7JJn-7K446loYxHkh@lNkJntg zD)}i&^ed-oId@v}@(A^iViD-v<;i?4*Ee7OBu(ln)`n+v*CJO+bJMil2Y9*q)z6(B z+|c->$F<o0Y`Z<G>e?*agLLX>%^P<4*Pn(er101h=7aUVjxR@o)UdtyYd2hW1sAFa z4ayXYhCE)M!SKw#J7HI)6I`CRnsp%Y#P1Uak1wHBb=PhrBN*Lh-r||x3Df=^&<R!d zaQBeAu&3dnuiRZY=j(<I^MAo~&!-uDktg#EHhh=48yvWyqU;lpkm~!{`pUwINXUB# z*=6bcT52X3ll=$$mhS_$B<)P4-7zw4g3@jx?b8%G^bNTlZ(N<}{#9jW<@sZjw@dIV z&wrV$!3W**(|XRk=WTkvm**+@O!p>^>PqXLx-9jn)F)H3@l5;VCo)(6Y6U%&<=`f8 z3%$%d3q&KqU^NM1*PB2*UG1C$iR)6`?~KinNEFYCv7&<SjPrZ4?x~zLa|VEZPdf>+ zUCpJ6@Dq3qMy7i&-~F?<(|$UirY<xvHT8oxtga{vHV>}mC%v+!Uc?>E9l2jW_;zyV zk};qFM|JMn?;YT<!UjM5ywgc+qSq<Ry^UP!^%A`oX9T%#^)_`s@1e~xqjM|nW_(B! zc`U2r{^?gVg`mb>ApdVZwuX{Z$;Iba3;zrrDO&~5{O;$ZEk@|O<Z$o^pcC<lYQ=XC zi>251(rLOQixuj<kwrAm1c~}b-=Nd;4)~|{VJfk`85Uq7^5PZ#Wqk+yGy3`Bd12zC z{B-HiJiiN4-h;vJl=suZ{d`UA&qtSb(GS7~_I}T%2E%MRcpgX4O6@9T{>6PfS1qo7 zy{Ep4&+zQVHotWP9>-rf9*5)F-W|h9&-&LX$|$f2!4i9wH>hYeAro)b<9+qZ$Vm9t zCm2|!6ObA1X{_I~-#szK9|fVEy@tSS2_0%Q?NsuNdcWsMy2~(&Y|6LcJeH|;#XFQd zu|bb(c}#ogiKaEQdQX^BCYANje$<(-j7Np{&xOCHC=a&|_v)LJbiI1cJ(c@C=W<Ac zv<knc&h?KNkFV1|(#H5bb8X*#hu;5_gQNG~a=Dd$@5iijW47LsC{v)hyXG>n;_&3Q z#+2Y{fZnHbzeNakp~LODT|vc(QnYeRFC`&5V+GM6HV-xTgv9A8+!E}XoUWfpG^BC7 z&C>ZUwn+xN27NroykI_@G|VKmxKb-mI@8sc9(Ra^Tx%~>2Yh-ge#H|KAMtzMs<ct6 zsqlNhf{p+@(;X><!^0&djoX&_Ei9L$o>5x6X_Faucw^Pm#4Q}0{<hRV)MJPBpNB=3 zrp6NM?C~Ro5759!{ovqFu7k*2y-9RpL}bheYzm9{P42~zX(c>=%X6$_{GZJ!e3q7Z zCe5Lgmch;3wXKPSH|UUNzFpoNv$WDPI>y-I_nt=68Z0nScP-es`8`iFb$VpB&jL~P z$aLQhfzjg_zjr>|KHp-~$bp=beubZ`f7dfMkv1~dMnjD&zP|JtCNU3;QX7K(1VQ$O z3MW(bQNQPPB7`3GdtSrh`rhC31ILEccwLL5Z+SHOEWTwY*c^S!QV=%!mbDad-$G|c ze1v*^%&1;R4lCsBy(#*h!e^*q<orcAF52xq+s0uBdCsh-(2t6R8Yxs<k45-~QSdhw z;osoik|Ml_dyCdL>s)5sLLKsx?KF;F6zgjmRo{8V`o1-~KFQdsPb$g60B+eO^(kG- z%xGVcoSiQ2D~11Qz{^BfqG2e-je#4BxWRRx?}i=!1e9Ti$ww<s`YP}53jF6WaN&9T zZrx}BE)LIM+>mB469YTRD@MmjadP1wRfi)=P?ljRR`-}=i%?$%syP0|@ogS8zR&-C zj1<}53jW_?cu|hJBAVP3Cl|_9&Faj`vjdV`vk*Z@X3c4t;GmHs(Y*Mocq4f$&z>EX z|A^=;PQgf*7N<k>RD>v6ohQ`;C*GsQqP&rlE<c1^DB3U?sv3j6c0-~Js?yG?wN+I* zF@DeA6jxa9Y%qZjX?LVjBp#}hDbmYpjo?jIqNrq|TTioGq8h&zdJIXoga+%UWRlYh zZ{v0zA@*qw&En~*gZTUfy(^hD>$GZH4h<f2E}4c`h4oYt?|;$!A*nF3ABoG;nY!rH zVkLlz{$bSBG4HI7>Z0Bk?72F93MW^fX`~E9DJQy=LZ+m>3}?D3PTB$l<2T=1IG!W( zevfunz8B2BuYQq;;awYthbk8OslMC>z3X)SRCN7~ejvv;vfT6tIez-!;lte0y6@BR z_la3ojm2R&FYbEbZeUjz(Y>K$;P{66BG^{}yP|kLAKuBo%X;eSEp}6D<k{=vA^s$V z;*ZgwoukgH57%lczF&kp6F3D8_yhO#7$!?TJ-r+(81wfraGIlI3;gg+U42xX^<uBx zB!4mnE<6U9YW`SUvv#M8$&MQk1F0U3r4icI<V71ljh-6U6E)gf+Nf$u0N~n|tDioR z0Vt_PuVbEA6^}<N<yn9eZTPl|Tfv?&PRyAmN7fK}vhI-KJR=2L5n+Oj?=S{br_Z6g z=U)|7{E@;wvu?{fR^~Gfa?=X#lpAe5r7ITe;x_tb3(3&{y+_MWjcSaGD-G+yaQ5ki z>t8#3SoPY6vL+hbnqaZQH@LOQ(=7UEfk{w3N#Pvns3hy*!Z%#GTKl6zR!rBJ=~G;{ z3LmDOXutRk@==XwR8y&Z)LbGTF$hjRYVmtsaf~SJXL7WBlo>4_UFTezi~E=uCxS2M z>MI8qben+m1%AXbRTd?rs&|o){s%OWxsyaBdwAmjLXm2c8!jRe(vJipR^=vEEz%PL zlcb}bXDbL1dZ~n`T8c|TN_%}pu?V*@$wCC*f_zs~T5=Px^SghkA`|iD_8#ba=``;R z@-aOfFiGiA&iuV*LJ_!LA{f<4Y>Fi##2|zqIB;gF2HvqI8*uZk1g82?0#iX<F0wa0 zyzn8M6`(7<+x%XMT_8z)I(Uv_&at>erMw+QVB#c<2}~1*1*UXzkAK}asAgDTx{fz! zn*=6t@57?WD~ymhK)>f~MqCr`_dMdBnDdk1Ta9Zem6vb;_In<1qi^C8cX3ZE6_=`@ z-m$pUhwzm49w<x!poIUizC`lU7mkpZR#Ca@)PQ?JUOJ{IFO|9OL9utzJ>Za+rWNI- zzc0#5fy<5LC7c#OJhr#<SA12}3rqas`dPsSCTO0wi#5l?BJ=TZmzA|^$#MDDem1nv zP(t|~TGi}c6F9h|$B&@VrqX5<TjXXOZ%`DNYR!S^hM1Lr+Kr_im4iS|NSmzmD>`X4 zDaAYF_iS-uQY~VV&YRE&1t{rah10S~W0N{7Dhp+_L$FR(s@9f?Tc7H2vQmeYQBz}8 zPGS;0R>^gRGpTyS{y+GSUwKdYD0p~EK6p|xgyf^0KdnHK!uda~aO8SqApU0t|K$&y zI3dxfLstzW9|=H068|%PZ<7;`YQeWG(+C>i_t_(rk{%H$sKFkY-M@9>Q7!wi;?rwe z!1TKExPcYS2K2ebze~JVqLH+FNn;k6EqAc_mM8<0vcC9+f^<J6_&4%<#=gt<?EL-T z^gRzCbg1WE*XN^exhMK8zGW-Ot5m+_Q%*e6x7<yU_*+gobglcAhUi;Pk3T}bH4_rI zfHd0#!i+n#NnBf4Kn3iIeWWY3fgxtQ?;~0cPYo#RRB}xr3s{lA2L9_ug(vuP1pmHL zc=>OPkcXPY(@XQ_(1!X_N3D-Qc2RxXM#@9iSxB9tJhb;c<RN#VZizhf??;n|95QTN zek3ydD`|{l<GUdPgSr?Hw~!cC-ap5?h7B=08t1DEm3%<V{}m@}X4GEkgjqww6ILsb z(h2(sW5<A1TT#MvjF`1}H5a~KD&GKJ!24_jq|I+jaeV)>6utxp#;l{DK}9s7#qfa| zua9dqL~&U12R5&EqzBTt5C~97&3?q9mKsTOb{IH#b3#=)E+{`PrDj-$_BoBxvCfiy ziFFRu+zFIvmms5O`%$~1oaqUNf(?^rix408QV&wlY{>7EwszENW4wO-o_WQE)Vq}V zmkgzT&x=JNi8(fTa56DXyv7l^s9Ty&qnm2?8e`C;R-zRW$_fpJRXuEnY`Cl;(BSj* zNW_xawLuVSWJ!zbU#>nH^<JJR43@|vu6&o|K7=&wE-Q~~u!8QZ*6?1f$|GAS9e|sR zx+3;&%nRMobo0E^o+qSF)+zpkC>UZ<VNpqY449;z6fT-Q&uA-F|4k;khq5u(>%O8~ zy)UwpLUJ4Ku8->nGG#_ak*ThUN`XWjPfK*;vbam^o%<Hk6)eIxMPd-{3yjU#)>u(A zDh|y<5_XJSM0^glz0Y8oEc+&PnC`^`drjdRBjh9CcV80?NSHENiTQC2#buTkuAmG< zu;ljvzXx!ex}#JNcaF9hq33K00DIMY!X^sGNA;c`p~Yt+cy^p3T1+R+2G-=C36cCG zA={0@*r>@35?LH}opO|F-nu%f#>AfpDL^~SkiwB`3fDN1r;br@6Z|M8@N&|0i0RO& z*;4suf|Gv~IdJ9qUyEyxg$a6x_~N8vq18Eu3NM-H!{S1fEbN`7ufkVzUdj5huDsXU za?1*VNs!kT9zqh~qvu(b5CqHq!+7GZCQG-f!X?ZaCG2Q*nmPljLZCd?1$A_agdE4e zApI2P)4=MIe;MiQe<^11vRvmosZU|jn($9pErXq@PqqaQrDk(O%qKI!L$Vb$05&-D zOYl3rc^oWp@qjnTgr?W&`{915!TmtM@L_-%JX>(*E79+rAs*r<>H4d#;8L&^-vWq9 zIR7~mqVy2OLD%s}C&XbneaO8Fw##6D>|n=y7uYV7VSvix|L|kg%w@mgE^GZ&X9Fio zEA_nIiuKRGe7|JD)+vXvqC%DgR#&(~y@~WTk^Mnp5uKS`U&9meJWlVaUj`H+5#lCE zb|Yj5wJW|$E!IKBa+{F;G26Kco(}J8iSlW`PicrdsGSgQ#!T5Ed+wZ#2mH(T7IWq* z=aeW%zV4s<F+i6Os@5~sbA_9iL(Ndv^%qli<P`e&*}()Cp$fe!Gr{iRK^}a3VR3wW z&XEui9@n)NyX0hg&m?|*JK5p+ZI5A>Yz8#mkFg<+q%XA4p{lOlr0E@{;%~9f<dgDl zN*G-Ui>FZQ75?l#rbw@u0e$Fa`myd}>$-eDlZbK64=#XbRsJBK8x25S#gtYPl>xr5 za0Y-ey$g@K@gMmNf;s9lc5JiHSWXRtUnD-mYCbbm{s&zCJud$W<zK4&)Mdn%Nqvg@ zH)Q2B6Q>2s>8U3d)U=!AtM9AdWN*{z<wdZ-p1bNRW!kL96=fNf2YnC+Ool>Hj;1Qb zIirv)!x#wF#N(@a>@j;ZZ$mDlmd8UbLny~v8H_q5&fqbj#~yPp;H}bSH1Nn3bxib4 z^|Sb0d24-IKljyV^mA{0jvp$RC;bER(oOa4By_)3j$pAMkRANq`a9Jk(E#y}z-%D{ zCkB=~>wnHO`M1}v;~`S9VvwacUxw+F4l1>oI_IkqSPUMYQVp}~7xRcigWLr30Qxs= z=pHKfZ_1A!;6g&)_~njs{jNyY{~fne^bMZI@$g4=6cO(kzEhjz!tvd2a7u02hm5VC z$JY7hTv^JVIg7{b$elbc;PE9VxODJ%JB>0Xi|A2ro)2H_e=Xlb6MoOPAtnsSF6Ce) z{Rdw85a&8RIO9t5rEqV$fpD>)kGp(v!c+v`MEX|1w#65Oi_a`GgM6_p2OSP&JD<YU zZSXW|iLLc}{w@(a6o=Dv8sd;3-u@zZIc(DZUjPjjMx^1AKIVEQ?;zO`i_3fJ=?6=t z`s|Y)vVLNICBdB4$6OBZ)-iYTmvyN1q;=%ZjZ+-zc)3GEa|_u82+M8DU^QK3*nyD0 zkNa-Mp1c7rEu|^vp9CEm^F`DXP^^CFm5Wc{+%(J)gEcv418b4%%rByOsxulI^?Q?w z|Lg&+@(5!h0Ow~;E9a*ljB?k~Gqfao`7U{|I0tUkgWt#LR5W+Y`wa9mL-rv;5C8fL zw|h9R{|XLc?%yW(o;xkb?v!7*1^>a-Gi-N@6&HRlur^)#`mBPDY+g;<M403~Zek04 zby%m*;S=+N6PW=^6|QUaZ?R7y7y4`7PKwS(sr8oMKITj0XM<mB4m8O6SfguzPrWyb zOGrBT%2zl>=entL&wD9p<L@SBSl%n5*WguO;I=^~97u0rX4&HUzjGxt0$t6lfDQ!u z+kWcS1&@Esn2<V;#~a<_0v;cHTAw;xzaSER&*M(}v4F?zwN^z3kB|I;tBuDrsqjXN ziMuw1b+w-51)7`(b}&&3KVaSII%RMio$SpoJbvYv4}X~@!vgxzAP9Q(CK1t5n}fc@ z&4<QqaLZq#soXfYnI9VoB|=15x?ex|R`SuJF9%1+Cr+3iPOMF#Z3}A=o@GPSC=ikG zJN&Sb{|{8YQyV#XN|>xe365)@#6?Y_0z7_R)YH(W=lZKX)L4hmy#2Z7;k1R{NVb#v zhPJ1;uPE#~W=v}%zv*K<+42>lS+!><KEN+0zlmO$iz?${MNVm46fQ33d{U3i=SAV{ z@-exUiF)}{?ovs`1Lu|l6-(xo<KO6zrj39;N!KglKIGHKxa3Uo9bKB6OKz9De|r4G zsY(0k@Aww~mM!U?E!?)dP2Eml=_E3oJIUSR->h)g8E#~}kw9@f{hrAHp&sr288`90 zz)gHl5=M{6jQF?zl=~)oZlGtd2aBhNxsx>V#|7FGk;N+U+Y5%g!L5l^fRu4wn}H?1 zvMI)w;g=#8r^Je`Pv9eXx&VRa=yn7SY{e0<3qM=}I}DgO0x;G1)8Ns}%9?uC&JKA# znvtUt=T5)jxLy4fWjODM`_@FH!>S*vgSxGm^P6s@IY%5O#wtQbIQ6Sjb`a3gZ>*^% zx}ri$oRBz~U=k-+@(uopiE96pbTzJ#8>*9UT)7L&e`9O%L3CqCsnVw{#zHAW%W+?% z+04pm^|DfGc=!~#Np4NZ6GkJKxL$+8nA}2Ck>q3kb$>?{K%J0A(9Y}pAw`oLqwiLM zTcQHj``2A!qBd?iY7RK0?ZsOYGL6yb#CoUK==Lvz{7$I4u~26+bW6$lS&rtO_0!7_ zRo`yJh$t|FqgIc%-FZU&6j2lZl58gjmkuTH7rjkQaf>GhtlgTJQo&{y6m)yMmWwkJ zjrkv2VFvHo&XJYH)-OIvarvr379vdKR8HWUwcxZK)mOHaE!hTVJdJV2(tSWSk@4Q( zZo}saZFHlQ9vQtedhor!vhVpWKPBIDRC-W@3U@%4gl}N!sjwfufFucisN>-hFBJ@i z3oF=s-wxZ}fh-VR<*wIK;pIgBnLFk%FAtIUw1stuR(IH1P7EDlNs;jo07NW5#2wTQ zy`lw<2H*qnV0HamUY`&UZhP*0AS**Q^n=I?xiIJGM^s2hxc1X4#VjNS8Yb<CICQ#z z$uq-5WtNECBx@r_JUZ7KK}m)vd~`|zrR7Rzqa<1cF(py*5tKxF#=Qa(MR{YGqTI4+ z1VvFjM^cn40qWihIUz){#mb0+3PJCUoY?Z19@f0STc;_jk2_~`1xMl*<0Ia=Bdj`) zf!AV)7mn;~t4EL%6|4xWaHZNY0*FGCtti5ZoYcJkT>%qCKxseqwZR6_6RFB7p(Cp| zA*eRy36&wQ@ra^mZU~4QQIr84$Z;bsih?in$|{NeH$ZG+sxqNSRjQ#X)e%)W8LDz} zDOLHsR$Y?&$H>oGH*}nXq}9hwqz_Iy>)Zh!Fre1i&erq0HE|1njj-GZK?$qI>id&B zBAT(%zitebL0?XUxG2cI$P24rYvTI2+{y^{M*q6quc~3u7jGk*9FDGP>j(;SV?<%P z3wKaJ@eyH-)tkW&{e`W^5Asv89^aL|e1_sId6rEDG{(RFZyw;wf|qigZc#?m<kXF# zCd4P4YUIaJ6k-8Y5&5ZVrS+FRbsR?7X+JWqMXG%p6W{2`%dWeZaD4Tk(UV`kGLoL~ z#RM>#jPxGyPRJ31^<YAei%q%<E(XS6-r$TY_`J;|ucL**kMo8MwT`wXyStt&pw?>M zgI&P`vYkGLOfv**@F;~^5EC4SvW?jjn19zmOlmLuGj>>4i{k69Avd?OzTSJ1P|%%E zQ+h4caFYQ~niK3+HW=J7B3@%qZE#Lm5qG(_oHq?iJFV{p_=0funJlXz3MC;KYgJyx zQg<g}Gte9<9hZUot+bL@UpZerHh8CTr|#sI%%1Bc9xHw|95dyDK^KV&n3XCdGq3_Z z3$~VL?$*e4KAOTDq#${Zrs<!MBh@&7YmN$KJNq-8GU0mLRi;Jt6HhnOiT)AFmj_ts zvLSP4Mb_J+w>o=!g`3?o!Q&aU`fRW5?B4`Z;|Q-i#3HV05pZo`g7a-R*`YS>7_L$J zYNZEzGvVy!1c!oG%l$q>nzVV<5tAk=7^i2w0jfn@cft+p`exp%W74d5JrAi!ShXs% za%#QatEp0SQxk}-n}7?%3GLjjF>7Z2Q86dALu7c4@8!HWOq`tUWPhyrm|B}f4b&L< zan{sd!pA7RopeBt0e9A_QIa}HBHP#VJf3N!j2|EtxHkdvwwIso7s|np$65XwnPub? zYc3agQUN2ZQauCYlmM<c0#KC+a2Gk<FK|+}SgCSKDizRPfMjNDN)sok@kzDb_&CoP z>WvN02K#jMVm-rwq@zJ=d?CvedjoV*ACcuikT=9fcIz-mi|SlYaxT8gn)iO*MIKw2 z$$6SS^#k&A(&v6`Wa!imehIao^L919kXbpO=&23v0FnxJ5=(oZ-|#aq5KTXNnW(mQ zAzeHDx;UJB93M=8Ak80ac?77DQSzGMWV=BdcK_D;wMqm-TLi6yJ4k2?9+0(lp53nj z;UI}~jFZ7bK@%BsB4%UP0~P5YmBvr9R^|zWeS1{n3x<=eabkYnYDNHp0JGe$6>(Sw z3};uf+}MrYnS>Q2xP}cSF+X6hCVdv^+0MQUJzAqth?4UpGbK=C0rjh}-!SHs`=k_L z&VckA&adUQEqFT{JS!=B03bX5L#8ePhqA5avG4+V82R_zYwIKvURa$a_Qj1GvdPyG zX$UpbQ!!qheUo7jGQ68SvRmClaaGALGKWU3mPaOi%-{S-o8@&jb(}M)zT^;p+badq z;y`>7=2}9N5_q|!l4BZ`Jk5DfaCHVZm&CbT`$Iy5C2)v?V<o6S=2+ooOQe`Tf&X*H z>lawfrQf4Wm7K>f@{T$rl%R>~%pnfD%&mH#(u6y7x{{Q3mm;K4mok-TYk`V7#p!cp zOcxm4%2>BnlcZXNDD)ue-gJLXRju0Y7}Y@_HQ(xI(C_z(zzD3}x>__7(LFW%0Zq~Z zfzxI6rQIb7chmuO87P`%$nG^9vyb?Ib>6x+4^ZXJQW1{qAojHPQPZ4+b#IpIp8BKS z%S*G&PV1+GU!;P8#+~8Chd`x4z(xiJzRuQYD$Lct&2F}ze4_sMERR~t@E-36+6>D` z*D2XWq{AU#7@Jx@Gpwr1C?2?HR{>XAQFgs-m^<!J2J&2MDMU$7A&^(^!fU;2g;_qA zijY)I7Ewu#$#A0-e4x-=fg0>r7)o|qSalXF$2HSqCA3x4xvXOp8%xhhYvT8kFjrTe z^LES(yF%#JP4x{?qNndz&r9|oo8X;R5jR_$tCc1gU0b4x2>i;IoL`oyn8xmr?s-+^ zRI`y#st?&$-+{~B#(&}_9-Hz{sPIpoN#MkjFQ~ktm5j81!gyv&Fgl2b&46GvCsfs^ z{gbmWta;u}hC#+GRjqL1{#*m~PdGl?y$KHYVsiSbIoQPi&HUd0RNpXE+kO;WfVB-} zy9dcu<?Y+zhA-L=vgB#$qM?*O*Cn_5CuH}x(zqpY1`HC!(M8Mw`hXTnv~TlIZW#j0 zILUR%e!tza5a=%^?}Qc_IJu>k$m#FbL9oV4_ABPCNWFi}s~84Y8p0!1gC<GJHk)bY zPxB}Y5E>DhgfpI&;09kaXQ;vcse$)<KEz*b|78YMRZmUpS!dD*H^I(xOmYWXmzG|c zZXD~=S-IR8)V;4u{8&qJCj8rSR?FO~d+?s5D>?ybfh5|i?xD6kAj;1DSc~RiSUAh9 zPTV8nl>VA!CjMR^=^vXyqy;!Gg<$D1tclgyBzf~1H?ZK;AF}O!AP-Nz6iSU%x>Q~| z4Ej61TPg{<?AQ_O?Qw^4;q-D)-e-99aSBdySPfSFkd(D0Deab$Cxw!8bG@$15xAmd zj_5KV>0V-n@Wn^%^4P}hlFIm=31f*b9CiH$z51)fO+@1!jk!i!f>`GcMmjzh!(c@t zUL0m-ff8#e9}nh#ZlrPGD|VY9y#<cM4K&tZ4fIyyQ8e24u}tu~9V71%dOYLp%X%+m zygM!YYE}W;?sTj;zYUrVeru!Omgu)B`mKw8O@aq*7at<{{n77G^jjUl&5C}F>;u;k zz0czp6kMZMrtuDbJ#0$uXDyZRX0sgys`0Q>3zjM}{4(}?0b+ry<;`C;?~|nAB1#&y zin&zC5~!e{{8jI;=(PC^sEY6tHD)5yGxeB?LV7ducaa9)CdOlhWjmHKN?IKy^+!+@ z=uuITuIH5)S^3;~?#LLAsquNF%rQhiO;5^alTXlQWs85~R-$`k!W3M{PXFc&<DW=P z8iFCogcnqixh0!?m{bB}jNduwAn9_Taf%p1tY(wXsK}#}9?o!Ama#EZ{EpHFCT$@| z4oGEl5HmUCzOF<~h=bz9{ii7Tgw+NEv|;@A9-{3%jZ=XrcBQ_Gtz;R$Q}Wt=l%gu~ zP#NuQZb;bHE&V>j5i!7ZR`O>#2D8DkoG>N2)}k!FqF>}H(!arh5TB_pp^){N?ic0P za?y|$bYht;YkXna74x;d3e260o^$R+z|6rSsB^3lVYyliB5x_3Dbt@h7Xri+L$mNU zHSNA9`YyVl?-FU%R}_AYYB26kQ3}8Q&n6*fKl&+CDh%kyv4xO`I#iZyceRua9wS+3 z&F4n=rZ>EA!r%Wl*sr|j-_;N8?)R_%5buMRQqf?JKZQ#;dF|p6En`w}zrFHI@;|GF zB;~7PgL8PJll=h1tt0>QHrbhKC&SzGhO{3s8}v$8YrWd5Ug11|=u*c$D(W4Igau1Z zWc4f0+v-r9bS)Dl#lj;IuKLqbRV$6yPTVUPPPhQDSV@4ZK+4-~>H#E4ry8LP8Nmnp z5X*Mc-xl5o`BYRJbUtS4ld$S!glIy?MzIUU^9Wfl2y<sj<_7Eb@~TVzM2;J|%alm3 zq;SW`yj1vQNquiei*T0!J2xwQhqs@rRF>mO-$<m%&OGg}B@^NLlCXZc5K~ns1XrHl zRIn-4_+Ym4LB*F@O#(V%qC~BNIU6gHu~wZD&ZO9cq(s=yGohA=2#OTm<0J?vNac50 zh4AfU0LZxtmI2IWQH%JU>+B<8hy>X@N+fGtnZs;pL26gzalQH#UiwZf)FPSZ!g^=Y z2@{Ctw@2c+OJiiY*64O)p((N%e;MsHE>Mx!xehf-H>!2hSBu1@W>Q#RC-wg?$)t>? zR=9XbWT>B#mJ1$6Iz=7@=+u7|koT~{T52G~ZuawwwgwS)pQNxGfZ+9e${KK4%~^sO zMM**);v(4CS4TAn$;dxmq_#Fn8{}82r0y*V#t2K1f+$nv8iTDt)A4W{B#jZe!=>DB ztn*E#2!jPhd}Q!k*6~ryOv4M3^OihYz9o)5W~}Q}`C2k)lyH&6ISZ#_7?_2Gd6ThV zh0Dhb(<klv^D^P3+(`Hs!eWM%?1aTrFdQh<Iwz7xsG5_5c4aN+jA`PPR=@h#Zj{VO zRf>N%UNo&ulQ3q+cTf;W>Vtn95@=C~f>k;OVs<PP>{#IEP;kPre$PRnDWpt8jrv(b zxJ%_OBqqX#l%c^j$!L=8WO~Chs_H}5iU2f!CSVzWP;a<VNp4n)hMm?WQu2S!@%p7H zEr4MA!iB0wgB@N9hjX9Jfonw>8g6UAYSMI3gTyZNLXzEw1*Nf9+0`ze%flkk%u1D6 zYP&=-{?8ewU)Y&C^qY=rcG@l{RJ8@KW`k$6x+^KxxYY%RTEH_3bBHhNvPmy{%Xyl| zllFDn8L`Dl2;)K!b*Yvtg1gJ8(O^(6Fhv_lh-qlK#6KaToiRnSk3lQWGI9AT&VcF> z#p*uW`1D!Ts!K&^QoWKhi++hxKw0HV4>T|1Ju+om&U-{sgo$}%NaR7%8H;=~wkQi# zjf0LLk>tizVi-hLN>`u*a7xKY_K|o5*Ku;L3^8i%Hh<1m(563<Lq-(R*D)o2gIJtf ztv4}PV^sy9<<wtZDUilQg@i4*Dh;83?I*CGF?#cO$pz>_`3BT0eB3gnL{hG|0h9Xz z!S~$2Um*)<7MnLRE6=D$3>FRunTdHH<iYUjsvlqnMHK{>?(K9!#oVg90TXEk2_BA9 zs}s7rV{YPV>9<C(yvu`u$<S?Z$&)E^f&$yX?V`0N8r=dV_~Bt{V}h(lK_A!iK&~-L zNYo|neluC>mcs8_oDrrqk}ZB9Y>m6JRqc>NaJvQSJkj>mrNB@`ZATIh&0kM<93oq1 zgvv{nL}S8G?xo5R!@-@=HX4~VQG=t0B%FHgWC%_ycipYAvDV#yII+YDTr@A<3AQL2 z3r;>v@MyJ}dC7UNw0W;`(_AbGv?<}WoacnRoY%$Xz>5~6enl(b!PVhmR(!2{v+a}q zW+GVavl%#aEi=(5e!!s?a)}*&E@@r$3+Tpx(%~amB?9ro&&obaJ+pw!hL=^dNb2B* zMR?gVrip568ELt;8%WhuZMJSfx$O>nB{y3+UQ`^mamKLL-EVWL>?e`KZ^^@DTZMmI zEiO9;wdNWNxa@}~9dr~vhZXGRzVX{9J;9Yr)sF4X)4@1*m*sLPclD$LndAeiC6gRd z;>$hU`uL!k$+f<NCt2|ffEA|GlJ4z3FR)zPuI5c*sZa<87o=u36)XnfIO1!s;c2>f zTK*UYIX;)yOmfS@du<IC8WCrP&yNCpyNxZYy9(ErK|g1#tB`(hJkRVs4!|4$YXE87 z_4R{pRg`+M#KxhI?#9i4TPZ|27XYmbtdNBlv!{krS73j~*zOPe>#Q6ryBB-8*Uw#> zsU+(fro^}y?E`6FjJchrNM9?}-h{M&=quX`1G~fxr`g%y&FL!qaOY+8_|loif6vm- z(fDu3k2qlRgf_urljpKiz%koP_dbv30iGEQ5p6zU4bVwlkRo_L{0=>{NEsW$npy&| ztorG_p0IWWV3Ro&CY^Z`pHJk}LAb0uu07lxgC^Y6DB>6zsE45OG*rh^Dun*%)=4C8 zm{)l(vd5fdF~c*VyTnl#s_8Ia4a(^Q<n_!)XzgI-KeLRGyx9PEy+^X%Q)u@vB(1{C z)o>vu9JA<fg36N5!1&{$gBmiVgU5Bcs-+Q@cr)C72gVGpCS~JV&bRBM<RMyz5v-eA zFV<ul``f~rYckk8Ezg}=Yk^O_8upUFFHW!~YGbampYAQA0=Bj(?lfFn;Sk8sq)=(D zekY@cGZ=><%FJU_GDHZB%NV&JW^0ZU;goT&jvUb3T3X;(=R08ONgupjTK*`IeJ!K^ zP<k>giIdf$kNDKL{wI8DC;GVaJ>dO@vyZW#eG0V0K#R7>%Z3ABk*hnMIYz{!$vWoZ zz3E+aF{N;+xL!bD0Xr)f#c<bU72=ge#Kdf<)8e_?g2&siOu~6%&6;K?A+U^r!7yM< z5Ze!ytg*&wd`y_ItT!uZtxGxw_95pztW+GdBsT9=mjSo~0Fv+5^E#eqayPbGcf%a> zyi>nNEBJxy6P8(tsmq~*tMtCYN=+S0C)$E%gm;TbQGE;e73(Uf)jUg^I7qv&!fbC% zF*}?mtFVt%j|)r>*_z5$)CQYSYh;qI!4L;q%!g|$EORdSCA7V%`<JjjLy_-AaDbai zO1v*VsrJE_I>!`O!waM1uYgaUYo-S=$;X|6gT7egI{m^T%VaGy(sLeAsAH=?M}^uG z_57V+f9JG{-R2oTTXmGJM57k5${KC)D&!c){Bh;4SEcaJiKJGM=E(SG%hTvv<4Q_= zyrk_5*;=iDwlLD!W7FDX=@VVh<H9ehc8z}cDPz<%#MY2itx2$2trkt1sC)k~fM&-5 zC?jwCfovC6I<Hp!b}`1|luesFvB3z{0}V}eE0<bq$(J>5NrxB8j?qDVVw+QN#o)5o z;!2VnTikA$PQfM@wGy^i7$NNs!5w)L{*)OoDmvcVxKa-RF|6V<gzVl<Or^)b(&j2q zeF8kBLJY)SekGCWSMftp+M-<8uT<{|tn^}m9qXH5^%YrJI8m=sHf&SQ!|Gxfs2Usb z$m5J57F#^FQVJfm<#^vMXy}V7_!AOi;fvD_Mx8e$eS3n1<eXYHzG&)k#e>&P!>DLr z{A>TxF}oU@w%|nx!5RVMZZ(*k+vG3U-Yk{LT73y#j^VVENoqH~wx6k~uKJ<)T9gLM zVg?q~Iv^eF@(;yHPJKQ%K?D`Y({8f)j`=q@SYpJ%*g7`OX4~^u?W9dcy_sF1(p@wO zleEIvSYi^yJnS{zR@6To^oYoWwR8zRdF0CoZ!zZ~r6j&;TNSUxhF8#oBHwB)j$JxW ztzo&<7aF&Y-otys+gUN&>W^5`D(ThvNNpj86=F%n;rxBEIW=5t38mgJi|W1&3RkUR z7k_#XzO)<u-GgDxd9P)=e~pg7cvD<BhPhRQV$F_I`FOg+gd-~a@6fVtpfZ69Wiy_; zeT~Uq!7En`)+rY#k#zXet87$j*}E4+I%C24;eX&mDGsO^@NCFD<(xTtFS$x@u||e6 z(H^d(%y5!WJxlO&yB#yy^MGiIAS$Ff?vtjW4!YWwd{9WG)htCa+G8%$6Lvy&v+%=W zY<11@jZSBbcidS27V)sMUd)^Hh@;Ng<ST+0m?VvIb?`<^vt24Tu2fGVhW<}Y{kva~ zrvCka9Z01gx!`BwUKwgF;5;3T&aXh1WB!$ShGmVIS7Z$-WTlvmnAdK{td=scHo;<E zhZcUnP$Rx|H3O!hC)#l2=k%wkQVr;3ys<T{17xyOKANA?8Y?0%r$^b$cF{fR*{fcL z?+>8)IvJG@w&UZ(mDbLm^aCGcYF!n%&fBfg9DZ(*lT#|#K@E$jK~CAMIjOjpxq3Ad za0900%n`*Kz<K0kJKv=30Wx8Ura3<+DC+d^jMJsNj2J@sLRGUGD#T3HQY;-j+W08G zOr6_MHdcABL7vxI9TQh&I$wj-uD3S{H@IO?pe;<S3JP$5W4TGS6J@TnjkCy*><Uaf zj~JaNQGecwo^i8zGs%^u5$0ncBQq`bB`GHzziLk2;lz{mE+o{gz0@>B@l1f0b~asx z&zD;-5W-%$BVkH5w<A$Pp1;Q;($vM2og|o!-FnsfO@|kk>m&iMgS--T9$qGCm#ky0 zrrHIhYEYW(cQ@m(Ur*w^YCa~PrAocxjxOsquR=n>xA4pQ(7;F9(p={bxkqIpuAFV& zri?GT16UZf*z>4NRY(u(*!N&NK1BNPbwx04NvuIxc%7|Y@%}Naz}5p6Y)1gEgQ{h@ zv~2riw2JiO;u4RbA+>>TxOow&lbM6N@qJ+vSdocuALr%>>Tb~<xz@l@GjW;3Bc}Ph zHDbu%qb<+b#k963N2CKy$wa7Yj#*M%zgwMkKj^pO&>{rQi{#f8`SjRV1C=2iJ~&R! zSnUWxE?H~cvVd$Si5q0bs_qV+gZ(tE*%5cUhy<4XN!P3~F74E%{7N0Hcc(titbrTv zw%2`h6-OYn<k8uE5Zp~X$|ow)&ME}X1pCC=&Qlu@oLNeO7Xi~{<DMBNCLpMws&iJs z*x3MvIZoEsD7itEa#Kd+KP1lso{v{e%{<$e461f{9+`_$8OfQ>ExE?Mx{NJKoF~`; zQ81NUAQ0N_P{Ckx;YV=0@p(QztXj!t$=hgru`G8HU%Un_aW2?RS)qdNOL7>K!L0<u z=zgvO+scf7!n^eRDYd{o!V-7CA!gDP#!>)B3geS+aon)E3DpW1o>AHmDHf<!^8@s- zlTe+(6rF^m$*uHzY?0F+VMF&DaHsd$M2PvsF@+4_gP2eECRCtTa~?D;t^o)mOq*+O z!Z!89H7zx=OCHrY&1l%whv2}%tJF{(CBsj7+F&#X!wqN-ha1oo(!hhmJ=8=F_fQBz z<0URW)`4c%0kx>&Vwa`-(=@PBK<ohk+6X2dhy3<lZu4H|_SH*t`>HKH{1BY?5A;At z3TMnyKTk1VA)1OmOjt$S11I;1b{Lv~7fpin4q_q0;GxyZm36a7gXI<2JRTtnAB)Ki z&mYxv45=9T0-Xs@nX9P5r8~F$Rh?XDnUbIKx_DqQ%`nRe#~o|YWPlg5>s3N`Gu;K0 zEhkisbDCqZ)#Icg9tXGV)>lz?ECzT)t~v(Vp+_!dq*Xlait7W7k#49OS7fyttIGWo zQh3&+VqX{d>MC8nqmbSjKmVEw99yj+Y{OfR{aCZ$ZNPA@5%+u6@mJhWCBKqbVqbIm zyq1}R|1{n+tXl3pfse`w%FmMlhZ}RC_iM>ieb432mLJ5Nhoij2_mt-%iH+1Ar&;V! zz?Q}VF{F_OSuD6?znj1wnC=tkRn!yQ+C9g2TQ_kCCqr8|__T`6&Q!>&hE>S-ldX=b zH*sop!upy(hlBh?PEm7vy|{!vap7E-WP61!RiqPe<#X)nR@_b`kb^F3^%I*Ks!RxR zT6e}IQYhaqYUdd8mRRgyh$x(=uyrX?yH~&a5NQX};An{ODUqVvd6Uri0tTkd+m!P* zxAAez-!c+%-o`d1Y!uhsKmy8UZOkz9EPexkyhpzxOG@7#{ff!Z``+lcI)ZDCep~n@ zTX@3HTA=vR`16zJM`fGHq%URsAlNP9$6r<TeoI>o2>n)f2<0x{5JCB?noJ4pqWfmU zzo~|)F@HkgWzO5H%^<_0$k+Peq*+nY+9=5wdNylb#jWSg!~D)Oo5T36C^$uf5KC{_ zkec+S=!U-CIdZUn5JdhRF7J{@#-o!S(O7CoMsF`->~*oMvr`odqm(f}k-Zct`gvT2 z<bdr`6&L+HT1`z24JtRo6sxGtzTsY*5Y?+a&&8{c_<bmf>8$05A*P>|M5uhQV3_UK zf*Hm2`*Tv#_=@S@y6~RD05K&-oX;Qp!r7+b{cHU={su&gJS;S>=F6~x2Zmg;#-*9z zE%5l_<(1uM>e~mnT2WpK^N6TS&N>a5T>52k%83Q%5Z<xzaRz;=91~!mX>yHVBlceN zdk61M+Y7(!P9SjE77J*q4x`V?1QLokZ<+Nlf;lBZ#(NF7{&RBV*KujqnPrWyq!1K3 zi556lirObEJ{J4HkGPQe4;3J5LE7UE&o@m~fc=*yQ;i1z%!P>`WjhZ*51Oc3i-3?h zV)$3^Nanw1(BrX<?A0sDYxT>3wWwRoB1Q0UFq*mY1kkGlBJ@dzGs@dKccpn<#w$Bb z1-%J*WT$x<_Vr{zYBiw3F^~T|&y?c)0BTg)VaOPPaqggLVhY>YEEO35tPSn1p4aot zwxzKLYxPa$N)hX8)00swig9dP#Z*%sAblW7r+$<q^tozDNwAMoE#>U<?Pnk0Eot2u z0$+`Wit{5tHo0k(!vx+B+$thHZ<Hr8p((aJj(kYx8)db)ES;(|r-=<FW57DPg^lck zO6x3%F#|x#gQ6YjVjR-T4d`hliR>aBIl(v0?Jk$WWoMB91HfJZNQ%lv7jooDKq>nJ zar}d-)!WhL96;{S8|M?4!`htpB(C$~V*5#L3%09jHMq`-*96i-YZR3x@)Pr?Lskhv zA|3Wdj__it#9s>m<Om;ZEKI-$z8D~68R^E!tktj6F=UdPQ3m9a1!$FA;%h3EH8{e< zAyVg>X{0xwM$GQHTb+@DNNQaakQX1)-?1=`?Z@kn@v~L+JkA{_*7o8`{gsne^_X+7 zGdbe8kLnjr6P_0Ru%7xLOF}$g(J7EHjz8@v5zw*n7k#S|c=UUO3!+-W!ARrlCc#Y# z6)htNX!+z9UEnp5N*kx7gt?syp?Qlu;x$(Q$Vs2Hgn7jGD`5t^0)*UU!+Kf|r5HYq zTy$r2YizNDWBuOMR4ZDZ=NBg*W4krUszt~_fogBK7n)pa@iYNw`qe0u6h2q&SL5Vn zU3Ng0S*iMkP6EoC8b&(f_bFK`TYI;5Ze@!b_T=}d)s_m-9{r+mi}QK!poSvXE7WmZ zZ#&86_70Wp`7<!fLT>4pn0mNZ^)ur>uDO*)BZB8pL2rY4y)0I?meL%Wa|DNzU`{m{ zcKs15F=v2?oG8`+s0u|r&=aH6JXa8lEIG1Av-HdK&SFH3T&c(4&WK~Y(?Cs3B^@4< zRd<$F-7>2Iw^*2O@tu0tO0#r&xWMvr_46(YyL|jYrb21&H5MJIy&{%P=}$R@=BY5; z0BEIha(-BC^*Q18;xIQJe|dL4h0o@s8lhA8B9z}#Ow%pq9iAJ8IUz+h4i{prV_kP1 zbdS{BW8vY`W6Dg;4JV%-1N(lH4QIr@Q;SEgS6O7|PpC?W(NEwCf+IQ(^?4lF@f(@5 z1s`^NN7%QAlTmk_oHnnKe&^VZYe?k1u69+0*#0r{2;n7BuIBYA61b!{H~wCFbD@fV z?P;ZY^S6Mtp@J^ij4>pdE)9*wt*B0yNTMlL<(d$`=OO+IKi3Hl&@{uF6K;R6n1A-e zIMM+g)!3AC#~#Xri#WBgO(dy9j7il!#8)^*uPu)C$E_L@dlmaHrzMJB>(YRmd#R)X z^wM+FKQgy<@!~}lwRusD(!$&N@mGDAUP7#9p@gp+76#~^A$nWzptsdJ_y>xq!scOJ z`(ZB3mQ$+3bo2Bt*3ILwZc^{cVGVtIVkKRP)bz?sucU(*mP<Q0LR+t%AseUzjJk$T zL#HA94P)nq4d4#b>5m$>5;eZL<3@cdj+v8Riem<gIEvWNnQG0j2?TB47G!}nbk0LU z$f2pP)1L)m+E<XO-?jFOE?+OZqQrdkI}rV@=a+1KCgnT$Ka2k@!lye(6D4V&)r@Bg z-$@hN(81R_(*0F$UuiR_fJW+$>HM)B_+iagRNN{2C6J0xYMs08nX!JzT8MT3mgKP9 z$q12)st{fkHSw#YibOqbDcNvFf{m8#R<uEVm2j{j8(vtMO>X9=hEwgR`Pq&0<A)|~ zK+8Xds2W>?fk{KQ(Q;`eo-vOjUTn!FUy=fU=cN4s^<G#dpA~jcE8N$Xd{OP-CXP7q zFlq7*?;_+KF6yq_z$EzG{Swn%b2%$9ejppdz)b3=5oCw9<ge6*840!#x**4CS}{Bt zf}kK9p;I5r*R;+$D5J_+vPEod&?3!7k^OM?WH^9hV*hWRrw?hFUMplY5u;ruhIV-} z&BZ5j?sPbY5_tn6l<0{Bj@b7*+TG;)y=CG5BQu{mnG5Kbx}r%dd;uvW>c`+q4UxTJ z9TPP8OWuI$2a0)F%@0#2^qTB2bFy>Sa30rrwn27-Aqtw5(!#s=xX9yLrHdZd%9F>n zfc1}Rl_dRz;PAK}Nb4v+*)CRuAAThTm>aw_!GJn*aER=;5@*^|vE9PI>i`{{MX?k# zipO2lCb^}ZB)gBeb4xr?;WW;vN09^A5*_~jZ}#2?Jg)M-^YyXEM#jQt{1>$`LA2^t zDo!I4LZo1b21YPr&wxotBB#2oTcxQsP4=qYxZ$>j6-W*~agI;|0i|VA^)}t>yJa7o z28f%GWNd>iOaR#qwlD#d<d#Sf5&<C=#=-mf{@(Y@jAUT<_HJ+Q^W4?*Xx?+)_dW0b zKfnJ!c5XiSULJ}yUD2jMSmbOl5nY<2lx2*K=y)dn)7P7hVnqh9`4y6eNJ3)rYAMH3 z>jbY?#8^!2`b8#i7y~hqn6Bh05tC>dp^%;LlAi4@B9VnI#;IEi(J>V@PK>h|gM{?8 z;9Bvu0b0|w(jKZ4SgswNi4G%Yl<C{6>(~a8E{iT$?0S;C^JKlEh&To1X;0EjQ&g_w zxzL4>afyN0N=0nV6oCJzcA?HE0Cu#uJvBv=E@cT2v4rmDh|$#t;?Omn6CC4lif%<C zJCWcNyN!!p1y&%0jmVBrp&VH;`=s3?N^3DPS(kU;=!ofS2*Gloql={ePToL^1VN?A z3)<FP2%bj#ny1f#B%Q0=B#Hz|l%%gYVw6}2psso102%7ZP>2p*jj)fy7J~!%=)3gb zM$Nh?tm^a}%jIe4EKChFoWfK-Zi6RMh1MwZ7>O))4(<c_;34pqJ|v3BG(kLr`&F`x z>akBG^xGV7CteN)<QBOmQiN+2B~tX{=L|JrKD_w9DYgh1$>YGmiCo`Oqh36xEjCLz z7yCn39+a`5zgLx<@ZD(U3QjH}JtrX(;B!Pv_y>%J5Z<{^55*duiiU*zBUY}7l0qr> z2ZziEM-ZfRPLmovQ3S?>B)Pq@#&2C0QBk+8p=z>KnAd)#|oJrk<g0t6^6&PE)t_ z^zUkQTTQ<J`Ee?#v`*A^(`VJvrF-<p=>wBfn?bMD>b6?`WePI`tqEX!s?~0%R1!@W z!qbU`6LM*$fjztut`-TyW=gn3(U|XACyY#{$=8^PbXlctt1U>3+QYx2#hbb<GgY54 zhNz>@L1Oaywig-*#UjxnWUurRaF%OHH64*nzW%?qA#ogh5OjxIL=NaqP>2FTT#hIr zAr*h*Nx(&jJR$*<rrQuay|CDnZ+BUYBi##&Xy)CZ35C&D?2Cf4U9ruwI=L~E#jC9q zLeZjV+C6Ara=P1>_`p<raD>fiVyh#(Qfn)gbMI<!FJhl^XDT1_*G4F}l0`D<T-Uq0 z;L^E`c-O6~_p6Qd>Ih=G<g6FaN|4QHD+E7Ku_Y_6HdO%r5TA=&iYi7ARxuN#jEkiP zr;U4ASpt1=86PR45c5EQ@@x&r$W=8`%@yDvHQapPo{ExfDAn6=<<+R-N)1=J_VT}b zrYi1wRB=mWTR-izbRR@Qx1x%hM|sv%ah=|+2?71{RdI7u;nK^d!j+dfHQlCmv~a&- ziz~e8gww+9WjwUE2{h$y>ivZ39wy$jaIdorenvf(r%@lac(+Ev{$F8v3UHjVOUATu zhk1NcMO@sZI7M9DtYt;qdrnity@y?(OOtKZS^I5vQ<Wa>Jw$e(P%G%^HvMM5{YGlI zW@j6TB8jS^f(uCiIO_Hon_v(o^&SrV4t>c+4@pE74JejU*Fy<f<F#+q8PjK7j81N5 zE&ziUmcO5|Qy-F;j#|Z7lhLxRm7vI@!BM#A5~4@6$qCWlZ%rStrhiV&l1A=l-asRF zo3TS^JggAM4)I#JJE+r-H$$Z6y_FU&!<}g1-s7}zt<7Ggxuf=thWUIho&<TEG1P{z zxxt>r$iYrO#z8dH$vA@=nHYYK5zYrsVPPg0Je6=p^1(Cm1s}i{qx}j?J{-5O6L5&g zIee?I&WC9q))0aYX~_{-hi33bbbfUBy!95kBavYf00&mIf!J{1_(cq5!Nl~(6c6Od z38X9`T4zpsc9Xu3Ke*gFC``NF?p=@dX!8i`=_d41Ek3HJ64j<CWJPs^v|{s2I0+i5 zPGk1fvc~M=)H73K_K+AEPGj~#BvQS`>;c6d!D1MNWutu}+GrR}#_2hwfdK)_s4glg zBJNEb3bP<%X{R(>B72ew)Iq8|dU3KzSW0+MzV#(V8y<9x;Xz)ahFhc!Gu#F2(QzoN z`=T6oONh!b{zTgtr+A&b0(d<B!S%cDWHkZ=z>*+9H)>B9GSp$z32DAc1$Gt&)XVZp zupc(E=fI%-nrj`~{MV|t(T3hNYqD1?n6keqopjgHoD5z{?|B;*JRxUbPV)~lW}H(- zHrL?_2b5#Avr@%67^D|vc`e3xg!l6u68j~R1t6eLu#Gxf5qu`mo5p07=}ii;-p1d@ zYglIvqbgu{N(BqMsoDOChSk9_ITNlA#-bzKs>37+^FaQJDsq%97u`H+!5S3a^(Ys5 ziEI$f7dio_waWyur^x|#24Sb8xp^E!NHgcUP(byv;nC4TlWY+!5w0+<?}6z7l<@=W zmOO0C0)p!LPElG>nCr{ZW3`v_UqO2W<c+$v!yL?Tkf`^!3f$dAdi+5lD!pnfW{4pD z%gkoHng%-hyzENNL-tFJBWjvYNM7l&Lr@*Q9-R4ga9G#Bj(~i0xG;}f-&*KS2XtXq zf^n?on5|chP2h9z8n<9unVO+V-h_ced1U}J&`uWrfurS!pdy_REXx&thec_^bG}3< z%tgBuiFbiTBRqnm<fES%*JfWKdMa#u?R-eNG`tx7$Z3e4^}p&%@R&~%Y8`4Sa!k}O zL`hN0bCR5(2|IX(zjHooz_Or}<q~$56WrL96NX7ZjiJz_d+C;3(~G&j=W26t;g*xa zEJ`YcaF>Nn{NCi)2elnFg^qsWR61dc?yiB0(T-RT{5968y3zM61_XbKl+M$A&mzM9 zC@98@7-a5WK$&dJ^!jPMBk8_cFS304a;fNanzZ*AU$aZ0EtaW>NV$}W^BuCWA#ZIP z<*iB`w)e3AF8eNBq~Li8X40<npq*30@v&7b1F6B7UAl&ff+P|zyQd8*KRW21H(yIA z)(5{=ntFZ6qj51Dr;f~^K2B+i=R^>}nysPch!JIxe-(;MwqD3zLz+lIw;BDm2nJ6> z$LU8tda~&_3`7aj^pMGkp7#Xt+IvYAMBk!M?{_427G@1_#hFmfoiR#5w3<jQ5+LA< zfHA~mbh1{E(X|tsNz)mxdkHfCVD9)K3{zI`)kga|dl4ivr%$ZU>Mb&LX>J~sLg>Fe zhvoa+nnR+=3l^3zOgd4H1Q;%)4G=yg>O2+-(h$>^K@wjEzvWIVtW0^|D4ITL1(&9_ zL%v_W3|RSE7o`R<?x3q1AA+>5DrXd@E`dFvp1CYZZmK;yTzUmi@)e0#4N^5{>rN8Y zU4t0jtUH+=cJsmkS>!lija<iD@FJo&8vd~VWBiKxQew1(^VI0h?#2kFfI!F`UnJhv zb>Y%!?4W9S6mGYboxRkSHXeSNa2+x%g2(vZ$D#ny!`uiwKs#HS5CxFPihxSMGg463 zho-t(@8Q6Yr~&vFHZ|4v?RM5(oIx6cBo|C8z+na$R;B*V)a{z((<){RQ-jpp<jyr; zGq8%)X0@x@8+sU-5;dC?78Re~UF`}wIiuIq`lj9GVC`0Q&L&JwwOF4wrVJF#2Yd1o zdfCfXXk*j??uMx!Yby`tgZ=s70ftc#x!}PZV46+~g?1_t>blVTln-?m=zR`FAxKlw zD_z>atD?2~bBMQ(6JlaHM|3!#GfHQR;usK2q6lik3Pgv#Las%uD^--pTIJ)Sr#Rnc z_koDLCnQ=fqO(*XKbXpyof1?Y0fQEDxfN@XUNHs8{URBo0QssEApgol$Qg2KGKwB% zlHFBnvq<a=`412O{1oFKG6J$+APxj!)FUAV|NJy~C){`?2VxbtQ#SN5wfUaOn?U4d z(U%3^j8JJNdSv2zOUv-h2fNDf&54cn*pp&AkC78sYxkS)E`Xn{U;f)urzZbwzl!Z= zxOCtEQOs3&Xn#FAabu;(o31Vwd1X5w6E3$z2o?pH<twO2YL?rm0rO8o6m^61{?0t< ztqLrfMrhQ7MP=a$z@kRoyxQa1Ymj=<D^7i49<FABW4fh}^XyMIKqGAYaz6_|YE+lZ z%AjuIr^uC9m54?~UWJS}Mx-NZj`D#Pji_KbM0b}6m>pKc?jIp@feIO5hF+uBAY@#W z3trB1`a`$Y?#xC{=cA|k_RZyRx7CR#cW|T#*yXH~zXyosBD<X_As@X+egqW@@No5Y zK6=i>9-vq`%*6ty2#PUM^byItC>MZ+N*Hr(Kus+r2ur(6qR@RM=#&mTqyzQ9MS^Fv zu|%9SN~9CwoxGQ_!gI5_IAlOa_&~n(IIF$}8@R7oMH6iE#y1jt*jftvrAjU`S$?{2 z+N?X|wP5qQtg)Jqp8s!U<y!Pa_L=q^$I%GKjH4*(?yXQ1ImaaB3vn^*-{Fe|1el&D zvYJsRMZ`o1Si4?*v2wMk)a^>aW~-rNkv|$ZlopW|Mlb1U^ZRwit+R9d%w#|649K}6 zc3ZLm24-Hz*<^rHr@STAS-Jn`BC|`GXK;wuBRYWGzzxzdYtbC&VBh_-xl;b*!(l#T zI%-G(rshf4n;FA286K{51G06n+1WsLfB;X(bCPIA{Xz(KKzd^=e|Oh!u`5FF<9x&2 ze^EY~N-lm~=QX<Mr%5Zu*#*;LPr36{)zqmv4>=d1mLrTGO|q_v5<$PqN=!fju5+hn zX2d4}000NZ7I&O@2fO?G->fbyEzD;ttt^O7f0wluk`-~V*?pW^#oY>+QMS-9yHE{? zvDX{<vH}MnGPpFQ(qY&ONH|St?GhdG(FER%ifj{35Oo!uBRZ{-H+H+G3A_CK>gd;A zPcByn6eI$+YmGaiWl;qWd}anbV3ZuzSjE6wuNh%zw5u5TP+$OE(tR+dyb*>4Vf;8% z!i5KV;t(^YIoN<Z0$30R9G=h7IU69@Pf?wP`_zEW)P1=jv%UZ&X-56nL#XIQN~wOy z8P|8ydv~O<EP_!GBE0MZ@0{L0g8@ukt+QY~HA&$z$Wy6`K8eBY2vF+bt?FwZ7!>U6 ze}dpz41UZuOf$&E;D?3aM_kV~(!oD*EFppN728t^b&x64zSjQMX|4BNdgrrYLWHC1 zi4F&pi5=F1*@VXH2c-*UbeDX*Sw|Q~YPiB>^Z*?%n8xMX8x61wxA#7{C`QB(RU^Kp zR_4aUKTed%PRRb(3wC=uJ{KZkh3KaOjCD{}=oLBW75liWOS-G!9favNUDP^?9_D`! zL!<Kq=#Qr>NMFK_4HNgej*cs!OdQ>O@8kilYdIOwK<QrXCY*TZqVgp@=j`N0-MaEl zAY7;GuaiAG+_aZ1+`$LY;pAF%>i(OE^A{{PgLZ%!z}AX)7p}C4hZxB!1K6+k8@Qz6 zk_%V-IzVLVqG2i%n#BlRU9tTS%lB+_kefC-%+>h_H)#iOch#NS^o)c*Tg1MLS36cC z^o+(FrUHPwDe0VcO46O2C*&4>zXd4FT!<!<+X%Y7v;uUg>1rs(YZnN#^yG-V1h+~U zDVA`mtAY=jX>25+NW5I`Ln?Grve@ZNBX|GBIybex;tn8i4WrJR0(T{BQ1LUJ@|x`# z1YbR2K{vnFAL6A8RFH0Zv#+BYga%+|AUdSaQOH>!9V-UEm;7AIv{BYcb$xRU7o$;@ z4m`nr2g{JJq<kD#s&evSve|-j%Pt=y?UHYmVvVUQ+6BF6z8WmsOEWKM>~LJUKRT)l z`W4EOMB3GMK_hH<wVhpt0-I*d{C!=?744vAmTu*WmZ2srFmWxL2_{4r^%(Yl*%zC$ z3z}kcRxG=KbIBy|O3Gn3|NS<wm142eD>S}W84?3aY>Pqz`)J9+%~wza{L1*x=cz1R z_fE-;0_=J&+Vw1e0FIl(yx2?~Pzsjli;Y>qgiGczDD|R!I+|J2p7^qp9zud1b-`{k zizL{J@vmIWx)lWT8JpK;9z$m$piI+PBV8!;s}lX!3j%4rXc;OV?9b1yToSiv>Zj~G zXjX&>lB`5C7S^!6EWdBfFZ4EEl|`#TS=W@58BUy2;iJWiy}OQ|mDHs%@(4%gV#ZJr za&vYu14Zg;6z2-tMarj|W?aj)N+iD$$4TT?uAQq(*+r?j4En4~xw=FRgu9b#O$JV_ ztz6C3^}DNC;AR^AVvTWl^I9S34qNAfoxa#1hGD-B7Vg1rJ8hy9n2|sZL+JR0U!;78 zjzhf&UeuCE(D94P=(vN4Sr9YsrrV9b(`bs>To)}Yk~e4cJWVy2_lS-do5ya)u7~W? zc&$NVT9s8Gz(7i<E^!G}U_jLi+SC3vc1{8ja08$gRj>xQyOJ2gkZ<^7R%thV4fdRG zXQI5xa8A8Rubn(xHtDyku-x~ARwab}TGw0l0b66Eh~^kOl`c4zPBC+u4<@ykbwZlm z(-&9`x_t7%L_mYs03F&s`QW=v(rOQ!|0{*P43ol=LcVIWBJOfhW`WyliE?@QzW(bQ zm|fT?px}*R{3+IeObRjI^%DQewIc3y<#G^bcf2j!&1)^slIb$boTY_R=k4x0g?e`h z{zIJS95j1Fd2CLDgTL6nJKXwxE^IC8UK&<_`V~E~2LB=V*x4GM+r~))d*9*K|IPcF zxhZ4Ty035Z_q8|)M>gMU;<8jT`JWBV=FU`|)HOPnt10@KSO|YIuY7xd;dRb?#2jHE z9DRX-sAeGy@#R~v5K0sXuDp{$hJ~Q5R$(F7#;dRp=7$vRSqR%d%66OWv;s*X4wq5N z;QTTjZn@I214nb%<rP4<-gfX_h<=psdf6X8fX=cTQ@IoC$)O8Sm!YkInfIfBjcoK} zw(0o-_v$mb=wS}98gAQRY6oAwL*Mm~37M)-a%?)82X+DGbspl)4pYRu>JevH#65b4 zR9IFgLIp&eVIF`KVM~}>7pX%>upt#~Ry4kW**u|L&U@l(@%c^*x~Wx8d1%FL7~@Y+ zcD13GBrx-}61P<gXftiQ%P1AZzfa}qJXPGdrLVq&269z6^apXPJA{+#gk*3oZAbLG zX%dr2rUktxNv@$9(H}MS?znTbEcW9VQCWt@;1F7&Q?WhTodHY$=Q8`78??l_N{Ral zr%k>_)lQMQ;0<dQq60;MG8iX$saQI?KmBP|#<r@A+*q_eN6h+o^_ht$38FT*DD;Kz zGU&3<b&S5&<>J+LAfqw92RaDn0{H;3P%JNNjH?$(J~pJSIC74io^ygI&V|)UZWTCA zT$OJ5_b|Yq3DIa7uL$6Z{){jT(Sd9eB4J*`Tw`S#=2IN?C~(()HkU}YMUUw8&DnP< z9dZzQ=8qJDQ7hms&mD29m-wP6#LI8gWN)I9^>L~W1(al+D0)a!pjE~sT3?0WQm)d5 zNfS?Jh<8EI3V{%@6DW|m<0BBAf)X(9zvD?|04D<&3kYr_CLgC7Rmu+45RE5@JX9;4 zF4w6{z~o;eCww{N_)v)PZ83Fjtqq}&wh~C(rFZsx5237&Ex(c8{E9y7)@RWP$V%m2 zh!P<Frxb5YZQOLidx_zr-&CJ^sXs??+lVV@1Scf2GpHV-EH1odo6j*w4r@`42La_0 zuj@B$dO&fxw&<~(jw6yJkLs&3OgzTh<S#2~I=ZiF>?>~r#JQ~at`~`W`$9G9O<Y!# zrQ!~%0H&>x&|FqHP(<+YVkTk!H#-az?#NAx<^)K~ufeL#d|<#Vxu9!x2-|b+E7DdZ z%tP9n#MLQx8H)C<D(Wq=BAUjPTtibdX%*SI4l;S!IV}RlR6|J3X_{14*U>7YAvB__ zprg6=ZJz0}Vy6-kmlXi!96ZEmG`p>o1lBK$&~12wc1F_`R~0$Z^|_XYF4%2WjM`@v zD@p6f+AKE~UV}($LTGZzb%WuNBD)0V7-MT!j}`bi=QM<CcQ@l)B|F#V+C?EIJ16{k zPBhKYn2m6YG}~1L{1)$RkV9WP$DfdyIFGFqSd6~1Zjw0I3~3Zud5*>Vg()f?$94_! zX*Gc)X+?uYjYVe4<oy9+pR&U}_EcG2Bh9|#ZIrA{p)85p3Vo8c^n2WPLI)=TsIshg zIrk7cu$?69y10Nw2fS#Iia}*T?#@ETo^GTdlynxM?)DXD?g5u=s-fO$bYi8ZI3xxi znsz!HMo7c&1Rg1F{JA_)<P=#$B>Pi=7KpWwX1SK$<-99!Jk+UNU<_COZ5HC@LU@P> zg`ghu<fnqLwgD`o;>BXIa1N*liKra&s*i*j<og~#*llTXjuV}e<QpC-oWlydQzR}e zic^4Y@c!hiLOw0z%VHn@&T&OKTOPqSNy&NPIg^rOC87A^omLo{1TS*k6pdN;Khlqd z)>wGclqBeowC9C^)PRco>E@TMV)N`KF_;1=ny`pu)wvNjdZm5nMmUk6bBr(DWHmxE z1S&9f!-TLBO`5`^4Je+2CxNWIYg(dcU?}f8Nt;UK6!uj6jf~{qmC^~pj={n@*FIhf zw}R6ALJ`h&Md}|CdZa@%U=H(8A##4+7^gz2U_J`LXxihsf4A!mPZo~l_7OTs6Colw zG#LcTNUVn6d3GzUy?8ofgr)4oCuOxujT0kMqH;IUVKqMyns;ps9^(W0q1^NfPZpQc z7f>DbL@iB_F*V=L5<q#eXv^$MW6^@Dl^Laml!XH#F)_AtXt*D0lb~bdX*0v?2ilFU zhS}kzs4cm{c7Sd&=E*Rpz7Xt}cMETzL0V2~w)C+y^kf(2=o*fEN_DGm7fhp(ZepV3 z$AaK=7Zy0J$OkV7JFBPVhUWc5Z;iYu)U~9r#fQy4O#5)0ZY$k@T*4{;KJCLApRdh_ zIUjEDVF#h^7rioWI|vhY?F{KVB1=}J2gj+ZN1r+X7-s%3Z{fgiu?ZLyL4K4fFcNz2 zYR)MEUE#ny5&4xsX4tZLuW%APUdpbQXeEyk`lxL_YP=FP=%Yq_6enU$?k&7mRAljt z73|2&-;*TV(etJ=I2uL<FN^k3>wY1xQWhc!#}%60ahmNFjLaS{=<d%WvqT_;BwFu~ ziwbxHp%3uJB=ek9o=u2TQL+-q@N<={333@x@UD2X__^XtLhn2BX2FSmopskCs$vFt zpf17VX+yo`aKd6`CK2(?8X)eO77KyqnVi}5@O7NqGaOi;#H0hKUz=H~OdSZl>Ug=4 z2-9K$ikdCMCz>cLy&}g~W^6yW`LA@Cst*Y`I{7*tD_k=`y0L%`lXc=3FV9V+_rCr} z8TCGSzdagvdzvD`{*OFd=5CkzPo0|hDc|9j_XP$0hHOIzsWQO8DCuAzO$(`PVpq2z zN;uC4+>ni0vUeKt#L^oix0%>g{xJT=Z_|RkL3p>B*c~OJvut9w9m8f_Pn|E}QHsft z-x$r1NKlwr)qtPV0BrpL(s@#Ul9`S+@<`LE7=53&T~uZEa`9o<4s0GTUz2Gn3FFcB zF~rGfGoj*?g%iI?xbU!&sG>vp=1?A*ND|2t!VMk29+{X%%*Fv+aqJ}`eJa-F$#<2+ z)0ZIvGZy8BM;>))P)TJ+(;Nfa^aO=e73BD!CBBk<i!d;VK@(ngK^-6w#Mw3IHm&MQ zOz;XF(UzBE=VtPWq}3)hC*jAvB%t4<JZY7RHV-Jsy9)6tgX7l4sdK5IS?$o)SkJqj zwSCIwcuV$S#T>6Sb9<^mP1Un7>@kI0xQv#UFJV?)BCLx<WTeUhA`7MtLLR1h`KUc! zCl|(#L?y6v3aC+y3>K6W&!wQD3k9%sSX(Nbi%q<vX9gsdSl}&N8t%5F%OG{ZXd&G! zH=M3zC53S75xtn=69gSY!-;v<>IaIIz1<{AP%l(SFw$>mYOvRPn+INQvtsgc5(+hi zY*)q0O&LZ5uecGyJR+1hV#5+-eBoE~!NcT<)UPqpiqMYY3k{zhRmDV)TZrNb!0(*~ z18LkqJcThglL&%*35Kro(F?f<Nmp1oRE$OA79zc#*b*N5CISsMm+m>QuQLTP5dgJn zz?c)>ih$P1->%@1iTsKV+!9%xK^g4$V(bBGq8WR*xJG>&pC$7EfO}<0oUmpYd%z|{ zV(h_e_<}+rp1`k}WkAdw^9P{@vqcEbVp2@aDn0)LG*wY%|DjzdCMX!je&0tt&DXkA zoHwOlwjE~K_mvR|Gw-XhN^TZ!>_IcB%U6?3X}$E2(qxCCj6G@=4fV2l6pX6oV2Of! z3zQA>4l?o}3l21mv@3v4{Po0bGc~h?GWH-O&bkb_nHH<_OM=AMgA=CA#2d`m!-Tcj z*%TpLwaE#s3#-`-P-yX}@+-wyvUa2qc~bM<Zkc3*qVq~HM|c0J(^`wl4D{$R$8&jd zBzK~PGUC<de%py$)>)kEdSeg0d|5X3kk*TtIJ=IgOnmh(W$WSNHnM;>3~2#%5LGxw z6*A`wL9;kzpPgHXUadCw&_X&}&rYRWV(tO9(M7Y(J?tW*3anFzS>X6nm)KU>Y4M<R z3fU|ca>ESr&gN6#%|A5qs0-afE@~?=-tulf<D^$Uinq%E+CQhjkVQF>D-rVbuKlc# z7Pc63N8gELsE{t+r`@~5p4VbH*a`B|*7-nK)83AmT8ywsjWIUscv(}zz9+tE;1TeK zIno4Q1Wi26?nB9}xK-PI0Ed&W53C!@LW4YhH~_Yc^UXB-K%vSl>kd^$ALe?a4|8W4 zec(<t)5;ivIL+uo3gZ#Z=0nPaOga#EQQhhiYYC|nMS#I(0T<ImhByDZm|NcYaU`1$ zHa$X^Nj4<iLN~@HgwksfZhTd^Mkwqb<5$a6*N>F;u;30y8UkL*UvISwzy~%t$q+O7 zU{dSOpc%--y^<@LtGFH^bYTZEYzwrc6rcF^d&JVxSxa-8<uYSMK9r?^%O0>zL|0S2 zJO#51KWHzZ9`z2I${DvQ8@&oa7*?p<h&ah5Q-<1)S0QylsFHmCAwf$6zvXy+!Ru!E zfkryZ4>S~qil!SSt7>W2oQ{+@YsipyW@AgO(uS(EaocGdJsc4HB@93T<5g|@!HuLw zK&_Gvl<a2gR^#qf=5Dk7Fnjn6y-hp+jy7VhS>;i)yR$rW4ny+_PyYCk-;rj<3~vS~ zJfZf~=U_LSdrqdj#?!E-J?I1!M6+p!y(H>S$WbVA+D8hY(ffoC#|c5M)M2bYbn`Du z5Is7)bt~!w$WghRk__pcPv>X?p-k`!J)(`baNwE-n^f6?*rj+tDZm$HL2BvORZhRL zCWMaH@P(*c!=!pNOFKkax|QVIIcNhYs;3gws3<c9y-(1UYacXXp9AeoN$N=0;k%N- zg+<toMF<5ZpX<yxJBtw0r(1+TL_!FdX;GCeLbN9qA@~>;A*{oqbeSYBX+|MjnMG+{ z8PX+V5f1UvEVxu(B7#F7DjSY2AP~$KhH3qs=|Z9Y<fVC{A2^#38k7P%rC#@y2FpML zVOS+zMDtM{!fynyID2z%Z4aWCt=b{^t2Z(T!P-j<&?T6ZUxBg*@u2KMBn_lZiHO|f z?^f(V6r<x}I&7dd;%ENNvt^{}AO5C{RQ*xRN`Y|=+AR6rZgqzbB#5+=4kLb~J($S% zI^RLz-P6GdXNvkyYWdvt9K#M-K-xx~PBrn`WoDu-y!$vyLrc~SupQt<qXoOj_?N}# z0o{okNQWYliC*S*ny~a$L3<NE&F^$13`BO}eZ5_KE_y;1=z4_kXicJBfsck`WvLCm zu!-Wz8>b*3c&x=86e=JHR9|VGLK2>v$B7>b|9}aw`i!5c1$}wk`AN)HVDauSMY%mD z^(QjGj^WcxeC@mE#Gi%)B;_Z;_ets)sc<O+j0~(A<Y2;5Lyed>X=`R`v7T#q*0J6w zj-U{-7Fq@QYlayI#?RYv(B95t(oXwpn&O!qH7VOPLBz1tms*n`O&G=#G_L*U(F&-9 zBz}v0qJotOlwlJY0M*I!OOdjG{6!aMgt|!(H_nSO3zlyq3KI{-h*Lkk;v??^@C8=? z5TWtCF6p)>czB;PYy)frvkpg`&eZ&iNhHS9q6D(?%yBZBHxtsg$YBCEtOi}5YtxY7 zY@vxc`V8|5S_YBo`xKehdq-r`Jd^$%V3LZ_<M=X|xM<k>{G%!~UYBB|>lHu7dm(yA z&i8!hv@^yTkUp7uV69l8wO`jkSkE(cj;IV~Ny!s>Ca#V0CqHkfNE`d#;g=5oK<*kF zI1hVf*3C7lQ1%__XV`Z@QS-`C&A%)>?4VS^o@dI!0~o^9BDTQBN<_Rm%;`Fq2RAw< zADlS$u}i$HmkG9WRgLHrc~kQaT3=)^k?a=rf+eJt<XKc2b-Jv*AyB@WMWq>Iva4BC z8eYNduz+T=s5DPASyVzwY=G3qawE$usyP-tla*G@qN=f`I!whd7t5cps0_Q9Q?64P zv?>@PWB9o?%dNUG*Qnm?Iv9&e6RiVWD}-^G&7#s?1rFiA%A2}aR66*hBTYx0P30c4 zF>G2QWt>CHhK<y8l=X5Q&wZz`>~OCihAD;|BFDW1ToF!kTlWVW{Y7oRJm4Wn1AzVz zpBC`Bl<0R7)k~Ca{zgl>$0G>$_^g~#N|*bQAFF_EyyfF93z1WE6kL7k>i^WG0XV={ zg#!#)nNGw~xlyinoK&5;%_OqgTP)9=R-)F8+M#PvHJE~><BKFb<U;T)#v{anv%-<Q zf?>~9sjq?`=!ViGh9FYHQuM6kT`msg364G8X^PNMSt2aT6$Df%i*m>c((@Jc!>l~a zH1Z(PcF&!1Oeyn_4(b7iN?-yALlIjJGpszozFH)P6`ZT}Sb}&Ewv=o<?B`!LAF5og zUp*y55txI3P$~|VJh)fvJjhA9*?G9i_)-b0Dlb-*GyUL@ls9*|epQvrb=<Gdu=CJ{ zod-wW4R3nYajC9jV3-(9lnyj45J{hE{xmDSgvO=nu?%kJbi`?bG$BJ4y2(he!LWZR zi&l`K-Nag?v)EHPNKX`^n}{uxF08S0E4xNKs$n8A6~~E{`n*sEK{#f=0n-UvfF8Y7 zg3i=E+J$15kXxJ{m$&wQeOmauxIbl%kCy@z%L$&!8%Y4dSy=)ugZdLxzujuP8kexC z%;rPR3jt=FA?ZTvG}o@vlLG-fX-G>yy;27Z@v=Td)`8Dqp_>ibb?SWJ8$N^K)NRT4 z^H~SfakV)zal$uYTAB2q8t+IM0C%2I^`EGYou{GpL;9wSDmT;#r%D5r)|fM@e%!4| zpXZk$_l&CZxoQ+qd%rLx&5Eo&Xn>R97oH}TVAXJ!2U?>_ifopdp@%lc7yeWtf%u&H zSbv_{$7w!zP>CQA|4A^G!d*Tb^I@6-6kp@RIX;}$hi<_M-QiL5M=-1p8J`V4W1WRi zM2QF6$?=LZCcg}W!LEwm($L8HG0tNcU*UO79pu3kquF@Kd7Q>=7l#S?sAiSV^64h@ zQQBNHEj#2|p8>7Gn+-C7^%c_&6rU11$(Tr2*2>GGxJu>>U3T!io5t4^`-Y|+3aC4f z=1n^|yhS7El)4H?j+2UwyL^0^SM(~lI?A|=>^kIJDTd2z1ed80o!CBd<0iWfo~6i= zQw1P6^m&XYogOxMoE`#p9B0P;0t{66L%hHnf+FDz+!-nZ=T>Wv)$&HXA=VLUELCiw z1ivx!4ilS)6D4GwT$-B6&l)b1O<Ljf6pPW1CyqQ(MrH26>Y)?O-1@DLzma0aCVJr% zD|S+*WAbzp=P?^@BCRb`tk}jwMX_Q~>*wy##K6Om53tApp7|73k3({5mr1O#(J&p% z-aX`REsQmT*zi(Afg1i1g~DOFUIZS$U|rb*&z*)(w@Ytpzu?PZGNM%r>H{HvL82U? zlwMks@7fDqfK1@cFp4B~d6$85Sqw|~oq`x;l75z@YoAE+(bO8`S8<a**F(?tPXN*U z?D#XeF4*Bthe!~^C{18lXo#8~!=MQptHm)XyzU2e?V!|LoV_5G3x1|nXbtJxAy->3 z@JoW^n8>5HImc!`P9eVNj)_9zX9i|GUtUKJbmI_5b>I%QHumigcr!o}G(~<F6V(s^ zXaJ`vjmw}$EKXgd=OLbj>D3Xko`-3TcuiW@S*A{{X4$T|?E;6z3=;BHy}oLiaB_US zkCP44Fdm2bG?|1=sURKFFg89#6iy_W#WR^rBj{l@NSM_aMH%Yl%ycKIv_&gHImUgC zLf07I|0*D%eJ|v4f+XU=W?xFM*#ayXK%@=Kg>nd%2id%tu^<<^qW+z);Evs9f@Ta{ zJun_q3{#5qLbR_U+Efu;D$x}<+44FgDN_mDPMMb)^o*=j;Z`Igl<TlC5JnKLGxXY+ zWT0Pe<`d+al|d)q4l;~$$mP%{h(<gMo7_bzETKa5%gMLZFqY@`(hP!r1$NGB1$q13 zMy<hQ-Xow?ndnePHoWH}BUp@nm;t9U9i8W}X>qLYhuE|@0c+=IR?B89jLvDq!>CIr zP3V!UJWCk?b|F_NxPrvs$V4PqWCm|;#`Ykc>7{Z~ocRc~ghU}<9Vo+cX(BbK{{-Rk z=JYU!#q`oavMfQlMo!M{DeP~e2`X3X(&Jk>jS3g0rbex+Mz}Pc)Cj^Q<jNy2cKNx? z4(*aDJ++a>7($~(QE5~e!P36qw5{Rh=6@q9Lrz#xTQS^v3!SqbTMJ=MP>5>M+^Y#r z641~rLk-I^fSP-1{%@jLhCH5*UR~!}MG=NxU8&}=GC;8AF&XvI(WWELboUe)%b3+p zy%;xVnkSm6wbgX6?^O`2@AGKXOHy*)BItfcp{0-3sUDI{OdE|{yobFig0@gDjC3GD zTPP!1$O4j+OzdSxW-S=^h3T>)h}=YmV!UNB$_e)yp#^D$f@Je@@s{@pxB9k_tzlKn z{_9r7WNh?dn?ll6ipe1wi|9BKfGaG&zJqat`9At+XDo%3hy-VX1O&Luvm6H?O{k3~ zqj)X3_`)Wox%`g2C2mj$84^SZ{3gU49wy`9p2(D)?CLst4;&J5asPt^P`aTk0tVDp zXA^IaVL{<i)PN+vmzf5YIum}2J`0zg0Y0@3o8MyNc@h&vX&}jx2^)8_2u5U354mS~ z$3)*Lv?h>S-6^AL<ydv3%o-}k=Bz|YYdnB<vT!rs@^I;uhzwroY~eMotHPhaCLL9p z?sF`!Y_kYW255gKY!bxU%$reox_KzT=%$ZC9~7^<NY&<8FJ#s5Fcj|kGXA=HsR;GM zQq**N(CFENV5xK#NAf#~(OR&%=d9NB*kMW--t+;XbB>5%cKN0h+y741wzx=jys1(3 zgtm~g(yu~D$z<82XH^krbLc_3aFN5wP&5MChg;)dbP5}zMLNx}trvE{2nqIa17oHD z{0sgJtR%<75t49w8A;#-nTaBJy)14miqk>b!gp_=n$^t)2Qm9Y^}uwq60R7yS$mvH z8)_y*%wuOBAwx@xHcByz7LTjN9Emt@;ghq;ZS5Zr!HKxws9p=w=AsK7VlmMX*ifJ} z+HJxyg}1S3)L6sa4B^DIi`VXb6Wy+G;J@$z%UKh^FjJVO0FBUDGKBx!K^JyLtLHh) z$B(?5g=G9)`%g#Gu*S#c*Pv^J>8sNaW0mZpi3xM+32pOHi+D;pT|@MT1zV$Dh<DV> z`|0ecPAQCu#!imw$Z9!#IOxM672)Vu1X@%CHaZT1(s8aDcaX2?9=}W+#Z1KwTQT?B z!AcX;ydpJNA_xb5KgXaWokL&LP^p{&Pbf<mukz^J7;n1m>vgGb(x&Jsde83TBze?r zSly$TiAt2VDE>>A16>fvaJjIn+s$Bk29>o3guxXJ=y0s5Q=T=Ii?2yb&)m3D29+3B zN|$*rWeR?u5`D?Q76b!daj4v5I%=J1!YT<sv(zEa)A`n4dZaD~f@t3oXWs(IzrW0& z5}OO;&yc$BnJC~7gjftyGnzt95KvvyR)kyV2!1;Mrj>(%+9d3%*IwXWTlf`&%PRKs zxcJ`?zvHYhp}$%~@+$l)v6zt>_I^@lp?4hnxB>2yBp~=59osxyzyZ27W7t=(2AjYF z;pAl%#+8Q)4c|L5G5PRZAzpRNAy$9X^e{g5ZshKq#XP*!^JLL??+y0Kr_#4%bjHaw z3F@5S6Ul(B)-uV_%X4o3H--VM_$*;CiuE~gldcyTPeYfw0QUDw#I8PUJP|f>y4?Ls zumQ7P?FN*)?5yAATj|qDpXU$s+;x=xb>z$!X=g*XGc$uP9c?5;;7~(YyBG@{iFvzR z#Eyi6@AhY*39P>Mv&KMc$NF}AbfCRyM6GVT3cDXDeU4rgH}thP9Yi)zIF81y9q}tU zLp{Rz|Fs<Y@hym)&CN&000)Li*Rf6_LM>+923Y>(L<b&YxmrKl$OX6RA`~#tJmxd) zVEYV1XnZNVHOsMEb3_nEuZoOt;e_!)N4f(P&qv?KPFEi1gX9p(JozEc+wfel_8c0b zW^y0C$ZO)|w$;28_Wv!(SeIl;uAadeiC)jPmbH8)DM%N<)h7kLa~2Aw_U7J@CX(ei z*H#`Muwz_K)Xkxe`O|TdLhan4f9*@c#N7$gMxSNk&NZ510I0oWe7JEzva2aFA=qgl zFQC?83fx>!a|#VY3)0yJ-Bq2YSKpa!usc)Zs#aDtZvmNb_!ECxt&q<jwb7o8mVoK# zoImBTd%_0R1Q#TPhz%5B3QKTE8-cy-J2VFt19&kr)%UX$CTbj>JWhVJB1xH}Ib?iM zp>tkp;dUZ}iYS2ufyPuW>#7I#<c)~-B}R*sCTImSH7fycooJmhZklblW*50&8LT{s zdaky#@OGo#8$u<p(7}0Fds|sJ+w|I>G^+g4)JmjvRstzHu+~F)qM3(FYe_4(G*y6x z$EuZ(%{yI`TE-whOx`MMbCu%MD~a@Uq*jt;571o-_{$lV8&}%RzbDZiH#jo>BuhE? zKh^D^n<aStVmG8=zXW2m@j8q@1L=DW*FEHlFH(#%6TD!$;7Ht3V|QlWv;qWCZG23J zuGa$CXDd@D;UG_EU~CAh#Eq;YvpuLV9QY1}W|78azVLNvcI3DZRluw&eMMC@Ta_}P zqH6iCR446c>ZsIn!|z~8s3X^PL{kK^GQ&h3ZBJC-1@bwAd2eAeZuX|=<D>+dco1tF z7=`2DouE&0v4{0IbkRG^Slj~``=F1&1jrA|*qgS9!d@Th>=52EZSN3)bJAnS4BQkE z;Xuf&(Dp_t5L_SU;_Cs^-6<%tD@IsE+{MwzK6m0Q<V?JV=*MM=H+OLX8rH3QvJ3Z| zcSN>i@K<==OZoWI&}d&#hJ5QOoln_?``Y@Cgj+9vO|tfoUeJ4fZpQt175e9U%(k2C z#sFs`l^Le5kj)s*i7J~h-niRkB;zoUBpn}@aStBayle7dQ#yyZxEIJz_Zn)sFotir z`p=PJKk>laITNq&166Z_47n*oxb^uDV!iDT{#~`bTiKh@P(MHF=(A21$DurvAA0gM z`*E(m4VC&XJ4k(>Ref8l>Qjbr>tCq8Yj3Hp&+cOrDG^Oz;u^l8dCJbctmzBmU;k~p zm$#`7yO%B6-OJa1iP;sQA&c+@Ub>;2u9jaruAye~BRtRf*Gn<EDi4M_%d*h~SMYA# zS1r8SWs1`Z$n1QevjTq9d)u2PxcG!ol@tShkD*-Mw+KG#F6S5pzar`CcooF5M=`i+ zn6$gd<nFK~5mnI1dU;%s7zmXD#|kz89+hNVAeHP}@E$gwOALM*1#+<ZB&6SO(S<G| ziHLneq{;|z4)P*qU0J@X`FeXUF1#0)hO4$KPg)&}f7kgJcK{u7@igUP?$e#>E?rUE zcc@#@6OvzWk6!q|?}CE!PByAsU5^3~;LyYFeGS_<vAX8<tQEs}^w6%=G`&#}l5Tz0 z@roPHag@<NB?R1o)_EOIO=AZAyn74JHs;!q5>N@I%T!!uqK!h@A)F#G{~$OTL`i&) zIl3~_OdlLJZS+wTir3C9c=b+B<z7nEozp=X0=J5h6HPfm9y@oHxQRp*Jp=6Rl`pN} z^`dB$2oRH~Oyh*o(}xzsnS?bEcxy_MFOdtu^W5lJ4!#m0Nm-`IQf>PM1br7#>y0q# zB)UZ;)p&`}I^wbyf)h9=DMl}g_o`K+v{6Fxeg{4^tctz~n)?&Qk13rUs|jx!6Er?Y zF+j+=_eDUQe76af06F>nOk=f#oP5b1lP^h}8NRzl4L>9ZD#Fy!1a#1`zH#WFr9{Mi zwHI->HN?r=(l;$36B93yq=^$U0kDwcL6dIpKscLNd*`@H&;MhLXcM0GM+zlLu3M^J zPjY9dg2@jGO@u_@F$RoOyM8uevR98`{{_}-=74^fe0w6&alcIq#SD`|378+0WOyx9 zSvM^vyMg$<6ND#+BiknK0vDSExtyRl0e7>~H%?iaVl4ut>{hFGlXGKAUQ)Odk!n{{ z)j&OlTR(4~AP++51l*mpkSf+RlP!(SFA1%i8o8#|s<yY1%faE#EiXa)^cB{PROs>$ z<3;bsd_7uL%3Lzo0CH^#we^aGscap~ouN~8iS~hsG~peWz0<>o+^J=vs8)|7igxpq ziE}36zL|9-n5Jaaq3%d$)3puk(*-8gE{ovoOj~n}e5brR6*)rhC16{Rh!s_)iB=>? zY<&lh6~ys@#L2ho<1O<{$YjV0a@4<E?1W6fM=HJ!(?0h}WXE*|>0LWOA4=lgLL}aI zDBk%(tg|FfdI^3i`s8&)v5^!QvOx&7R0lD*iM?DnPga|NFK@GmLVz(umxj(sF#<Mo zMyhpm52_gUqk5u)SfTAi!Wk0oXN1^e0yaHEo(&N{XUB?4S}oxYu<9k;fmo4nmuQ7X zw@k*IE#c1fL5cIB#{Lf#ai_Qx4j%8c!-z#DDragQXN-xs&ryqR{x!kDj=^1wUPVUK zkF4fH^P-Wq!Dk<8R87jghX)Oo22En{Ll(M03;Tb_o0jY@77!;yw`n+IDh<^7D2zuj z@4RM|Y1vAx*<j9h8CylvNr)DFxQSTrD-FT%;E3FA7-5oVFXS%qa^4DkLINMqS>a)A zc|Y7uoVd@4sJlRI;aJ-3JcR?TYN+HxxU!wFyMe=!cy|_}GC_&_(qwj2Mo712OBsoF zD2@8gwQ)PSL}?^H3$BOE2H7JFLN?Mm@%m+^p1faa%$Jn0f(Me8ZsP%{(VLc36EQ4( zyT)+VP;%7{$!viiM3a;;-EePA%Y^aOFzJb_cIR(SV|Wx6fu!@xBSpI_V+dlS>=K8c ziLAO&oH=~7s-E#f#62H8fp-rRaL)%%=lgyF(jYPTUfRy3>&Oa9Hc@xG!icmJkkCLB z!f|pdv#tj404*MH1Bts!?A=7(Tc}T2rY)-j?feZ6wXm7gaNt>fMJAzny=0TZI``=g z9>X~Asf9W6Bxfot&t#ixQaVWTQCj_q+Ej_sMo?6nkJ9M^ElZaC9O;l-*+_@7frX66 zm0q&lqRrP~BH0dlQY-S|At4(1vYSIAombHg`49mP`8h-k#At`yxQ=kRjV?)^9T9rr zG-Z#6k}Pp?dGGEpk!(LyDa;6me{YiQ2!J>=7>c$Che+;PF9CFQ>1nz|ENIbTsX9eN z7kB~=JIlX^&>k=UaU<)f!xISEft}dro$cR4dsE;JtG-I0-L|F(g!|>+!#9kY)uzb^ znqUS0!Y)@adKxTbvhXtTgBh$oADH~npYa@?3)Do405QRIxQ(9p>eo-lPrA;VfuC?2 zXr0{saPV;J6Jh+@zi&t5hz45Ni9A5ofUVSEMzZT6kE>`I3s+%;st}WLVhi!||42YP zypQ$vXiT!|b-8%ey-E-=(G8+v)~9io^ZkU5raMt97W2PvHv#lqB=6^|-<j{4%F6ya z^tZdrcOyXT*HuhguIpu@lh-r`sIvi%6-Dp^4f(p^`NC>87y{za4tY{vg)@Rq{Pzj| z&&2EJ7P_8b2@G59weuXdVWyVMxn@rCsUSZ+U?dj_fe|XwOXm2hfTs;wIi@fKL;=}? z1Uvj4?!lLC3F%`!YqZ&`bs}pa$KNz5%&ZPHW62Uwi%txb%CcIap;;R`A>E=iI+tYO zCr_sxesYMg=?O5D42se$7S$_x4K}`(FT_&h>8o**DPm{iCO|?u2&PFAe&X<wf)oP) ztF$fV&^Zx;TBHJ8*!~I3qT)KrIXn?WZ`-CKtf8o0J`sunQUVTOIs@A@L`31!*N_kw ztBaHz@6kMYY4=2NZ}~0iy_(joPbqcSG9&*|U0J_DgzMwfB1ALt(W`kAnRmKtU}2yb zd}*g!^qS!@Y(1QuD0UO&6{1&E#ST5PX?8LSlRt!RZaXQ#KMD;S9P;6mYZK(-8Ss?1 zP_9id4@qE%OO-BT9>B+PB`$dielv!IEaXw{z=4#_li^%p9Iq_4iJm{H5J3JRdGFFg z3Ft(NPTyA$4-OI2r{&i$5mT)d9Z%Pu7M)kE)j;Zu)96#sFewx|L$!8@B*l3+{#?QF zwdQzS6G;lFl2mI=2;(8WOSRU4O1uHrmr)KApU??PJQqFq#tc8|F)3<HFQLOc5`fup z=J}wkE~^@PRKKdWay5tK09#8i51gS?G=I$|lk@DZHK0rtj03IVE%J_5F)(e!Lfw$s zKGj%<F2HK6L+iw09cfY$tmEGr*1^SXo1YO#hi`~+jPkXvQ=N6WH^n$|l&pc#u9i?d zpawTq8?o!+E%OcIXtpc@HHB{QbFX0mjTY^Q%gQT!Lp!--C7F+P9qt1673PAc1uUyD zc7>G*x=^n|;tPSJov^jgix!I$u94suiV<?5u!u|B;0ejDtLfrssSE+qYEYumtL>&P z34T^*94e$Ik;_FkhY0@Pfoz<vPU~Q*H$gTKet1JK>i-OdS~C}4<wafChR_D}O4vp< zvY~}iMmDroiqR_!hz3~$Te5+0)1ZOUfElKt1y@nD^&?Lm8mF-T8~hp+E<(gxq8R}3 z??yf~oqe|;k=k!^&NlN=9WPQ!rRjZD2nHbY*NChACdq}Z|F>`pZ5>bxb-<$*@}Can zkQy;IGy}DuQI{BILAx$7#6pr@ed>`lOri_;Nq1O9bAnY!_zKC{PPUZf00i9wt!p27 z+~<uk3N;Lb;$}u#cuRT2PRAx}tR%x=17(Bc$E`e6!Xuii@rcS`35lRl7>=L8@0y81 z*eKEB30hMOzE=zm7lVU+z))P3M~cDYg<yF@0fK*<e$x8cpr4)s25EcwM&ULe>Ol9H zLLFf}|IIot#+6PtJG_r{grtb!GR=W3jPV!_6g~`u2Nyx`t(hXid|DXqW$rYb)8t7G zK`%j|rLCknWbsiYA5~L{vcrU2QzR*uLlY9u=pYQTn$qD>g-i;G1BoEWExP0Q&s2iV zdyDoaX;5tC)-_23^N8-n3!E$T1VvceAPhl3Vd8*Lq6PRw*Eyfo=W>i*mM=)WqRVd> z#&}!52b$m=s2iG)nil&5b0H4oEI0+&1iJeaFagE3nO|!L7tZ2c21dLIejw3-PV5B< zKM-zi@&j*x9tchEJsm&L!f^_(!>UNfip~$s%j8`%<-^Squ?BkbR^bhUj4?(U5D`}1 zKf!I#EO}Fx-`z%&zu9|Qx_O(}#w_E{2CDl8o)FI39maupBfk&cQ7*8TDttB_U}PH! z2aa9KV!P9te0jX(9fnghX93tuUK~i=umu{Z#bpRa8&EW`d2aiv2Kv$M@QYHeYl^q} zLcI0@p>A5#c{sgD(du=W*Fx}`7Czq3e^v-Ex8g`~nP`8e=~Tj|$N|8%<+~7UfEEn( z9>)G>E{jv|%*CIG;dD$Fx<;@xdv)9Ze(=$TO_}I{Ow-AH*U5Z@is(_8Dc`1s=J;wX zzpZU>Mt*zMlDHPjHnOYum>~R7qI6qpo|ND5riZM9kby8+qr5^Wq{}aZ=xFk~>0~X{ zt8w+bYsz?Uq2DcJZsWP`eDDI{1lpzQEdWe<#dlK<BPbC@BV^s+_!fExI>DmNDEPx3 z-oOt4@gJ$O-J^?Lo7fKN)R|@a3emc-GI3A97q1AZlJ8}YFX*7p#BG@G$u^+;bvHPt z;{!>=evd>Z1Y*03AMflZ^md(Uk-gX8A%Ond71iUSWWq<bD1B@ju{?iUIkfVmu7Up` z-UjV$Pa@KYheng#M!v*h9eg#QQGy$xsGKY4zV<aNfZGg{AO|))98Lg2fb|atD1j`T zuM?D{O?;&-s9iJ6^W-b=p+N@v8FDp@9_PIOf}eA&L`ZZT3H$$XzUKT1res6k58y|P z(2nK`Poi}?I)E>Ot);NPNST5T&vY0;r%|U3c*idw(>eduxi+0=y`m6kdIZowi$~9% zm=B0ASQ=*m0Mz=~$ftS?`+rI!6G+)0eg`#DMlUHq$LZQjm9CK$tX%uP1Q}3T>QWU3 zKIy=4Wk|hGQB_<7`&?%a@d-#@Zoz`hEb99W=Zdc}OF0@(E7~g3oLH$=O1It&c30h& zp|_kt2_+6oXFSyswWEm9dC0#y%>#%22833rwd5Lw?V_fAQ2I+S6|boFWt4Va3)=#n z+f45i`B~9CHB)ODD2F)42F=H*Ufa;_!dB`q`C)dM^()LhIB`;q)hG#`W<RDpY<`6h zYYNZ?CG3xxW|pZt8#pfJftwp2z;P+0d*spt0t*xdU=5&-2hJk`wDsBrBDzCb$Ak>v zY>I6uqc8eyoT@5-uk&!kee)2~5C}zh5#d?iOz0cY#ye7shJ!^l-XfMG<m`y$8lUiH z2tp#3Yl!mltn>nmNl~fP!zv#{vX9B~Z(}-I1V9Xutn)263grgktEt|lYrhFiT(@EE z*Md>9)^lRSwKocGQZ}jQr2#{AUH0iZPm@vx?W)MyfQlyZX-fdm^ZV4M+B2xv1A6K> z+m6YZICTcGEgWkDB4#6}Qrl<NTIy*MK8Nb8Dc>|Qb=tv{R`+%(md~iWLa6rZZo&0` z?0cE?+Inl`elxqGD$2dKdcLNv8a(2N&S?)YT5qd6dNYe08evrrscM=o7J`S1!DGeX zQNTudCpu6JzFU+HaEM6-Bu#f(9(R{OPu3g&8Mg7?A}CSVLWlAVlVFmmgp6_zYJ_u` zKe0Eq5fu(x>t?f#Vdyr?DNv)s_;rXL+6Zao#qFTC8COziMAsATqegvHV<k%KMY(Ex z)I8Znk-KM16p5C*S0}F3ZhD27NYO#-bp`<vUl9-|O+pEUAilCYbKXdD68{3U!=$@B zpeOCXB<&@O%f}l4^rVj{ug_D8GeGZr^N_^wVL(IPoe^%MedY6>c}v&!OW;K_=olMm z^WF?NS1tM}&@CbDRwQ0*d0vLUg?;!(YC+`1<VT*K_?7=1x~!u#038WjLT2-G!;7HI z-eW)(?tVz$KmuZhN=JoxUl<RrXD`BgXD9^*>{7^_t~QxT!2+d|b9ITFa}Qy380OQ< zdA35=FBn>_jp&(ZRYSWh#{wd9aU;|D8cJW1<@^F)NRIO_3B9Ce7q0#|9))JctIiZy z)@B-fk_i%H14?BLq9m6Bg(cpO^U+ulIEpQiL)P=_tgXhrp9a|`q%l6V2ENFVLfpVM z_|%!`zkjr$PH$O+EQ1%J=K=*iEqN47Q|EwU(ipj(%aJ)uyS1N5F&GP}HN;6Iy;k;R z1c?{Xj>UMmFGfE=_Z@-ET=YEO+M0u4iI5vKOE82)nv*&cW7ok!ydbN>O_GhRGXnMG zrCj>*w^5eg1UtY}=AIgiZbzg^dJ{_UOzF)RTTh^XC94)cqRm=5lDHK2ZKhLUopzkL zYFyQ>ua@0pHR+O*@aB*&s)!h<cO|5f+fCrI9l9G*Ih0Z@x``YBy(ym|zA$+w9;UF( zd42z;f}6~oKHo6AOx?TjRWy>T*Oz!kbX1Vc*&;7#!%K}0W0`=Zh#?^nTL5%z&PRK_ zz-Ihuc@Ngw)frfWGiE1myMq|ybhuATmIe|BoCfstL&RfJ7()SuF0g<#62_H*MX+m@ zYhayp*lUy2raMHGv6-0W0L7ut*j)>Ol3cLMozy185LgG^Z?JM#-Mvl@Q!H+zHcJ8b zEm}X>bdAn0JEELLZ^l6cE7I^PtTa_1sZBI}R(855wTuNYOKP)HoO&g?QAY|$dgC7M zU*`=NeHjf*c+)1`ziw=Bl7%B?e0#~41JkKNH=n>7)UaQNt>`HAMt701YVH}>x?d#K zmSdIUpIN?uneE2}Ld}rc<Vcgxw*~PviO{CWcxYupRQU#lVprAb^4@<L0TnQ-N-eiH z@W(5i235=dK5E&mRb@h=3siox#unW0K@cSFQvA*$%E3)u=}kqyM`yFdHqEh;lR-VL zSa+fNr5p668aR$P7LeE6%kb`^H|FVgcK}p^{xK4pAbAqiOzQ_GP!_D8pH2GdR<|Lt zaIxn2pbZ(#os^)1uPz*zY-h^oo*1!VY(>W(NZH1SKMm;v0lE*!Q;^P@Ixnnw5IIco zMGF^udc{lU9W-Y_d(Ol5(t5-+A5n7AIqZE=zIlJoWHf;*k>!2P@hdp{QSvnTO!@TN z4H?f&=D=rw!yqBdici0AqrCZbB)63xnafTV5YYVk<dfW1q90t1!x?ZY6WILNpswrW zo}T<8c&TOd-{D6Xz>@Tz7JYd4ODqJ#@40})L*w|)^qrg^4&>$sx~1k19G}Zsu&P1m zR(#<iC)Fr-0p<I5KkOKtlIeU6Hu;gu4L>}>@^J21Yu$@HwC2-30gB?Qt$Q}_pDZ@2 z{p9_MwPxbTUveWp$mx({mrOj$8`oFe`JGsW+fA${iE>=#XzWYJ@vq>qK~j78#``R) za_qZuF3=MNWVw=cD(EWSLLu*X?<?*W{%yhlhrX0Bu5`rIx?ajeIBXfAYz>n9>M#JX zOUW}u1Xy)8dP+Do|1ac_(2P?EU%!x#0WX>!(b$iXjab_UdY`bOQ8c`})DFA9*oElf zLlSZ_Uk^jY=(~k^XMOE&QO|(vxqZby@>H1j8-J;YID3<khlVI36KBzv2Z1lUNP>iy z7F%}MQa^Gk+w`RB8@2kza>oz1$G;N@BFM%YWFz<~{vStjv)FYg-}G?4>A=SZ85#8o zw@(_NaNtgUb<U^^=h<r5ViF6Uu6GrFH=|j*LvqwC-x`$N(y1Y-!KDU4pjgaEyri!o z&FSBSjk*O<$LVy3$#R`MwM%k+&nXM*rb7n)wRSe1AsKRWm(r>Av{*VMt;aSGBEd08 zgFt~?OHv$ZijX*!#yL@f<g9TjM2b*nQrOQNCk$^{$a!5^cJCZwp=BGk0Osu=nL6DP z`%=?h%*$ylGQfib43X9#>tdTC4>High25%?lS`#m*<$#$Wh_4TsqwK*DU#yP`PNG; zI^1UQyyCy`j8+9@wNMuBEg=N`pTvoqtEp@wmg^*Je8=As3*@zxO31gjygYI1?B+&` zyU`mQm?o3=qm_?JDrk-hn&*yxu4il*!1jL<L)XrR+%O-QOG@(tokQ}OUTfHL_^B*| zaZWx4NN!~|I>vUV5!X?!F0nwmI4A@OC}?jw1}RP&IazW{St%YDkBGv1p_7Qh4^*}Z zacHl3hb3w~4^bj2LZ^7_=5g|4Tv(O$CNv?}Itrv$Y#q^gYx+80G>C7{3}`RgdJHks z!#4I(w|_e9f03pz>iDPx=rb3UVfsIa^&%2VdVc+jb}GzYrI6Ehglk9rV>wO(d1Dai zF`^SQW?pYS?Efp3Y7kqZz9SctL~JqLn@*U*Dom)0R_JM^;YeC(<CfNeq~(&uybkla z`EpvjUN^&f<KK=cixGQ>R=eeLT3e~3#DggWY0d-^P|5;x_&raDpXMMF9nLfz!q(tP z&5AIW404+7zz%w^vG*Th3BwWJ^p%F6PcnTc5R!clF9K<7X#t0WSS(+ZXSUbHtCxy? zn<j(sQ?0ah@wNXEA@<Hi%;@6@>H#M5WpOnd$$<FBN@<4I=*v1H*2kZa(@H1itrys$ zXzn;>oH>6nvI`*KDLH>pOX~Rys>#}AP+GPuGos595nYxT(M7e8TC1pni&8xtJz=9) z3(u|quzQp*R@8)@`_Zfd$PsO4)@SONC&esLz0Fo~6E^atyMu`qja_)tMuCBD@PZ>8 z78>EO{}O&RmP0l#=}Yea>0E{pyo{MW>ubCK1zrHvyOB+VT!(|5q^`4gS_917c4h$u zQ72~w8i6Fc*on{GuC{n^(60fO877-p4)Ph^`Z!OBHya#?Ua?w$@=hzX;<u<tyk=kM z=`~hXn`$zrE_1Dt8#c0~Re^O)Dm+zSVD_SEMA_d}>53DqOx#Oq?fV*a0|?x#y<MGH zsG=8^4}3A%q5f-A4pLJtKx^W=qLFCHD;)FTxDU12ve<EQ?Yh&>QsuLw&<pHAS835a z4Seb>BeXcx9kd@ljH3^yYFUVLI&p}S;UvW34ob<D9)1{*ZxqtVo<i$m{AL#(lH$&5 z*jn1t*8ftt^%|f*_JgX&mcbhHi!?-K4iNNk8Oz`*;6c;VVe3nz18EKRc9qtu1{*-B zLqAJWgDktC(0X9=1MC(RKKX>H>NxnWa<P5p^B$g>qRxpMc%wrj<UiltbOu#zB8^&S zKvf=&Qva2V&7iR?_thvOeb`5}OHDT=&~l@YnJtCwD}MTyxK@r=Ez3sF1!INnXFbb1 z;Ep^&+FW&EZ;C#p-?967?lxfeuBUiA=WgCi1=X-1EDx0cfBu1Q?e2nol%oK3kxRZr zfP~nk7!q=TRNJY%z*5MQ7v3at38+VHOCl6rhELa&vaKJLq|$TO|FQSaiM?B>MTq|~ z)M+GnIxj;;&>)rN5HQ~uQjyW9w2?uzMg^saPiVezEZTq+Xos{Y-&)%IC0s}V3_qot z&gLKDa_~$xQ9-)pV>3XIyKXUJ(@uJLzC&NjQz8?$nm^7H&Ba?y&HI1dre>SQsSDuY zb4KJBOs|;<#sp0>oH~{?Yux*0l1aNH6JH*XG|r=A=OIcs9qq+&WiC4E0Rgt~(%g0! z;GD_BWE4$7XDm(_BqYSnha$8tPA$dR<~un1Q%jmqpL$v7zLr1+tswMZ;?#W@2mh@A z3CW)u((!s0(fTnmFt_(*qi5mmt!#qOd<68Zj;hjBkqb@$bKq{))hy6NgBraY|5*S8 z!|N_yb6rp7faDo)eF8$m-J}boUavG<21)FhxH%T*iWB@atncAr`A??w>OZk(KG7jh z14c>WZJI#3eQG(eYNg8Ysfx|SACOb<#|vEt5Vpe-(B~|d4O3E2H=mJD96UT*+I6Qp zivA`!dR&fEt|a-!JU2n!bI@w8Be@Vgrd99S3He3^0KnV8#mg@R*n^h`K=0$Nf~xp2 zAFuBz{_T)l$PYL|yvQ#UuZzZtBYMKJ-(w?5_C-o-R9tXewG7)=)X1QyCQ3l45`Hkx z;_^Wz;Yn-A+7Up7a%DqMGM3{`k}3CXtkx|_+%Dqc55SrIh#<~E-n0a!3E3wrKK^5e z%YBScbW**WPW*GCmVUzCUY@Lh|7Y|<u8$$QD)D0nM`BjH3`hP0x#U4zdu1jtiRfxY z^ZO!I&4Ezk;K(8a?n?FNh(Th5)Itjm0&dXE`TMbK%{NlP7OKPjCbI<6tEth))|n+W zVgE5Tju_3C2#Op##)=!W9G&h(lVf!Owl241%?q_X0eINyVn&FOC7Pr<(G}d+HTHEG z(%eOjn?I&HHB03RH4_|;?h{SH%nCJ+mC7{l^l9TB`m>viDQnam`)VdIdTqlN2Z;*O z>?K16>@TzXIVcZ%3=*wZ92-&T+jtiAq&Y7`q5`S3zS4w+?dT0je6xVWzcax7`2vQq z`L@Mpt5de%Wo5uOAqj2vonwC&S%IK8%|sQ2!njyK&mv#2$SeU^RT8x%=E&zR@<yJj z=#k3+GM5=I@DQSJ%a^G$7#+IyG_X_!R$x#d%@hFYMnKL4ZdL18CTNF4x_m=;R2{2^ zN7X2?1<UZLMlihTLxM-0UEJVlZk}Gn_FvDhZuViVP6kmYmJYIMLL+npFK2?6pb>}{ zm-;f$=^Cg7yr4PG5v5Oby5-_kx7xzqh<7})D@Pi-9xYD+m@*+Of_=6a1igGg@Tf!3 zi4%=_UO4cQud+Q}z68KDX%&TC71!RH5ja6Z)j*DRN~Sp?K&3OmVUBXOf@T81=?1d~ zewhZUQObI|Ycj2<&@ZLPW<V=_43`8qe2U`L@1*8rJmTf=@<Ty^bdO8i*Oqkj%dT{d z0yj-k=Y6jGsxx7Yx*?!m88WhdYvpz@3C5&;40u+A3N2*}Z2-^$?vB$WfCopUQ#eFK z0=O!y(HsKUTH6VSN!Pp0C7~Ltd|LU`HpOd#j|{ASo5g9&=>52ouH~Y2pl%rdE{jIe zlHGh-5US1h*XfxhGDzlJfDH|Y!YNx1NxH4r8d})-SUWL#RJjZ^-dmL57M>6GrLzl< z<ytX4d@FGWjS#0(H-k9!dB;$9pPvcu*qb@;a5a8EsvHX;Qf^L@$$wpFeO%Gmg-@Fr z{AyzlI+VbJ*fdkpn$t80`l8@A`;{@<&H`FQTBElyNje$#Cg+vrX9j$IXfw_m+}Ka% z48ZQCVD`u*zcM&)&ct1x5oPp}`Fb99&oAD>^KI_=DLrrFdH?+1B8&be7o2_Sl+@uh z*%Q0A8qBweXCS0e0$^ON3*JTuCjarhF83~85Q(3-*?rIrNs}zn-sXc%?oA5olh1!% z^wdJv!$zfLYrx)Kk02L(b%Tb`B!JP@^o%Z}`+hKYPO)jM(DZaJUXDIus-e*I#CqZD zItzBu+V-Y{nZ8L(x?r7YRRciY_5x&Mt*|0W4bo(BXv}`9X8Um$3aS>3_cCDPZK4F$ z_BxVp?JnIZ+x*K;VB}Pxb#(KClOI}IO^EwX{bo*}Te9^I9|`+^@PBa$!cCqVZY`{^ z<4gm_VWuWtzl_bI6&UPiBnb8A7bRn(EGz>hU{oO36OB0(rb$BwQ5Z6;$ibq+QsX;* z^BD(5yp2%QISSfI37Q-QM_J<900k`Qj0Gb^kMow>KL6zybOrmB#As6yGifo7TAb^` zX`0jF(5{4pyMin$j*vyx0zh6cK*XoRBt}APurUn{IMu*iCE^O6Be;7;3y?~n^g3h+ zS*Sw%(a%8U9~D$|T%SE|wFr%>9R#2h^gpfoJYZ?D*ott-Z#foRk}`Fil<_6HJ<f*= zv3eiI-{x10GnFO~!S&IDo2-=~;sM>^XnGMrhJ4uKR#}`1hu9NHTUD!up<XI<SE~gB zc}6Fzg&3DkaXNMu=DY35v&re&_N=BFJC+D0cgT=nV#sOgj=`}`iE?BBlawV3@w0>9 z%FP1_0RfM`DQx^z6O1(_q7SPRMle>(p%ZJy!&_ct*H_T#Gj4KpVybYfQ>a;v-a!D` zMSj+Y4oaitYEf2f^eVNAF8pyBesY-jOuF#jeZN8%{vyw_>B65U?sU5Fc4C?J|F6-7 zyBPwZG)5N|HsdM6hFUNn*l4Pv1VaYKdMZOWMN%fd#xMmfHAt9ETmX(T+)J6BGOS%a z*_qPX`<J5!r=PSVVScSbme>gEU;Se3{r{34tU)hB;s28!48ZXJoF07FSQS0^Z+ZEj z^k8<`zdk+q0S+GtN0}+7e>r-vjx={M{)^LtulS48;H$027Xef`P>E|#_ZK&lZm)1) z?GFIG_67o-_C^o3?v0Lxw_HhF<wktv&+T}0w_)p3VZ2k{1HRh1ZN~E?_O^u^^BoU8 z?x3r05kih^4E6$q9FC^JC5FikJvbX*4gVT5F+Z9c?E@;YyBWI-hcZns!WYNiZ~nMM z&+MWD^bzlzGWHhY<;FA-?yh?qU}Q0OiR=^Rh6MW>PyK)C$IBCdSTWjDm^c4Q-U{<p zv?z!_3Wwdu$Dm?pP-y81DjK9L0Zf7o403VP1jwV7nc&F47nBEDoARK6f=xWfGS|12 z`2;ea1lB3>Z)E-)^nL)JFwIzYwk5RZH|LTsH5>*@ai??1F@|HBp$_D^3Jvvxn`2LV zF3kIi4Tx+LSZ4^;P*I_W)xcYtXHcR4&Hq+4oqih6cQQ`1KppRBO=$Bj6<Ez6xLa$$ zF&Oe)FTf*Mo!k9SbJ<C@4E7v$%iuo3GQYr9f(L=8wG5i3j5nci213>fKtXL4=*tl; z0a1CF`+SU!X?dRD!`!_WPJoxWfPBWsfEc*es9FUdzNvZ@WO!p0TtF~G&cap$f{%3x z<J--=pMOVr0BK$w`uX<=dh|>odRFuA*3Q53`~!w-2=c*Ca>4WRX5yB>ZL^lZJ7z3_ zU;p%5G9s#=-SQG}*dj|{1OtH%!CH8xErD%X8uB;(OW2#uA_8w?Z5VARa3VK4{Gy5T zVMgF{ob9W{<WUsViSPu9El?=Nb;{;|@?4zy7MXx7Uj=b}PazSqfmRRW0BxhMc%H<n zxyFWQI!JlyxzJjLg|34*%3TRCI&fKB`&$`wUAi6;<z9;|(}a0T#|)6zkBkbq@j@YB zK<oh$n`sQM(83T&^;RjmKqC=iM5e;g#btjK6fTEQEfTHqh3LfJW2k~G4nWj~B7U1k zA3^Ilu$rxKM;{~oOw^uk*LgOj7MBsKO8m5sA0n*IpQdry_ya~dm6d$RRV2Sx;J18t zQDO%<#FA;ToR>pzg|o&p2PHW%7U6jzUMA6)Ak5qbvOwqIsM9#9pf+M?*)Cp5S3~+B z;TpPmB8N%OLX}OlK~=^CjFL+T4AM`K_!o-2qT-UQzBr@0@CDK#D$nsx7Uq0;HbH8Q z*iGIVnzc^DMZ9{!zwr{LEuY)4=prT2vb}+BQ4P!}vY|o<3QUx=mRw0r!h6jxioui; z<t9LhHg?EUQqzd5>Aka=E9wr_SUgoAlFf)&UdMzP=Q;5pGQl&~V>2iCIsf@lI~P}c znGgw}|AQbp$N(Vs^Y=VA9cy~RxF2q}i2^5*PrUIIPrE2*^1a610KZm4)5H`asBT!r zH_xMm*8K=G)*L_rhJ1NUx4MEdxE|-Qt|NaQ^K5xY3D{@Lw2oxMD|bgvv`ZbTK%&f7 zG!tg}FwZ7}T7&3<^~9Lm%)}#VeWw{4t5GBrrZL3{XW|84Kb`MY8I2^uq<BaOR9ToN z+$ctW$0E|T5_w*-DC~cnkyItqL{Tl8O3*IoGsV?jpae}B<)YX}ig|Jf(`zrVDwV9Y zK=Rr(q-ra?LA9<NEo5kaX9Cxpx%m%N*eEe7LKCOztOm`Ts<XN^b%`8~OCG6CZn2k& zU`}cc70iv-L)BO^H@P(7GBxdu|KcPwxP$zd$c=w5;H5(^z(5dScv5Zxvi7}(5YF3p z7Tq;R$l>>^qRqM8eF(isI2gs?#dY!8KGXZt;_J2#k`0VaWJeIgyQNlk52@^eOTG1i z>v&yr%IorN(#xTQ#UVz;QWL)MA~o5i$WuE30n*kY8Z9Xsez(9C+aFX|9DKOUN!cv3 zFI49YX&VZ3+>?av?1ZhC=~XR)v$0G|8QZrSoA4%-WKCt2m*5G284X|9-^(xOlMZ=4 zoWmP)cS#Yu+=OT42~jo*J+KDjk`u4MwE-bNjo_v@8x90Pdnc~_0<=?>QfKPhnRqQi z+R%Z#0FHPI-?k)poCpGw;Dv7>LEV8c6_7zQ>8J;Z#}E#Pih-k9+N7qL9QG;B_itq5 zT1D#Q<UF)y4A8=5%+RpKm5kY8jE2tuZlc(Z3VT&69JA%yGaB$s)$B!b{?rcxeYIs` zQa`u)c2Luza_uHol=@7(b`kKeDwkrEI4zXM5I{Dj5)<0NN4BD5Ls--|lhrYfN?BG% zXFOEny}4i?GTO48+sIUyAh%OdQ&f#bIejF(kE>2Xjg`VFA5Qx)?en+zu#Hd*56!Yd zjjTcqrov%;NB6e*{2MHE+eRCkWEdh^G2y`P@Jn2s0>^FA46^-{D;#L@43R+<fk9s# z5aXnPcD!9x3|ag&X)ZB)AJ%*DGUu*N=}megmpbN@s2)Rj2ot|Dl8P4(WX4_eGs>mz za!zL!A}i>;$7Rpk(|5mJvf_`FGUsuLAE=z`IRuYx-@WiaE?y6Z1PkU#X~bq1?v@Dp zPhJ&6#|g^`IK9&iKKnrPqT8a`LUM3QdVUGq5vjg0)v!*OZ#XA2xg~dKomq}0sat7} zlSfjIHMNsJub9cNpo{xHVO!Cmi<8&?@^wVh+ra!z$ox(XqRWLY)RdPaYW)Q0Ad3!R zk~74EfO|oE=FfddgwEwRt%qcOb)2mUppD;D=mL5~nFZjypV6B$$MYkM{XoNvBLPFA z!h#Tcf=;DtjS=CP5;;WbM>an&`6M1IJ=~s@S84wO+7B;cQ#F60ZG<iD_!E0izJ5w_ zHNuKC?TO@0ru8rY!!DY}fjdkP#-IEiM?wd>qIW-ua{Jq|sFn@<#t~b8ln2oK9H^6t zRta}Pyy}+CU@F_s8YH0Q@7S^rGEwlPiS#sj>`7aIv~xO1<D|%S?aiQLWw`I}^BFQ% zIdA6{DJ!IDE=|}HLwv|8D5>KAF43y;0QK?-24cK?)v^D#<f{r5`KsqD@>P>~d3!VY zs=~)XYaFi1b)m^&q})0T<LeJw|A*-dbHYd{-KZY&(y*FMAxR{dMX+to{glHWH3`SD zEUf{5o-lYhm=cQ1`qxBL*G>XMVl^)y9q^2%nEz4U;1GT1--~C2GY(JY*gpSWi}5F6 z*S=(ON-74-Y9hRQ-#?RCbcL8jH;Y*WrwAz8=qJ%w--Mv+2d&T>)es#%M3-hoPr2v` z!S>263XS7u=}bd^z@M3K#xEKpmq;Yz7S7}sscZpS!-OnJ;}@yae>Hwlq4n9f;1@Y1 z>?(edyDTA`Y0@3PXkz@2=FXY?`gHjmDF``ik0uycR?GZLSS{@PJ&6vE$;)0IUl=$p zZ7~?(XzQC6?umLd(-oi81r$7rdU`1SSy|s^A*XJ&x($Fyt_Iy2ooGNFxmteHHObp@ zAU?Eic2B<W^Vhv4LQl^?8%;;mPFB75HtBJD$go<xD7s>U$dp@0B_r!NS2?=XC~F;< z9!$N<Y=vksQwU}!0v>grf~`C4BKE}u@7YM!Eyi+PuVqj_j90a;^X5e)X|szAd2U4> zOZql?9t3J}vEqva)#_Y?wViBqDBJWLXPkYdrGttBiq>(%9pL<*1oQcdVL-^Na`2YO zp!3jW(6_;J%AtD-l0oRw6jM)3d-OeEvpZy1v0j3Sb~jSWFr}a_m0+quQODKDt|MUf zZi%B+U!80_J-)Uzh2adRnL*AWH3kK&_!D2Gssr*jfuIoRy1RXW110n{hmt+!E+W7* z9|3I`Wec=<rSQ*TvM@aMEC>Xgv(<Dq%Oo%-jwh%E9Q7ih0y}ulGP>iG$EGVOaQHk6 zb45eR9cT4~RM4W#P0u;i<N0U1NbSu`yg^<kF^9O6NT%~~iq=M!=NayDL;Y7-W626d z2FVi2QpQ5p9@-x;@s{j?F6Ef^IhYJLnSxl<??eo84#zNt1?6fI_}GzX;l)`jlJ<le z0shUJVF&Mw4zBLp`zGECthk`8lbNLSSjwTKP|fQIZP5@*!a}`a`0h}%HH6K?>0Lk= zuPwZS&7X~EnF!tW(1l34zoAW^QdEv`4JJ9?kLco`N_0_(sAxgg5l(&*H<6})Ri_%k zC3<91OsmieQxhz~;j)s;AJ&LCL9~({89|MlkFpg<l#P|kWkV=`!mWoB@pTadD&p&h zfj%+iD)&y=g$E?Qequhu96bxPx!a_6&O3msUcsn^)_;=cip;_(i2>}QejrX*)J~A{ zFfuv&O+oVZeG89g&U+OPK#ABWW||zxifTWy@@Pqt=OtiS?1l>f)mAK%D_oujU7kE9 z49+`215|pU^(l*eU2;GD*Vgb6V=_cTP}T&JRulG-iN0i_moqho@l8i2^l>wNKSKWY zX>r>db7(c^jz8V^EN1B8KubmFrLDgR`*r>a5bf!E-AEjs&LR57S+(EN-smt_!k3wy z0llt+ZQx*YpyLNbrc+y>GhoaI5y(z#5V?ax&pg&M>5Qa97m<^c0=W|jQ!G&B60E~G zZ=B9^V&CgfJ?=LdA9kqKj!RWyw7!XveX0%@qjgL*G!BqGRC|<9`=i_*awd(^ewon{ z><ZC99Tt?RmI#I1sM4TUxC1HNI^dVwkd2gE{WII8?J=`m+5xAxOZ$V0)X+|=S$j?N z6q%~*kcIk<wHB{qPElv_v*b)v**C7Mu}4!so5!B1&qPyA$Jui=6wz1ZX=s#Bou{ER zDGY}8UeocuQ&3UHc{Dv2^599+AR<JFa=hx#Eb3}LOGL20>$sBZP^0`Y+@l|$#Ppeb z@KPSH4J=*lIUO1s$cb`&+2aFeS}##~5fDFT5T!OliQIgDhK{@*l6gM6h{kyEV$nH) zxK72yD1qa-=+cw=w3`@xx`|Ln%NRw_Bo2Ngx_Q<#Pb=iSM@(@<*@II#9O<+uOUY&b zHJvOf+)gJe(rI_;y+iR7qZa9K+Gg+fSO=i^n9)aRL^bdO6u1&4Zw;PWBK>=bu3lDy z&})q-N@@#&Hu$|XO{#p~18Moy43{oO8aBs=PNh*tOSn>sFSy8bs`}y5tEcd}IbER~ zQQtgK5UJpDt5O{X@7!(GQsW}ZTyH5QOQ9e&Xhw==20V5*l#_}yZ5}zqm3illvtyn* zsUB${kfSx*^cn=}Uqrt3H70Cpo;Y(va}&71;Yd+`Z20L<GSdPORVxfT2i}w7N1q7w zfg!<u4>hVd<x=x4yP80DKRKkdDI$9@K(?|nTh+4^-gGS@N}R@8;=xOZ!fF?U{a5g- z;+y#<%gnbBn)YcXzHnJPe9Eq0Ks>ycN<kwJ;wsG(pt8<qlw^Hx5xsugWpJq-sarS{ zI<xnsv>tT@OYBveY70(^b|&C}gXd9YN=Xv7BlYzR7TnCLPiN|8GYmlnTy%O<0$+`e zoDYYcWjkfxcAR0DzB6Bu+R2p(^Szrh2oF^MUR{ZvQLof08LvDJm8#&qv!HHrrnP19 zG}6QuIx*eO)E&IMix+)n?Zfsx78BHsZ>N&xFFx7swbP8S*OB^;y5Ty_K-fV+Z>yRL zfrw^pL{tyLgzwBZb%VF4+eX3GP^7-j>k?>4_t9cDn5KiOOtDOzpo;iHvz`Hku{<Mg zNT&&?ob1a`gihK&dnS@DET9XiW$ITl@~#Ua?Ag!*UaJe>ML>)a{yIaW48b2`snJ z8`+NF-vpMIoFV%OJ(ys~VJZ|`3@o*AI>EZEBLMwysE@)l5ejR3SntDOD$4~P^d)`R z#}D~%(1$w+MY^*!OE}JVde_=jsOb}or8-K)AvCRisOS+D!Err7$S^nRmE>K7SbZ2H z2nSXu4O6_BN@@&0cQei@=}R4v>}7p0i72YkqlA!wVtj&bN6$zD^)B0;IzWe1A7`Al zur~g%-U(~?Ue|@X%$Xn^*j<+8E(7#t(o47>?b!3e08Zb}1eDR4*Yc?~1<uqLxEoOp znXL*KZZtm#@`4jC;fM1vb(;uq_F8CtZu6J3U}Zfza;&{HrliJ1bW4p@<0pTkBF{YW z&W#|fzxN-I9S((GLc)48e9#fs!@H-06OPe44n8Q{roKIT9+Dl$!Zu151~<-7<hr1n z6t*`sWSbs}*Df(5+X0-VyPwe*k^yBxo;1M;qFC(Oi=^=a&_crybP#S+a)6S!nWCp? zO)G%*xrPQ&9a`+h>Xi|U?xw?FmN_Q^jqwk3;~i5KL>iMtjsYdUZ#FoX0V<WzBFi(b zcKbY<#%y#DUNB@Ek3b^D7%#sSPP&?;aTWG<oK`vJnds{XsN~|+)^05tEjz|u0}_Am zRMUwFCvSI8!ZlW!YGam8Ll{w;UI4=Qhz1oqM{YMz>aFeZHOAD{y5c+oxshWks|<Gb zB6V$u3fITAm^Osdt;#6^{E|1rI*jECyVqSh$$`Q(;9Go51b<AA8GCcs%36Mg#(0Oy za>Jmnwds;mnAAC>#vewBucAqz-U;1PoNbLRsja;|LFFdw3uEmH_pXd^l3~g+n8uq! zC@(D|wQSaDQcbx6bP(7LyAXTwa;}AL4!0f^{Yp+VMNYxniWju2<Do>m3M{y8y@MZF zHaOyX75a?M3FG>!8oy1%6(WRAF1$7Q65H7-v{AXqArN*Aw(^<t3vUIRe6Qhb${`@w zeds7-ifbXx&_ITyqz*VuHeK5w(hu!4)O*F>5NbvB5X~`h&KG$He4qa%LJ)DY8T$O> zB{h7co$B_hAUB<v;CGnaHEX;MpNn1=26Qz@W+D0!CuiM%W$%69>n_W?|9soDO(pO> zg#b|tq+5KR905(SYBP%FloL1yPfDFtQWssHUzqDQwx_yw>->Qfl9qlg-?mtVI>F_6 z#$31IuROxGZZbV-p-s!b00IF-13FCrB`ru(sO|6lx$gUW&Pkg>(YfFA`aSmbYQE?G zf8GDD>vLcCbt44H5KV>r^F4&0mn8gr-5Rx%_ht@pv)&0+@Y$&oPZmkET`z41Nf&Ct zv6HP%oShfe;HN9<9kN4kcOq)A4Ix8xUMNYaEbU07=%{WaGmS?a*uN*0Y*m>hd?)$1 z(>#-WT-Uf#*~LsCSm>ID;yRp%I@43qS<4x&1Rst#@lB{vOru5t8Y4Ob(EuMuo#J#% zCWdAhYpE2_^@i(=$>Hh^cqx%)l`?5|M9>%sSsE4A6bV@x9!Ha<VL&mW(+oN|nNV44 z^3ver1R&hBD}s;yEWXqPpA(p*_3=k0^Fi`?DgBZ=K&~R=(gAWmdAS4R8obFo#V7re zogY8JPnEZpILsbH=a76laO$75R<x6C!!0gP(ZD<2F4+fwb}oXC2IvyJ?R*e1<%5`~ zaraO)5{t^j84p?NBe4wc_vg#Y%*zWdCEpajywY_7CCvM_G8-Zj!7BQ#?MfMIQ89ZG zB5S4caRQIcCM<p?0?#UfH~>GTFuAT#>BTmX*I#KC7A-HhWhEy}c`9$EX^$S!(!P+N zY5-AMA^S}CqEB82-1AL}86vSs8(ykF!ZEq$v;}s`ExIN6NWc->R5bUFMA#ueW#t4S zwG=kVPC!b*D%poDz37&d0EY)1#qi{d5m^@Zho@aU#x!zrj?$D8xK-CnK;uHxTTDqw zK)G%xDBUT{NeaqI3JN<e994CZel8rPCWvNG;nZLhoSq8Hr$K`3lXSmpM_W({kQ6fn z%_haD@+J;hM-igh5VAAH&{H-g$*3g!sPWb4@=zzF5PACLrr%Qbb^R1x`+E|3*jX6K z!IK>4XzYhQALlQ=IYq@Pn0BZ!3Ps*A*1GN=ap;m@Dto%|%7x%@Nkkomc)=t@6veM1 zt?|p(N}SO?R}x=3s;@N$+jw%Kd%hbplUmdMnYF@+J>O9J?1qDO$@^FWPdx%pjmm=A zo<QJP#-fA36A>exXZH}zTq>f@%zrCY;;e&(__9e0I6U+f72C>NU$yVSEz%S5Wu5m^ z<r3*(oz?Otg&@>$w6)t)lvK+e4s&7<73{43rd8{vgKA3H3I;UBC8_j12tttSC7^#% zW0ZxTJ8(+)DMAfIsb|#6B2K*`#T5xX<9bHDq1o#zC3Og6OC&_fs8qLlA?YjU$rA}y z9Ym$-QxI^dj=Bdi$J$s1sk$qAiA?VBoh0sqilkH#s|2j{9lmO1F^CrfoEWs!)ES%@ z<fICQ>Rf7t805ELi8oYFB1#hh`ZoCQX7690xczsd|MvRt7QPa9thxBAx#ZSh)>r+g z@``+s*c!AS4e>ke#+2lqwH5`*Oi=)%`5*=j@CnzyOVfl-qk%;_{imy+iW0`$PPD6^ z!??5tic~?S4Om*yv@fa(>OuUy*MRpLD|=}jQX}%{$w%s7NchwUm`!l!eEi$uQ-nKn zle3IFza|BTKHd(B|FkxXLA{ojonpk(wmp(*1^C>HvkX2vu4f|fxk)u}7;^(Zd9px7 zSAx*9c#(Nw$<w3GGMqc>RVZ+nb_MFZdOd=p)lL%P(n9p(N(s^3Bg>T}M5i++p-WAf zNQm%YVzES<Bt_Ll#@Ux?89S?0Y=qu#-c^zh&Dc+^#6d3~n!b&$s&+0A+&h)=yNCaF zRgUk`^5G37`7qz|sFM$u=8y-Ms{A75m*m2_vff6b|1cbW2>I~p%M<x9!a|<YpviT) zts13$s;osi--Yz>n0W4-DjXN)+NsGxRW)AT90(y(z0K@hyeKtAt9!FT^$IXbs)}Ge z746OQbQl?F=g7s2=1x&*8g6BY<xaPi#EY7zXcy89Daf2?F3|#Kpc^KskuKeT?fFai zjl?v`Yx8P)<s6;x^hSw$$hb<s<1FREZx|6wC6VS%zuoLmSJ%j|<v{pVPBz?`RrpmN z+bgv6g<s|V;ok6;;`F{*d(h%h3)L{jIZ?rA0T$?UlfA|hC&(g1hb+Nvy#u20BE_D5 zbb1&*RzBuNMO5^ViaOtE9xL;KS^X|Q%&NJ=!W_Cy%1^A4<-`T-;6T1*x6>8ES8YYs z<f1GgH0K|dj~<uCud?l*g?hq(%*lD`q66ZUEWYU6?(HC{_?AOr7Ss|}=h5&MXS=!Q zrLWUCJoh0xofK=W9q_(jUoIMD>hm^puBDGNBx;_i=?i;ySp0q#A2k-rsTBtL2f~ZD zuP#Q!nnajHz?zHW>=~LcQ+|Bwq^kK`WY)$#MBPlQh5~IdVwvB(t9lLIid%b~zlVHN z77fg(Usrv*4+NR`<J>PGrlQ>Bqg)sE=%vdH+bj^n8C*v2`2<f|P9!HyFxUoFX7#dG zneq(glidd<ljCGU$K|);66IxNm-6DiSH0y%WXKoE<;?bge5eG=g&cWXC%lZqr5V-N z$yk9}DcS?)hS`G?AO363W77;S0QyWk{~!vz-9;fR8a@nvKSwm6G$W)Nq)DOY!+qD7 zEe-dZX=dsetv+Tv=Ncu{>{UWWn$6pI-Zj|dj_YpVm@`b*p|8AMXWHm|!g8LLWxQY3 z7oJi*H9S2#wT3_fFn^!rm0I(kg#RS2#}rcxMUnZLf1wbK&Uj9J276OI@A=Ll7F_Ia zqGdoMO!+x>x!pncX8L!4m}-Y1`?|*4RjtQ_tgE{*UXk2qrx|^-Zjur}R1Eepwv!&; z<ion-i-HVO_xf)>a_BHUGdZqB{p{gg)i))1Vwa+hotVc?g&vhMU8f!*^(3WsV_{Qx z{R(o?c0qq|%bxyqB=4%;r0i5LT3_0gsoG6cqoVKE1>0F2h7>EIvD^3jrjawrHd&vK z&@XxVe;ki~2{u@N5&e>J>LpI0WMJgxheb>Yk2o&;@Ntw;c7<`#>66@UwOsDOLLQY* z)JX;yZT6t$c$84g$PhtJo#crE#xNbczaX9oc3680`2l)3DHm)8*u%_WZ6l3L#-T*Q z*0%^g)}4}XCb~h0LJzT;U<MQ%dg!<wxYTt*4JD*#LCpqFj6)AKV1bWH2qWmBgp0Wb zAqs~horbC|Lz~5rMPjPJ68(`r-v+YPcnG)hntXzO-fSph4vPbBrv;H77f6<d7|MtZ zMQBE50SW~ews$=#>~kAY0JSDl1H<_cd$bE~A!Z_B_wqY>5S8s**MkHJoRPW%cH(pX z5{Oq8-%LaXsitXrT>U}qxf@j?Gj<3+jq?tQ%(-Yqyt00O#8*o{iPZ|Ys))laZ*Lz< zS|L*t^l#V&y#YR`E8<S2M8>sFDsB1j6JunM0E9A4qKEk$@S|$6Rsjy)HBNOzJhaF? z0u&^=Zk-U_0fK5r-5ug>VR<#sP!^n|#!onqdZJZdqB%&>;8}r2;`=nm<xguhC>voy z0ErBNB7~Q%TnV(%Ko?)g`f$eDn;l4aC10n1^96nh9{jBN2p$~C)UbJ+wTdG6^youV z{0i{FUNQ!hN}agxD-Ivj6oShC417>y?pKZvYOEtQmeI@O!3Q;yG?vuWt})=*4YvHH z@j*>kp@5YN61e}*#0NEnlGUroZw>JwzP|`QsB{TFsFh8OY)bve8evN|d9T9#rtv`$ z`8xPuk>E;vP-W+Z&L!^_ya7HqWbxkwKB&qF1vHxezrhF9B!&+b^+U4WO0_gF%8&~g zhYyNii>;<Horq;V_CmhD#s_JHU*m)So8p7$1k*ibe9)sD;DOpGg$veeELY%!z23jU z`)k2hxa}!Q=iS=<-WVU`yn%SIpbfS*@*7;R#<Fm?u$A>TMY+@AgWQ+L<?+EQ%lP1x zuY(VY)Hjb04ymFrKmVclpjxj2A5<eB4?d_)@c3X8KY#W3p!GUTvDP-BGipNNf;KAP zqnmMid{9*qJ}1K703R${wKLTbQzp^ntO)@^m>TJploUvCZY<%0CH;{%fe*g;KJdXs z3ln^>QvL&n+DJ9L(PHW=SH<%j%TgLax4Oqdu>gXo1W)XEUg3S#kI^&ekF-Viau_fp z=+Eqb$^Z@;aS3dezig0FyZOrorAr1cMNgC0D)G@~D!@rV`L0J287dPmYUB;sn@t$d z0m@tyPiAD(s1JWfHvnjan{8fjXZ@KE$zVP1L5gbcx-XaJ%}btr!Tuwj3n@g8{vdAn zw-O`;^sDQ1lR!~4k)!9c>7Nw3o<@D;eEx3`|F4O9VO;oQ36;675q!3(=i@~eFcOlR zj9jxI{!I`J2t|}FBoZ!Qc9HG2!Z|8KGa7@<g)~AQ_7Ud2Kj+Vk#Lb8+<%AWR8Gz5$ zD2rxuE6AgoycmX=2;ED_Ve}bzNBUw!|Da-M3`&U7@I)$lEB>bEJ{PxSnqDYI&OSjW zGon5TZza4fjcSnYXUG!~%C5xc2#~_WIZ0O(WITg23FuNL>UbWJFrem(CTW=|YNv;g zL+{2E`@t#^vU&GaY8a5YmRvLO|2+v4eWG?FPN+IhT~Q>%L<S~i2jvtZ46=g|Ll+(E zL}leNtYpqm?2spOsiVbYdaNAK^49nBzMwiVO75~V5sT!lZV*GX`Dlt!MUfB}$bKNK zB`%}Q%lfKG4JTi3OBMs-=!6s2lnw(s=J)=GF#@>M6|Q4A%pA<SL4gw41#@W@=z4}O zt_)FOhB0Eush6w=7vw4iqxjz?Nqzt~XZ~WV^e+>kuP*6PvgEr6BOb4i=!QqLbKRef zeylv#svIWXO1_1zT@t6;yPlC*NcrSETA-L4<%Y7&e4Q9Q&+97H&60m_MSMw2z0e{5 zE%FDHLCt`j$xQ^8Qlb5XGJ-fI;Jp7Xe+y)9*=7%oJlPGtWSrG_x8}^C@+OxQel+V@ z8n{KuCGKy?zrGZgDPeKyCi^jq0FQ)0dQC#*HS8$)P0V`~f&=my^`SZs0$<1Fu|973 zatH!6K$auFgJqN><Z}&ob%o>%QfW7^*%3W~vhMld8Jp=<8bggA?Df)#iclKY@<gh) zuAe6x3Tk`Et@1v~zrlIc;3a-Qy#iwLTRMH|B^$N1>k+IQkhQftIazPS^K8ZzEnc!% z9H3TQD&bi0fSv7OS&_TPI$pryi2`{Uf%nul>1v5eY@%ellDvD?19~CBj{2~S^5@)I z=D-6<dlT<V{=8xf*HV+6#o54anNYEt()YUKINsp$S4@<%mLOLoH$Zs*PbFrf2Q3Z| zr(<tsJy_1fqPRTv=Ht(#W*sP9FTt)XIdi?_0nAU-s9m@Xq_*N=!^wc^I+<BZc~)ig z6STmPU26^T|3>j6u9a|PQNCbe3RcO2w)&N9^hDV6geWFwE&QlksS;cGX>iJ4f8IbI zJQ=U@3_IMrU^?iVrl|eqs~1;O+@9#jAC#Jt0;(X?-8-?=+bmwE{qEK8N-)EG2VDMA z9Ob_*qs-6)gagW_XAXfPB8AIeL(#mURHH|4{;@zgpS)c|F(1tvD9wo6+SAF^uAyjV zRcK@3@95HOwR|XK9DP`_rtEromlcvlT!(p~9<f>gy3!7NLNz0y?&2{rcgcsGk1T~^ zr%xGbRuU|=uFl#SjygAUi6W0qZrAvQf~-f?K;tnN%SO9`uoo;BV`Wq^Li?4$z=xLM z28zi<`xu3GG39og@zn=W&vMU<=Wx4=Dckr(tnL>lx9rF6J1*6znJ=nYwqA}?&AMFo zE*!?l1zAkYT=`ppOrEz#Lw18?Fu$KGk?#I73)i>Wxq-zQg1an7b$p9yb}QOas!`Hn z4)*KT2+PJwd|4esZm#G)Nl}ULRwAAaMNR8WuBG%CBqIMo{E2>&eh=`QE$joDb#ti% zw`R`dMW4GY6C%x0!ezcxm7}nQeDe_sGuK<tf_Tx5FU#01Z<jjYMZ0$|IV)FHL263; zM<Xiam?_}K2(99dP7K=M*ePRILPU<Vug2X*DdN0aw^0%eCsnMBxg;7<Qp7s>By_8s z8dOn{oFbM}1hYFS(gXXVHDgI5YuwF~B~+~vaX~+f=Yo<vt>OSaUNft#m34`<vM%v= zQ=D2B`d79_iwsA4xO4a0K_@wL%QlW8XLe8)$LnR?EH#yyPQ5IIMfEf^MLmYyB-gkK zQ9G4U87XPWSLE@-F`&eEjZYt_r1S4IMM@z!)}QpN`ZK)tGIt$C13TEubrg+#9#rSA zPU$uiM~h(<U%O+)OCU2Yifi9$dPT5~u$%>dF9oF}v@6im;d;rKo`N&gD^0I4=*4VT zqRf<BO7Xf&{xV7pMKHmSxQx;-l_7s4BI`7mnE5i_g65AzS#EW7OvB`?bbitgF#d-q zOgdVMal3ruzX-TOfay0?n1^vyFVzRTF5FF(LQ`#7)l5$~Ro7;MS4;O%6x~(8`*9sb zenu}tf!j4nMNT?M)0|GpN8IU<sTjMK;&^mwS-w&84VlY5l+azekRoG+t`;-YDy4fV zcTzjLRQ*C@t8rD8-~r;&!WCWdE9-~x)N`h9J&=9?Qq=Tnah+5yXFV_@G}xb!Iu^l8 z8B{s6)pa-J9tLbmlnd4v;D^40_T_4xMJyvJMIXM!fBXG+oBuZWZ<GHv`|n);ZS~)r zeH}-j*}2Thak}@qm7;ZAbPW0U!#@6~|7yclc#Z$2eENF6LU@cRyb|G&I8FGa{TX23 z&WtFro}8FuO9%|tH{xK)+)S(40NwD{KSNK_2?fkk#T~hu>1nbkk+k%yX=Zcf+}&4E zB?d(t)450tt-xwbt<78P%ZRhDJFAjnR=?ttQ!igh@*-Mjg}7a(pU$RSzVDLn9%l2^ zofn36Ethl|$)D$MM=j^)9o77q_|8l9TCveYskrviN>1E>$+z6U;wvJhm!c(mhy+>L z-^N#@75R?rL9xlvGyK8-0$%a)^Ah))#Vb^4ax{p*HFu$_6Jr5!9ZxKo-5P{6T2Q@$ z7KZdMQfefRP9R+UKwY5W>yU~k(c-*?9IFH=5L@G@z3Xl?Y$R(9DWL0lQmn*37mZYc z0?57xSa4!XjYNn9IcK`oYIPe13E7r?m&VJ#q}wPi5A=G;OV2d0QfSc?F7dqL7DXwF zS22&i;8YW0R$+tT6S`5PVGz&ZwbSpZ5JH)m=OB!quPPN?Y@rnA((+!ljZ_*W-qeER zR<sDH=&d%EBw*>aIQAnAA;1f;sA?W5D5N>kmVA*5p3BAa-mMs#1sF@b!EWNljgZLc z?rX}bfwU0Hne?p=tndJa<oagi%Mxqj!C8TjQ`9Q@Tm?ICd{rm;w&LrIO!zRQ#Ciqf z2uMJS_UOAuf)-gGREYM`IAQ_?RQOipMm^&G7xMs1!Ugidcf7^Njh?z*U+`MoZE+V* zp}nlZ+@WlITbop@mCzeg$KadlSG1JQ9)%Dzv=W&F$|n5;7S_!x0WG!{;>H{C$GW9r zjjA#lXHHW}fr&KEMxq#6q#y@5|2~m3fKyf!Dp89CapT)$GT>HQ$>`@Z#fIK$qJsez z^jtIPnD=MwxN02q0Lox+#&%PcZjY-s>XM8mffhl437k9&<Mf;aOEBw%VrXKlA_m(z z&PN4A@N$?4Tx-71CQy&OHsU2tXtTauj}duB&a>D2298LCU&nIGy@jY+4Q<GvLnJ&* z9h9U~oPOdkC}6t2mrSE}4aS=dNKgz1M$8fDHA8L(M$7>~;E0j+Q6;GJ2%iN*f0NQm zfRe0QvO}DRBTjKhHC0qqLeYmHA|KuRCSi#|tIA&hOE9M>ke)g99alPKf^+#A9CX2Z z?ANm+ml<Y}P1f@Yyh5wVG4TrZ&jfgdI*9sfJHoQwuMV%UI<kRjWpMbwuki}4HE$lT zcuFnkSpbh$XhBEhO`Z6XGa3Clc!d}Sn7q3gW8?9P0TE+%GRhc*#|4T?a}-{orAX|# z7(jANunIZD9zDn=B2z^AmE#p!oW{}T;Ds7T;E{kz2j1aoiSr^*3$x)C7P%5l(OjmL zD$tZM^Enbt88zPy!7I+<>L4D<a!AcK0bZe19{&zQDfDOYbbzStzRCQY5&ja0MN)7R z1iT(%q1FEvK`d7Jw$d`JO<^hSH$*IK;)|UiQ6*v_fmjQkc6dW31Y2NF$XG6)@k$lQ z>ZAg-I?q+hlBS5;01P^CnZ+pq7nOj;osFVcdrh+XsL%wk5L#j2ghXtC5(Zaj{Z#gO zbYSy96GEj`Jn)8~4fSiUobJ+Ac=7^lWGs-43;>EyS(B|tEr1qW0#%V19<c~dp2l3# z%`wYOq*dY-Z^4GfB^5}<L^d>*P%VKMu<L!Mq*7^1V*<Rw!4ef!SV#sQvIx`Dkk&fz zsK6^6I#r2RsL}>Rs4}K2VhvByViKZeA`18GfGJchi?5;#-%#7rdMXL!_MCNP(nASe z(eZ1%;@5aZr4f@FMhlzEF>#|`6tB3;!vh|#&<(DIjL2i-7S70pWdALYq;J3fYDbm3 z*MA%Qx5<B-{dcbaw)$_*zKQw=wj8{B)PJ?VimrP9wZ)HehJ5;A|J639^0n2LaEj&N z6fBNQ@dNr8V(RJrL2V3*sttgtSWgbzL|cN(;}u{}MAZ{3p~EZOEg6<v#WlP_=tM7( z%6Nq&V9ot9Ug2cVO1wgiqos9=eOXfZ3M44n_qN7<zHbVzK*u81rr%jD)S{!-P>a_A zEY`g)VDXm%C{!y6C;}`bF1tFpx{U0$n^<t&!y8ToulTE3zbIZI@o6n3$UcX938_K7 zROoWLNM@e{V;6h54T^dNyR5oLO82~Hf-9v48>d-;mcnbMS+SOg2(=io@cQbqkl^g+ zVTa-@{T?87w0A#AFcas@RX8&U?4zUxS2!0jdk^*-QIl92ZpC&A0&bz}5vX*{(aC#~ z>Fv(W!j0OSHEm!v-X1-l1|IP6M%VMEeU38x6gKRimM{_&;kg!+wh;p<94mJ{mqufJ zInm-dcPPC^O0El25~!d@%XJ|bgT_$PEXF{?MFzT}r?4?04;xRI9Ht!~Dx~|!q(zz7 zK-V2M8GJ-3<o#;q1`_jo4#310u|DVp{w9?N2EgS5?$Vdx35^ERl8}D-7ac4C>EIo> zZ*zCk)?ER8T-@u(`4B`$_BwZ4l)&bKH|NnF?GUw^!cx!IB+I7niJmi~BjnydK!P2B zQqYUoHhE4yYeio4Tqa)1b9zsbb%&yM{X}85Vwhrz-jkryxGE+oR9iHWz4$v!4u+*G z$q<gV^bX9mnSM=zL+DkCO{GX$fr!+G;ZSMkND+smgO)2db$U$JM%Fhn3DHVbIq-}Q zDdmHs6GWph_y7&~&EQw%D^w?(Vg^P&zaVx)i=AeO2AeJ<s57-%Rp>|P8pV);BVP91 z`lxOm$ZI9Bu*wo-qKELlUqQlAR^gp!L@3%u+@Svquj$DRhs}6NfKS}LxOJyeNkw-r zg-Hp5MwWAnydkmZz0olO*iR+%Nz<%I6lx9p=ce75B`MfAK|_QVL&~?Y!c8r?1w|xC z4*(Fu<_3)yp%ToY6E)_+6>s2iT6ydIR?DyYnc!2UNke=GO{f)zD33E5W3R1f$FwpV zE?}O`yFp439MvioMvsFB*(ub!@*GusuOcDvLnzTLf8?$@+`!i<qWmqtq@J?DeC(>j ze=}I3mEQCE6Cm*_fR@q}^WcJ(FG|_WhYd)52HDzMkbtCLfv0+iULS)X`DhnW58+j% zRIrT7mIGHEL^!O7JZcD|3rt_4S9PII)>B?zLIX-!X%UzRf2hf~+-Ld{1uSSf^#<un z@LaBjV*^Dd`V!Gz8Rg7HT$VADoZOC1R3`E*2c@#$O>#D?S`(;D*hS{oQ<)$ej-dtf z=g8u9RVR|XP@VX6S#_el<-Q8liC1e}a}=qBsZMa&^>s8S?p5@oG$$UDT~0N{W*SnO z6Ay(w2@){?l^%)EzK$51I`I$wz{X5Qr~RfV(W?;m8mPI8=I+d3vIa@mYbI>Lv!t2O z39Nvyt)3jjU%l6_M8|_f^i$VkA`zNxkRsYTo#uq*qa&`vd1#8Mbf~LPoX~tMkw?rD zeQts~UTqwGzW@?3WTaP8H|Tt((^8H)P12*O(|jh10TFp?wgG(9Y(r|c<3%DKDkBk? zOCSf+o!E6;x)Zy+?ga01QZUC(d?!RAWY&i3_=*<2s7r7%XcO%9H`|s#uf3RZlsy|w z?RK{cE+rC2HD_XY#*A$k>TAJ+g#hhEr`y2F*&cVklg*PCft^?ja`0E$S5}e11gHYH z6Wwx2yqdyf-3)gqg_hivq)~nWx*e*ZgxWIXpfz|QF;s#KWmCmvDufKQ{%C0)<XeG2 zV06Y%h@7m?WB>#l1U>$uO1q&E;c4v#7--cOT#@U(2Xw-1l@&KtDs(A&iRqAuvg(8? zT~eI@g*bVtGyQqdI5Re33A<1$3uZ8i+QO5|@Ps-kX;KG7U{<sQL{xwcs<P=ubj+_b zYE!~f)M8~YLgQ7fnt&3eo=TtwwW5`chiYh$1MSu!dhk>G81kSdH{?NeI2w~EDNVRu zRo}VJa=jW}`_T!(i2ufzH4QRlYL;!B9RLQy7zLt2Vd@j!j!K5H8a!^t^`{?%Ws(-E z*|;&KforpIbsAr>fhl}2Ya{lshO8}o1IeX+VCFBSDUm8!xRK;jwr;biLU{s<6aQF6 zhIVov{Zy;qQK}Q)kgrpnXb#t}r#zi6aoxPEHZk)bsSU_n^;;7?1eKqap_`BK1O`lR zCOF`fK02${l@&p}ABV^CD^=wtVwbAoUe|F}ZDf-(u>o@vdPfp4bR;)UvcDtxX-SPj z;+~#+<ozA#fuKPlWsq;!&v5;Ah-NTsR+VVVD!y)YpsTzhML+D4RgRXoI-O3P7O+C7 zpRj48bm~eP-^IYB%^P(~V$!Bu7a1L*F5|0#G-cg#JPH-dv^bhV1%_@I*D0!E3KjkQ zkQ6^)-?Bo5ZIbwJ^WnYzTlC*8{@dWcP5#^LzjOV!)qivLO%y8b@){nALWMj26&*u9 z{;-cf>c3T1fj3a7kO=G%iF6sLm`hUDfqHT(0Tl1Sp`N8@04SQn4PTg8q2fq=USy_T z(p2IVi7@L9=5uTnMPeij#<BG)JjerwtF~sw3o4L$g*atjE^Gu#sxudpcj^@jOuYi2 z0$yURhA%jU!z|2NjG2v*xfq#^LHmi({Q79c%?VmT)kJ}S6fJfo?TUXhu%ZVq@QUwO z%U(?I3*i+ZwR8`OjKe45nNGKYhFd~UW#S8^R-xX?CAt%cp&GzWrGh*B4x-qoe(f~F z{J<1-rYHffQQ+iU=4G4`E?~v!TJ?LOUVi<SuT$f4sz-P(B_}v_2UFZDNTO>u-f9Lz zF*p^^#WO)D++`5K5h-s7Pkm=-g-0n6U7K>=_@w5P5DJ9vu6@|<;7$jW6v@>X2o~=g zIE53@94w*mZKM*zv4w9tFX2W{dU&E2k9;&xINNPig{Y51b#Apd6X!}I4hg^a+ixY0 ztIyMKO-f^d5(vX!3&<1#@ddME?u{@o2yDhO3`M6_D$NnnorqL^&KCr3fKrHbqPj`V z<qraIE~J=5HH3CZ=e)(#JlF)mHV?ru-T<ulf(I)$Dz^lzc$oAZ)Xswyn-x|DE8w04 zR(K7M;NeT-Iy&6}6!O+$Vz)Wk(&$4tkRU-Tcv{4v1)~*_99rQbl77&-Y)=JRp+tsK z5UQn#@%JSnQGE!}g_ROoVT7cJ;>Dc`w1NjKxagriZzi0F=}hjf=eKq{jlN9$5v;Fz zTip(ezzc}N-3@4qKLkYah=(YiJ{qFHN(Q+JpD5vYjN#4r6}oOV*_W`lCSXJ_{=zDh zMm6YFg?>@2f_gipY~AP*rd5em)F<vY#wrFpRsl9~27~x!qe_F?u5`%!kY}hVZcr8T z%{atwmnNPG)-eV$p;QBS&qjp>T)}GTK#B@Ph?ZA(v+|z$Q|u1%J>xmPPHp0#{j$q6 z&+t>&hSXdrT8s9`?*UslMKr&DlbP03NYr8_23u1RToIp@_|WxZgyX@lDuURPwDRF< zaIRIvih1YK-4TKJuTci`X7ek>FV)_<69_}UtqXPggWpXGC#POYkSwr8751ox2G@TQ zaxoV&jt9B0b;s_P_{$z;<YFONl#vUqI!9dkI3DDp3S+qv|BGq{UHWjy#YW3})6N`s zKD4YPIus8%<U;LBTaCN=5gp)lk>qKSACX4c_VYCZyR1U|G~D8UbtJe2J2ZSQ@|A)F zT)^9z#}@MtHb4|i$GW#hdht!L0mUp~1A_!8pDHRrin0j{)3YdAW|;8hwueIX*oRap z`iUL(%p+8kYB55MLfMqT3-OvKTh0bn7=<0qrwm^ZsrKZA#!CD`YzP4!U>TzTWmSJ9 zkrMzI6;#q#=u*fgm#7@}H62nWhOd-J9CTi4L{H+V`M6fBAW>6XkwkQ78O0E7qiU)N zP>dnxpWOf8Q4)KeWO{t5*&k~l$6o-#_zubbLm`Z{)|U=i@DRpIyj~x|SVfE@AdIDW zB@l)L<u?mqh>l7KL-~z|FqZieJcJ<{{^KAF^<*W4p=D1?+wnsfs`PjWBRuUQgHA*^ zW9JxP1%t6<ZKDius1Fid3MnsCLKyx56y59a*oD9OF(?v_y!mlq>Eef4OZlp6M6DQ_ zC2}VihJN%CfFebYJK`w=7Z}}eS`vz+mN76xRWr2<>y1RgqNGT1o4Z)T)?ux4ZKtpc z8kRvE96*G+ogZP(<^08WOeA63DiLbo9IMD)XJ=&#ut>j*vQtcW9xo^h1x^v)OUn+z zSSP?i2uAls+zYp$4J4DuFW4fHkCUVP#OAB9xGYcQD-*XP>L)inObr#8XuMh8aoEKT z5JD@fN?;dyt~7xi{PhoqV}L#YWxP$a0Ac7d3jzT^%*Q4fsfJak4N91X$1h6td^7mP zxcXE=7v(2O#^DzgH$b*i4_}?6cYYE0!c}EFd{L^(1gKKdJzB5JUGq!97fTsymGDJ9 zt!wZ_kslKI`|W!)d@<m|xB2fD|LyhPCjV{r-?{$V>c2VvU1(niS8zbrAO(oc_@PoU zL@WQY$c5(iGOMH0r_dFXCUg7yAnvTm!xx`xBKl^Eb<o944!TgAh!N#8($9>Qz1iV+ z|13b$VsG*)<k9*TQs&mWAPTGz;f#yszRM2Cg<q(#w9=~aOoffFU;;I+o=zF$`{wZr zF%u58`@9YsbUg%Xw@2a^g5$0~rn*I;Wn{%yjsP%3k*kr{w)ke*?rm}(WGxi)9;Vtb zc@NV)URq(lA~%g%!8;L0&888eC8S2(uM2K-qk99;)YPfF7EG!N9%1d(;K}pMadZ#I z_)DYju_`o$TOY@i-Ot=5{2Y-qvXB<-Su$?n|2>H%W31uJ!oE>W-^CrR9iDO5!RVh6 z7XQwqobX$O4S#RMY~DJnnCM?l)eAn8S>tu%!`;HmN0^`7l|1NbBN-FE{+(b-C`3ER zQrpV_rRIZ!&SK~e!5l@=L3m>D!s7u7(w>0k!&KU$soPADE}=?T%+yIrpSL=i$9O6Z zuj#Ih$-0E`DR~H$b|r7<9u6=MimJL-|AdrfYC}u_ME8z-pQ;>zzvbgBhvO~x*o%eF zVq~^vAnbYj6wx{iGSM{NsO(sH@vi9c)y1%9j6!)}F7=_Y?y-O$JkS7NnEH^JUp|5M zpE9+bet;jmk1b90VcG2$>$sagi*;Dmj@JzS;H+)5pJC7cP_`UUDqAVsDqG7n?BrE; zSJx!ds⪼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 SEW~}vpC_A9k4U${i|4;Z`_&5o diff --git a/raytime/JespersRayTracer.c b/raytime/JespersRayTracer.c index 67e590a..bc49d04 100644 --- a/raytime/JespersRayTracer.c +++ b/raytime/JespersRayTracer.c @@ -178,10 +178,8 @@ int getWaveParameter(float *slowness, icoord size, float dgrid, fcoord s, fcoord int getnRay(icoord size, fcoord s, fcoord r, float dx, int nRayStep) { - float x, y, z; int dn, nRayTmp; float dl, dr; - fcoord position; H = (size.z-1)*dx; L = (size.x-1)*dx; @@ -230,7 +228,6 @@ int traceTwoPoint(fcoord s, fcoord r, int nRay, fcoord *rayReference3D) int calculatePerturbedRay(fcoord *rayPerturbed3D, fcoord s, fcoord r, int nRay, fcoord *rayReference3D, float *slowness, icoord size) { float si, sl, deltaS, gso, angle, qx, qz; - float xTmp, yTmp, zTmp; int i; sl = sqrt(pow((r.x-s.x), 2) + pow((r.y-s.y), 2) + pow((r.z-s.z), 2)); diff --git a/raytime/Makefile b/raytime/Makefile index 6d454e7..0d70c1b 100644 --- a/raytime/Makefile +++ b/raytime/Makefile @@ -7,7 +7,7 @@ include ../Make_include ALLINC = -I. LIBS += -L$L -lgenfft -lm $(LIBSM) #LIBS += -L$L -lgenfft -lm -lc -#OPTC = -g -Wall -fsignaling-nans -O0 +OPTC = -g -Wall -fsignaling-nans -O0 #OPTC += -fopenmp -Waddress #OPTC := $(subst -O3 -ffast-math, -O1 -g ,$(OPTC)) #PGI options for compiler feedback diff --git a/raytime/getParameters.c b/raytime/getParameters.c index 265b823..1651e1a 100644 --- a/raytime/getParameters.c +++ b/raytime/getParameters.c @@ -26,43 +26,28 @@ int optncr(int n); int getModelInfo(char *file_name, int *n1, int *n2, float *d1, float *d2, float *f1, float *f2, float *min, float *max, int *axis, int zeroch, int verbose); -int getWaveletInfo(char *file_src, int *n1, int *n2, float *d1, float *d2, float *f1, float *f2, float *fmax, int *nxm, int verbose); - -int getWaveletHeaders(char *file_src, int n1, int n2, float *gx, float *sx, float *gelev, float *selev, int verbose); - - int recvPar(recPar *rec, float sub_x0, float sub_z0, float dx, float dz, int nx, int nz); int writesufile(char *filename, float *data, int n1, int n2, float f1, float f2, float d1, float d2); int getParameters(modPar *mod, recPar *rec, snaPar *sna, wavPar *wav, srcPar *src, shotPar *shot, bndPar *bnd, rayPar *ray, int verbose) { - int isnapmax1, isnapmax2, isnapmax, sna_nrsna; - int n1, n2, nx, nz, nsrc, ix, axis, ioPz, is0, optn; + int nx, nz, nsrc, ix, axis, is0; int idzshot, idxshot; int src_ix0, src_iz0, src_ix1, src_iz1; - int disable_check; - float cp_min, cp_max, cs_min, cs_max, ro_min, ro_max; - float stabfactor,dispfactor, cmin, dt, fmax, scl, wfct, tapfact; - float zstart, xstart,d1,d2,f1,f2,sub_x0,sub_z0; + float cp_min, cp_max; + float sub_x0,sub_z0; float srcendx, srcendz, dx, dz; - float xsrc, zsrc, dxshot, dzshot, dtshot; + float xsrc, zsrc, dxshot, dzshot; float dxrcv,dzrcv,dxspread,dzspread; - float tsnap1, tsnap2, dtsnap, dxsnap, dzsnap, dtrcv; - float xsnap1, xsnap2, zsnap1, zsnap2, xmax, zmax; - float xsrc1, xsrc2, zsrc1, zsrc2, tsrc1, tsrc2, tlength, tactive; - float src_angle, src_velo, p, grad2rad, rdelay, scaledt; + float xmax, zmax; + float xsrc1, xsrc2, zsrc1, zsrc2; float *xsrca, *zsrca, rrcv; float rsrc, oxsrc, ozsrc, dphisrc, ncsrc; size_t nsamp; - int i, j; - int cfree; - int tapleft,tapright,taptop,tapbottom; int nxsrc, nzsrc; - int largeSUfile; - int is,ntraces,length_random; - float rand; - char *src_positions, tmpname[1024]; + int is; + char *src_positions; if (!getparint("verbose",&verbose)) verbose=0; @@ -82,15 +67,6 @@ int getParameters(modPar *mod, recPar *rec, snaPar *sna, wavPar *wav, srcPar *sr mod->nz = nz; mod->nx = nx; - if(!getparfloat("dt",&mod->dt)) mod->dt = 0.004; - if(!getparfloat("tmod",&mod->tmod)) mod->tmod=1.0; - - assert(mod->dt!=0.0); - /* check if receiver delays is defined; option inactive: add delay time to total modeling time */ - if (!getparfloat("rec_delay",&rdelay)) rdelay=0.0; - rec->delay=NINT(rdelay/mod->dt); - dt = mod->dt; - /* origin of model in real (non-grid) coordinates */ mod->x0 = sub_x0; mod->z0 = sub_z0; @@ -98,14 +74,6 @@ int getParameters(modPar *mod, recPar *rec, snaPar *sna, wavPar *wav, srcPar *sr zmax = sub_z0+(nz-1)*dz; if (verbose) { - vmess("*******************************************"); - vmess("************** general info ***************"); - vmess("*******************************************"); - vmess("tmod = %f",mod->tmod); - vmess("ntsam = %d dt = %f(%e)",mod->nt, mod->dt, mod->dt); - if (mod->ischeme == 1) vmess("Acoustic grid pressure"); - if (mod->grid_dir) vmess("Time reversed modelling"); - else vmess("Forward modelling"); vmess("*******************************************"); vmess("*************** model info ****************"); vmess("*******************************************"); @@ -121,9 +89,6 @@ int getParameters(modPar *mod, recPar *rec, snaPar *sna, wavPar *wav, srcPar *sr if (!getparfloat("xsrc",&xsrc)) xsrc=sub_x0+((nx-1)*dx)/2.0; if (!getparfloat("zsrc",&zsrc)) zsrc=sub_z0; -// if (!getparint("nsrc",&nsrc)) nsrc=1; - - //if (!getparint("nshot",&shot->n)) shot->n=1; if (!getparint("nxshot",&shot->nx)) shot->nx=1; if (!getparint("nzshot",&shot->nz)) shot->nz=1; if (!getparfloat("dxshot",&dxshot)) dxshot=dx; @@ -228,56 +193,26 @@ int getParameters(modPar *mod, recPar *rec, snaPar *sna, wavPar *wav, srcPar *sr /* number of sources per shot modeling */ if (!getparint("src_window",&src->window)) src->window=0; - if (!getparfloat("src_angle",&src_angle)) src_angle=0.; - if (!getparfloat("src_velo",&src_velo)) src_velo=1500.; if (!getparint("distribution",&src->distribution)) src->distribution=0; if (!getparfloat("amplitude", &src->amplitude)) src->amplitude=0.0; - if (!getparfloat("tlength", &tlength)) tlength=mod->dt*(mod->nt-1); if (src->random && nxsrc==0) { if (!getparint("nsrc",&nsrc)) nsrc=1; if (!getparfloat("xsrc1", &xsrc1)) xsrc1=sub_x0; if (!getparfloat("xsrc2", &xsrc2)) xsrc2=xmax; if (!getparfloat("zsrc1", &zsrc1)) zsrc1=sub_z0; if (!getparfloat("zsrc2", &zsrc2)) zsrc2=zmax; - if (!getparfloat("tsrc1", &tsrc1)) tsrc1=0.0; - if (!getparfloat("tsrc2", &tsrc2)) tsrc2=mod->tmod; - if (!getparfloat("tactive", &tactive)) tactive=tsrc2; - tsrc2 = MIN(tsrc2, mod->tmod); - if (!getparfloat("tlength", &tlength)) tlength=tsrc2-tsrc1; - if (!getparint("length_random", &length_random)) length_random=1; dxshot = xsrc2-xsrc1; dzshot = zsrc2-zsrc1; - dtshot = tsrc2-tsrc1; - src->tbeg = (float *)malloc(nsrc*sizeof(float)); - src->tend = (float *)malloc(nsrc*sizeof(float)); src->x = (int *)malloc(nsrc*sizeof(int)); src->z = (int *)malloc(nsrc*sizeof(int)); nsamp = 0; -/* write time and length of source signals */ - - if (verbose>3) { - float *dum; - dum = (float *)calloc(mod->nt, sizeof(float)); - for (is=0; is<nsrc; is++) { - dum[(int)floor(src->tbeg[is]/mod->dt)] = src->tend[is]-src->tbeg[is]; - } - FILE *fp; - sprintf(tmpname,"srcTimeLengthN=%d.bin",mod->nt); - fp = fopen(tmpname, "w+"); - fwrite(dum, sizeof(float), mod->nt, fp); - fclose(fp); - free(dum); - } - } else if (nxsrc != 0) { /* source array is defined */ nsrc=nxsrc; src->x = (int *)malloc(nsrc*sizeof(int)); src->z = (int *)malloc(nsrc*sizeof(int)); - src->tbeg = (float *)malloc(nsrc*sizeof(float)); - src->tend = (float *)malloc(nsrc*sizeof(float)); xsrca = (float *)malloc(nsrc*sizeof(float)); zsrca = (float *)malloc(nsrc*sizeof(float)); getparfloat("xsrca", xsrca); @@ -285,7 +220,6 @@ int getParameters(modPar *mod, recPar *rec, snaPar *sna, wavPar *wav, srcPar *sr for (is=0; is<nsrc; is++) { src->x[is] = NINT((xsrca[is]-sub_x0)/dx); src->z[is] = NINT((zsrca[is]-sub_z0)/dz); - src->tbeg[is] = 0.0; if (verbose>3) fprintf(stderr,"Source Array: xsrc[%d]=%f zsrc=%f\n", is, xsrca[is], zsrca[is]); } src->random = 1; @@ -306,24 +240,6 @@ int getParameters(modPar *mod, recPar *rec, snaPar *sna, wavPar *wav, srcPar *sr src->x = (int *)malloc(nsrc*sizeof(int)); src->z = (int *)malloc(nsrc*sizeof(int)); - src->tbeg = (float *)malloc(nsrc*sizeof(float)); - src->tend = (float *)malloc(nsrc*sizeof(float)); - grad2rad = 17.453292e-3; - p = sin(src_angle*grad2rad)/src_velo; - if (p < 0.0) { - for (is=0; is<nsrc; is++) { - src->tbeg[is] = fabsf((nsrc-is-1)*dx*p); - } - } - else { - for (is=0; is<nsrc; is++) { - src->tbeg[is] = is*dx*p; - } - } - for (is=0; is<nsrc; is++) { - src->tend[is] = src->tbeg[is] + (wav->nt-1)*wav->dt; - } - is0 = -1*floor((nsrc-1)/2); for (is=0; is<nsrc; is++) { src->x[is] = is0 + is; @@ -340,15 +256,11 @@ int getParameters(modPar *mod, recPar *rec, snaPar *sna, wavPar *wav, srcPar *sr vmess("*********** source array info *************"); vmess("*******************************************"); vmess("Areal source array is defined with %d sources.",nsrc); -/* vmess("Memory requirement for sources = %.2f MB.",sizeof(float)*(wav->nx*(wav->nt/(1024.0*1024.0))));*/ vmess("Memory requirement for sources = %.2f MB.",sizeof(float)*(nsamp/(1024.0*1024.0))); - if (src->plane) vmess("Computed p-value = %f.",p); } if (src->random) { vmess("Sources are placed at random locations in domain: "); vmess(" x[%.2f : %.2f] z[%.2f : %.2f] ", xsrc1, xsrc2, zsrc1, zsrc2); - vmess(" and all start in time window t[%.3f : %.3f].", tsrc1, tsrc2); - vmess(" after time %.3f the sources will not be active anymore.", tactive); } } @@ -357,47 +269,17 @@ int getParameters(modPar *mod, recPar *rec, snaPar *sna, wavPar *wav, srcPar *sr if (!getparint("sinkdepth",&rec->sinkdepth)) rec->sinkdepth=0; if (!getparint("sinkdepth_src",&src->sinkdepth)) src->sinkdepth=0; if (!getparint("sinkvel",&rec->sinkvel)) rec->sinkvel=0; - if (!getparfloat("dtrcv",&dtrcv)) dtrcv=0.004; - /* TODO check if dtrcv is integer multiple of dt */ - rec->skipdt=NINT(dtrcv/dt); - dtrcv = mod->dt*rec->skipdt; - if (!getparfloat("rec_delay",&rdelay)) rdelay=0.0; - if (!getparint("rec_ntsam",&rec->nt)) rec->nt=NINT((mod->tmod)/dtrcv)+1; - if (!getparint("rec_int_p",&rec->int_p)) rec->int_p=0; - if (!getparint("rec_int_vx",&rec->int_vx)) rec->int_vx=0; - if (!getparint("rec_int_vz",&rec->int_vz)) rec->int_vz=0; if (!getparint("max_nrec",&rec->max_nrec)) rec->max_nrec=15000; - if (!getparint("scale",&rec->scale)) rec->scale=0; if (!getparfloat("dxspread",&dxspread)) dxspread=0; if (!getparfloat("dzspread",&dzspread)) dzspread=0; - rec->nt=MIN(rec->nt, NINT((mod->tmod)/dtrcv)+1); - -/* allocation of receiver arrays is done in recvPar */ -/* - rec->max_nrec += rec->max_nrec+1; - rec->x = (int *)calloc(rec->max_nrec,sizeof(int)); - rec->z = (int *)calloc(rec->max_nrec,sizeof(int)); - rec->xr = (float *)calloc(rec->max_nrec,sizeof(float)); - rec->zr = (float *)calloc(rec->max_nrec,sizeof(float)); -*/ - + /* calculates the receiver coordinates */ recvPar(rec, sub_x0, sub_z0, dx, dz, nx, nz); - if (!getparint("rec_type_vz", &rec->type.vz)) rec->type.vz=1; - if (!getparint("rec_type_vx", &rec->type.vx)) rec->type.vx=0; - if (!getparint("rec_type_ud", &rec->type.ud)) rec->type.ud=0; - /* receivers are on a circle, use default interpolation to real (not on a grid-point) receiver position */ if (getparfloat("rrcv", &rrcv)) { if (!getparint("rec_int_p",&rec->int_p)) rec->int_p=3; - if (!getparint("rec_int_vx",&rec->int_vx)) rec->int_vx=3; - if (!getparint("rec_int_vz",&rec->int_vz)) rec->int_vz=3; - } - if (rec->int_p==3) { - rec->int_vx=3; - rec->int_vz=3; } if (verbose) { @@ -408,65 +290,14 @@ int getParameters(modPar *mod, recPar *rec, snaPar *sna, wavPar *wav, srcPar *sr vmess("************* receiver info ***************"); vmess("*******************************************"); vmess("ntrcv = %d nrcv = %d ", rec->nt, rec->n); - vmess("dtrcv = %f ", dtrcv ); vmess("dzrcv = %f dxrcv = %f ", dzrcv, dxrcv); - vmess("time-delay = %f = points = %d", rdelay, rec->delay); - if ( fmax > (1.0/(2.0*dtrcv)) ) { - vwarn("Receiver time sampling (dtrcv) is aliased."); - vwarn("time sampling should be < %.6f", 1.0/(2.0*fmax) ); - } - vmess("Receiver sampling can be => %.6e", 1.0/(2.0*fmax)); vmess("Receiver array at coordinates: "); vmess("zmin = %f zmax = %f ", rec->zr[0]+sub_z0, rec->zr[rec->n-1]+sub_z0); vmess("xmin = %f xmax = %f ", rec->xr[0]+sub_x0, rec->xr[rec->n-1]+sub_x0); vmess("which are gridpoints: "); vmess("izmin = %d izmax = %d ", rec->z[0], rec->z[rec->n-1]); vmess("ixmin = %d ixmax = %d ", rec->x[0], rec->x[rec->n-1]); - if (rec->type.p) { - fprintf(stderr," %s: Receiver interpolation for P: ",xargv[0]); - if(rec->int_p==0) fprintf(stderr,"p->p\n"); - if(rec->int_p==1) fprintf(stderr,"p->vz\n"); - if(rec->int_p==2) fprintf(stderr,"p->vx\n"); - if(rec->int_p==3) fprintf(stderr,"interpolate to actual (no-grid) position of receiver\n"); - } - if (rec->type.vx) { - fprintf(stderr," %s: Receiver interpolation for Vx: ",xargv[0]); - if(rec->int_vx==0) fprintf(stderr,"vx->vx\n"); - if(rec->int_vx==1) fprintf(stderr,"vx->vz\n"); - if(rec->int_vx==2) fprintf(stderr,"vx->txx/tzz\n"); - if(rec->int_vx==3) fprintf(stderr,"interpolate to real(no-grid) position of receiver\n"); - } - if (rec->type.vz) { - fprintf(stderr," %s: Receiver interpolation for Vz: ",xargv[0]); - if(rec->int_vz==0) fprintf(stderr,"vz->vz\n"); - if(rec->int_vz==1) fprintf(stderr,"vz->vx\n"); - if(rec->int_vz==2) fprintf(stderr,"vz->txx/tzz\n"); - if(rec->int_vz==3) fprintf(stderr,"interpolate to real(no-grid) position of receiver\n"); - } - fprintf(stderr," %s: Receiver types : ",xargv[0]); - if (rec->type.vz) fprintf(stderr,"Vz "); - if (rec->type.vx) fprintf(stderr,"Vx "); - if (rec->type.p) fprintf(stderr,"p "); - if (rec->type.ud) fprintf(stderr,"P+ P- "); - if (mod->ischeme>2) { - if (rec->type.txx) fprintf(stderr,"Txx "); - if (rec->type.tzz) fprintf(stderr,"Tzz "); - if (rec->type.txz) fprintf(stderr,"Txz "); - if (rec->type.pp) fprintf(stderr,"P "); - if (rec->type.ss) fprintf(stderr,"S "); - } fprintf(stderr,"\n"); - if ( ( ((mod->nt*mod->dt-rec->delay)/rec->skipdt)+1) > 16384) { - vwarn("Number of samples in receiver file is larger that SU can handle "); - vwarn("use the paramater rec_ntsam=nt (with nt < 16384) to avoid this"); - } - if ((mod->nt-rec->delay)*mod->dt > rec->nt*dtrcv) { - int nfiles = ceil((mod->nt*mod->dt)/(rec->nt*dtrcv)); - int lastn = floor((mod->nt)%(rec->nt*rec->skipdt)/rec->skipdt)+1; - vmess("Receiver recordings will be written to %d files",nfiles); - vmess("Last file will contain %d samples",lastn); - - } } else { vmess("*************** no receivers **************"); diff --git a/raytime/raytime.c b/raytime/raytime.c index be7fb12..1c1e241 100644 --- a/raytime/raytime.c +++ b/raytime/raytime.c @@ -50,7 +50,6 @@ char *sdoc[] = { " file_rcv=recv.su .. base name for receiver files", " dx= ............... read from model file: if dx==0 then dx= can be used to set it", " dz= ............... read from model file: if dz==0 then dz= can be used to set it", -" dt= ............... read from file_src: if dt==0 then dt= can be used to set it", "" , " RAY TRACING PARAMETERS:", " smoothwindow=0 .... if set lenght of 2/3D smoothing window on slowness", @@ -133,25 +132,11 @@ int main(int argc, char **argv) bndPar bnd; shotPar shot; rayPar ray; - float **src_nwav; - float *rox, *roz, *l2m, *lam, *mul; - float *tss, *tes, *tep, *p, *q, *r; - float *vx, *vz, *tzz, *txz, *txx; - float *rec_vx, *rec_vz, *rec_p; float *velocity, *slowness; - float *rec_txx, *rec_tzz, *rec_txz; - float *rec_pp, *rec_ss; - float *rec_udp, *rec_udvz; - float *beam_vx, *beam_vz, *beam_p; - float *beam_txx, *beam_tzz, *beam_txz; - float *beam_pp, *beam_ss; - float sinkvel; - double t0, t1, t2, t3, tt, tinit; - size_t size, sizem, nsamp; - int n1, ix, iz, ir, ixshot, izshot, i; - int ioPx, ioPz; - int it0, it1, its, it, fileno, isam; - int ixsrc, izsrc, irec; + double t0, t1, tinit; + size_t size; + int n1, ix, iz, ir, ixshot, izshot; + int irec; int nRayStep; fcoord coordsx, coordgx, Time; icoord grid; @@ -161,7 +146,6 @@ int main(int argc, char **argv) size_t nwrite; int verbose; FILE *fpt, *fpa; - double ddt; t0= wallclock_time(); initargs(argc,argv); @@ -173,7 +157,6 @@ int main(int argc, char **argv) /* allocate arrays for model parameters: the different schemes use different arrays */ n1 = mod.nz; - sizem=mod.nx*mod.nz; velocity = (float *)calloc(mod.nx*mod.nz,sizeof(float)); slowness = (float *)calloc(mod.nx*mod.nz,sizeof(float)); @@ -247,8 +230,7 @@ int main(int argc, char **argv) assert(fpa != NULL); } - ddt = (double)mod.dt;/* to avoid rounding in 32 bit precision */ - hdr.dt = (unsigned short)lround((((double)1.0e6*ddt*rec.skipdt))); + hdr.dt = (unsigned short)1; hdr.scalco = -1000; hdr.scalel = -1000; hdr.trid = 1; diff --git a/raytime/readModel.c b/raytime/readModel.c index 8ac2640..e54c6d1 100644 --- a/raytime/readModel.c +++ b/raytime/readModel.c @@ -31,18 +31,12 @@ int readModel(modPar mod, bndPar bnd, float *velocity, float *slowness) FILE *fpcp; size_t nread; int i, tracesToDo, j; - int n1, ix, iz, nz, nx; - int ixo, izo, ixe, ize; - int ioXx, ioXz, ioZz, ioZx, ioPx, ioPz, ioTx, ioTz; - float cp2, cs2, cs11, cs12, cs21, cs22, mul, mu, lamda2mu, lamda; - float cs2c, cs2b, cs2a, cpx, cpz, bx, bz, fac; - float a, b; + int nz; segy hdr; /* grid size and start positions for the components */ nz = mod.nz; - nx = mod.nx; /* open files and read first header */ -- GitLab