def build_modelfilestring(self): # initialise a list containing info for model file modelfilestring = [] # number of periods period=np.unique(np.around(1./self.Data.frequencies,2)) period = list(period[period>0.]) modelfilestring.append('%5i'%len(period)) # add frequency string modelfilestring.append(p2d.create_multiple_line_string(period, 5,'%10.2f')) # add string giving number of cells: modelfilestring.append(''.join(['%5i'%i for i in [len(self.meshlocations_x), len(self.meshlocations_z)+self.n_airlayers, self.n_airlayers+1]])) # add strings giving horizontal and vertical mesh steps meshz = list(self.meshblockthicknesses_zair)+list(self.meshblockthicknesses_z) for meshstep in [self.meshblockwidths_x,meshz]: modelfilestring.append\ (p2d.create_multiple_line_string(meshstep, 10,'%5.2f')) # add resistivity map rmap = ('0'*len(self.resistivity_map[0])+'\n')*self.n_airlayers rmap += '\n'.join([''.join(i) for i in self.resistivity_map]) modelfilestring.append(rmap) # add number of resistivity domains (+1 to include air) modelfilestring.append('%5i'%(len(self.resistivity_dict.keys())+1)) # add dictionary contents, assuming rvertical = rmax, slant and dip zero # first, air layer, properties always the same modelfilestring.append('0 0 -1.00 0.00 0.00 0.00 0.00 0.00') # second, dictionary contents for key in self.resistivity_dict.keys(): rlist = self.resistivity_dict[key] rlist.insert(2,rlist[1]) rlist += [0.,0.] if rlist[1]/rlist[0] == 1: aniso = ' 0' else: aniso = ' 1' modelfilestring.append(''.join([key,aniso]+['%10.2f'%i for i in rlist])) # append bathymetry index, at this stage only 0 allowed: modelfilestring.append('%5i'%0) # append number of calculation points (stations): modelfilestring.append('%5i'%len(self.stationblocknums)) # append rotation modelfilestring.append('%10.2f'%self.rotation) # append station blocknums modelfilestring.append(p2d.create_multiple_line_string(self.stationblocknums, 5,' %03i')) self.modelfilestring = '\n'.join(modelfilestring)
def build_modelfilestring(self): # initialise a list containing info for model file modelfilestring = [] # add header info modelfilestring.append('NEW') modelfilestring.append(' 1') modelfilestring.append(' 1.000') # add string giving number of cells: modelfilestring.append(''.join([ '%5i' % i for i in [ len(self.meshlocations_x), len(self.meshlocations_z) + self.n_airlayers, self.n_airlayers + 1 ] ])) # add strings giving horizontal and vertical mesh steps meshz = list(self.meshblockthicknesses_zair) + list( self.meshblockthicknesses_z) for meshstep in [self.meshblockwidths_x, meshz]: modelfilestring.append\ (p2d.create_multiple_line_string(meshstep, 10,'%10.3f')) # add resistivity map rmap = ('%5i' % 0 * len(self.resistivity[0]) + '\n') * self.n_airlayers rmap += '\n'.join([''.join('%5i'%ii for ii in i) for i in \ np.arange(1,np.size(self.resistivity[:,:,0])+1).reshape(np.shape(self.resistivity)[:2])]) modelfilestring.append(rmap) # add number of resistivity domains (+1 to include air) modelfilestring.append('%5i' % (np.size(self.resistivity[:, :, 0]) + 1)) # add dictionary contents, assuming rvertical = rmax, slant and dip zero # first, air layer, properties always the same modelfilestring.append( ' 0 0 -1.00 0.00 0.00 0.00 0.00 0.00 0 0 0 0 0 0' ) # second, dictionary contents no = 1 for j in range(len(self.resistivity)): for i in range(len(self.resistivity[j])): # initialise a list containing resx,resy,strike rlist = list(self.resistivity[j, i]) # insert resz (assumed to be same as resy) rlist.insert(2, rlist[1]) # insert dip and slant (assumed zero) rlist += [0., 0.] # if rlist[1]/rlist[0] == 1.: # aniso = ' 0' # invert_key = ' 1 1 1 0 0 0' # else: aniso = ' 1' invert_key = ' 1 1 1 1 1 0' modelfilestring.append( ''.join(['%5i' % no, aniso] + ['%10.2f' % i for i in rlist] + [invert_key])) no += 1 # append bathymetry index, at this stage only 0 allowed: modelfilestring.append('%5i' % 0) # append number of calculation points (stations): modelfilestring.append('%5i' % len(self.stationblocknums)) # append rotation modelfilestring.append('%10.2f' % self.rotation) # append station blocknums modelfilestring.append( p2d.create_multiple_line_string(self.stationblocknums, 5, ' %03i')) modelfilestring.append('%5i' % 0) self.modelfilestring = '\n'.join(modelfilestring) + '\n'
def build_modelfilestring(self): # initialise a list containing info for model file modelfilestring = [] # add header info modelfilestring.append('NEW') modelfilestring.append(' 1') modelfilestring.append(' 1.000') # add string giving number of cells: modelfilestring.append(''.join(['%5i'%i for i in [len(self.meshlocations_x), len(self.meshlocations_z)+self.n_airlayers, self.n_airlayers+1]])) # add strings giving horizontal and vertical mesh steps meshz = list(self.meshblockthicknesses_zair)+list(self.meshblockthicknesses_z) for meshstep in [self.meshblockwidths_x,meshz]: modelfilestring.append\ (p2d.create_multiple_line_string(meshstep, 10,'%10.3f')) # add resistivity map rmap = ('%5i'%0*len(self.resistivity[0])+'\n')*self.n_airlayers rmap += '\n'.join([''.join('%5i'%ii for ii in i) for i in \ np.arange(1,np.size(self.resistivity[:,:,0])+1).reshape(np.shape(self.resistivity)[:2])]) modelfilestring.append(rmap) # add number of resistivity domains (+1 to include air) modelfilestring.append('%5i'%(np.size(self.resistivity[:,:,0])+1)) # add dictionary contents, assuming rvertical = rmax, slant and dip zero # first, air layer, properties always the same modelfilestring.append(' 0 0 -1.00 0.00 0.00 0.00 0.00 0.00 0 0 0 0 0 0') # second, dictionary contents no = 1 for j in range(len(self.resistivity)): for i in range(len(self.resistivity[j])): # initialise a list containing resx,resy,strike rlist = list(self.resistivity[j,i]) # insert resz (assumed to be same as resy) rlist.insert(2,rlist[1]) # insert dip and slant (assumed zero) rlist += [0.,0.] # if rlist[1]/rlist[0] == 1.: # aniso = ' 0' # invert_key = ' 1 1 1 0 0 0' # else: aniso = ' 1' invert_key = ' 1 1 1 1 1 0' modelfilestring.append(''.join(['%5i'%no,aniso]+['%10.2f'%i for i in rlist]+[invert_key])) no += 1 # append bathymetry index, at this stage only 0 allowed: modelfilestring.append('%5i'%0) # append number of calculation points (stations): modelfilestring.append('%5i'%len(self.stationblocknums)) # append rotation modelfilestring.append('%10.2f'%self.rotation) # append station blocknums modelfilestring.append(p2d.create_multiple_line_string(self.stationblocknums, 5,' %03i')) modelfilestring.append('%5i'%0) self.modelfilestring = '\n'.join(modelfilestring)+'\n'