The function DEVWELLTOIPF converts Deviated Wells, described in CSV format, to an IPF file.
FUNCTION= |
DEVWELLTOIPF |
CSVFNAME= |
Enter the name of an CSV file with minimal 6 columns that represents x- and y coordinates, azimuth and inclination, e.g. CSVFNAME=D:\DATA\AGS.CSV. |
IPFFNAME= |
Enter the name of an IPF file that need to be created for the data in the CSVFNAME„ e.g. IPFFNAME=D:\DATA\AGS.IPF. For each unique borehole in the CSV file, another point will be created in the IPF. The associated TXT files for the boreholes will be stored in the same folder as the IPFFNAME. |
NCOL |
Enter the column number in the CSV file that represents the unique NAME of the borehole, e.g. NCOL=4. By default NCOL=1. The NAME of the borehole will be used to create the file name for the associated TXT files. Therefore, the character set ‘: /’ will be replaced by a ‘_’ (a space is part of the replacement as well, denoted as the second character in the set). |
XCOL |
Enter the column number in the CSV file that represents the x-coordinate, e.g. XCOL=4. By default XCOL=2. |
YCOL |
Enter the column number in the CSV file that represents the y-coordinate, e.g. YCOL=6. By default YCOL=3. |
ZCOL |
Enter the column number in the CSV file that represents the z-coordinate, e.g. ZCOL=6. By default ZCOL=0 that means that the z-coordinate will be 0.0 m+MSL. |
DCOL |
Enter the column number in the CSV file that represents the depth, e.g. DCOL=6. By default DCOL=5. Remember that the DEPTH is measured as the net distance (meter) through the borehole. |
ACOL |
Enter the column number in the CSV file that represents the azimuth, e.g. ACOL=8. By default ACOL=6. The azimuth is defined as the angle with the z-axes measured clockwise with a zero angle pointing to the north and 90 to the east. |
ICOL |
Enter the column number in the CSV file that represents the inclination, e.g. ICOL=12. By default ICOL=7. The inclination is defined as the angle from the surface (xy-plane) downwards by a positive angle whereby 90.0 degrees is perpendicular downwards. |
NLCOL |
Enter the number of labels to be additional added to the TXT files of the boreholes, e.g. NLCOL=2. By default NLCOL=1 and a default label column is added (see LCOL{i}). |
LCOL{i} |
Enter the column number in the CSV file that represents the label, e.g. LCOL1=4. By default LCOL1=0 and a default label is used. The label can be used to colour particular trajectories along a borehole differently. If this keyword is absent, iMOD will add a default label ‘S’. |
Example 1
FUNCTION=DEVWELLTOIPF
CSVFNAME=D:\AGS.CSV
IPFFNAME=D:\IPF.IPF
This example, converts the columns in the CSV file via the default columns setting to an IPF file, the outcome in 3D could look like the following image.
The ASSIGNWELL function reads a geological model (TOP/BOT) in order to assign well screens to the right formation layer.
FUNCTION= |
ASSIGNWELL |
IPFFILE_IN= |
Give IPF file containing WELL or MEASUREMENT information. |
IPFFILE_out= |
Give IPF file outputfile. |
IXCOL= |
Enter the column number in the IPF file IPF{i} that represents the x coordinate, e.g. IXCOL=4. By default IXCOL=1. |
IYCOL= |
Enter the column number in the IPF file IPF{i} that represents the y coordinate, e.g. IYCOL=6. By default IYCOL=2. |
IDCOL= |
Enter the column number in the IPF file IPF{i} that represents the extraction rate of the well, e.g. IQCOL=12. By default IQCOL=3. |
IZ1COL= |
Enter the column number in the IPF file IPF{i} that represents the top of the well screen, e.g. ITCOL=4. By default ITCOL=4. |
IZ2COL= |
Enter the column number in the IPF file IPF{i} that represents the bottom of the well screen, e.g. IBCOL=6. By default IBCOL=5. |
NFORMATIONS= |
Enter the number of formations |
FORMATION{i}= |
Enter the number of the column in the IPF for the ..... of the i\({}^{th}\) formation |
TOP_L{i}= |
Enter the IDF for the i\({}^{th}\) modellayer that represents the top of modellayer i, e.g. TOP_L1=D:\INPUT\TOP_L1.IDF. |
BOT_L{i}= |
Enter the IDF for the i\({}^{th}\) modellayer that represents the bottom of modellayer i, e.g. BOT_L1=D:\INPUT\BOT_L1.IDF. |
Example 1
FUNCTION=ASSIGNWELL
IPFFILE_IN=D:\DATA\WELL.IPF
IPFFILE_OUT=D:\DATA\WELL_ASSIGNED.IPF
NFORMATIONS=2
FORMATION1=1
FORMATION2=2
TOP_L1=D:\GEOHYDROLOGY\TOP1.IDF
BOT_L1=D:\GEOHYDROLOGY\BOT1.IDF
TOP_L2=D:\GEOHYDROLOGY\TOP2.IDF
BOT_L2=D:\GEOHYDROLOGY\BOT2.IDF
Above an example is given how to divide well filters in the file WELL.IPF over 2 model layers resulting in the file WELL_ASSIGNED.IPF.
The MKWELLIPF function computes the extraction strength for each well based on a weighed value according to their length and permeability of the penetrated model layer. At the end of the procedure iMOD echoes a summary of the total and average extraction per model layer.
FUNCTION= |
MKWELLIPF |
NLAY= |
Enter the number of layers from which well may be organized, e.g. NLAY=7, by default NLAY=0 which means that only extraction rates are computed from the associated TXT files. |
|
|
TOPIDF{i}= |
Enter the name of an IDF-file that represents the top elevation of the i\({}^{th}\) modellayer, e.g. TOPIDF1=D:\MODEL\TOP1.IDF. |
BOTIDF{i}= |
Enter the name of an IDF-file that represents the bottom elevation of the i\({}^{th}\) modellayer, e.g. BOTIDF3=D:\MODEL\BOT_LAYER3.IDF. |
KDIDF{i}= |
Enter the name of an IDF-file that represents the transmissivity of a particular i\({}^{th}\) modellayer, e.g. KDIDF2=D:\MODEL\TRAN_L2.IDF. |
ITCOL= |
Enter the column number in the IPF file IPF{i} that represents the top of the well screen, e.g. ITCOL=4. By default ITCOL=4. |
IBCOL= |
Enter the column number in the IPF file IPF{i} that represents the bottom of the well screen, e.g. IBCOL=6. By default IBCOL=5. |
MINKHT= |
Specify the minimum horizontal transmissivity (m\(^2\)/d) that will receive a well. By default MINKHT=0.0 m\(^2\)/day. This parameters is used only whenever values are entered for KDIDF{i}. |
MINKD= |
Specify the horizontal transmissivity that is used te define the model layer of the well. The first model layer with a transmissivity of more than the specified MINKD, will receive the complete well. By default MINKD=0.0 m\(^2\)/day. This parameters is used only whenever values are entered for KDIDF{i} and will be active for those wells that cannot be assigned due to missing values for ITCOL and IBCOL. |
IMIDF= |
Whenever IMIDF=0, the mid of a well screen is computed by the top and bottom screen heights if both available (not equal to the parameter FNODATA). Whenever IMODF=1, the mid of the screen is equal to the top of the screen whenever the bottom height might be absent, and equal to the bottom whenever the top is absent. It both are available, the computation of the mid of the well screen is equal to the method described by IMIDF=0. By default IMIDF=0. |
FNODATA= |
Specify the NoDataValue for the top and bottom of the well screen, denoted by ITCOL and IBCOL. By default FNODATA=-99999.0, values equal to this will be discarded. |
|
|
NIPF |
Enter the number of IPF files to be organized, e.g. NIPF=3. |
IPF{i}= |
Enter the name for the i\({}^{th}\) IPF file, e.g. D:\DATA\WELL.IPF. The resulting IPF files will be save in the folder D:\DATA\WELL\IMOD_MKIPF_WELLS_L*.IPF for each model layer that has extraction rate \(<\)\(>\) 0.0. |
IXCOL= |
Enter the column number in the IPF file IPF{i} that represents the x coordinate, e.g. IXCOL=4. By default IXCOL=1. |
IYCOL= |
Enter the column number in the IPF file IPF{i} that represents the y coordinate, e.g. IYCOL=6. By default IYCOL=2. |
IQCOL= |
Enter the column number in the IPF file IPF{i} that represents the extraction rate of the well, e.g. IQCOL=12. By default IQCOL=3. |
ISS= |
This flags determines whether an time average extraction volume need to be computed for a specified period of time, for that case ISS need to be 1. By default ISS=0 and an average value is computed for the time series as a whole. |
SDATE= |
Specify a starting date (YYYYMMDD) from which the determination of a well strength/head will be computed. This keyword is compulsory whenever ISS=1. |
EDATE= |
Specify an end date (YYYYMMDD) from which the determination of a well strength/head will be computed. This keyword is compulsory whenever ISS=1. |
HNODATA= |
Specify the NoDataValue for the extraction rate, values equal to this will be discarded. By default HNODATA=0.0. |
The IPF file IMOD_MKIPF_WELLS_ALL.IPF contains all rows from the original IPF. This file is easier to analyse whether the well screen assigned have been computer properly. There is an attribute ERROR_CODE in the IPF that denotes the way the well has been assigned. The following codes are applicable:
• "@" means that the well is assigned to a nearby model layer;
• "#" means that the well could not be assigned;
• "-" means that the well has been assigned appropriately.
The IPF file IMOD_MKIPF_WELLS_UNASSIGNED.IPF contains all rows from the original IPF that could not be assigned to model layer.
Methodology
The following steps are carried out for each individual record in the IPF file (IPF{i}) as illustrated in the following figure:
Extraction well (Q) and rate allocation to the different screens (q\({}_{1}\)+q\({}_{2}\)+q\({}_{3}\))
1. In case the thickness of the filter screen is 0.0, the screen is assigned to the layer that captures the well screen. For all others case where the filter screen is \(>\) 0.0, the following steps are carried out. After each step all values are scale to be in between 0.0 and 1.0 (normalizing):
2. Compute the individual length of the well screen between the ITCOL and IBCOL into well screen segments, that penetrate each model layer. Any part of the well screen segments that are above the surface elevation (TOPIDF1) or below the lowest bottom elevation (BOTIDF{NLAY}) will be clipped off;
3. Compute the horizontal transmissivity (k-value \(\times \) well screen segment thickness) for all well screen segments.
4. Correct any ratio for a mismatch between the centre of the penetrating model layer \(Z_{c}\) and the vertical midpoint of the well screen segment \(F_{c}\), by:
\begin{align*} F=1.0-\frac {\left | Z_{c}-F_c \right |}{0.5 D_z}, \end{align*}
where \(D_z\) is the thickness of the corresponding aquifer. This correction is only applied to well screen segments that do not completely intersect a model layer.
5. Remove small intersections of the well screen based upon their transmissivity (in case MINKHT \(>\) 0.0).
6. If nothing is assigned to any model layer and the well screen in completely above the top of model (TOPIDF1), it is assigned to the first model layer.
7. Finally, if the well screen is completely within an aquitard, the well is assigned to the model layer for which the aquitard is an interbed.
Example 1
FUNCTION=MKWELLIPF
NLAY=3
TOPIDF1=D:\DATA\TOP1.IDF
TOPIDF2= D:\DATA\TOP2.IDF
TOPIDF3= D:\DATA\TOP3.IDF
BOTIDF1= D:\DATA\BOT1.IDF
BOTIDF2= D:\DATA\BOT2.IDF
BOTIDF3= D:\DATA\BOT3.IDF
KDIDF1= D:\DATA\KD1.IDF
KDIDF2= D:\DATA\KD2.IDF
KDIDF3= D:\DATA\KD3.IDF
CIDF1=D:\DATA\C1.IDF
CIDF2=D:\DATA\C2.IDF
NIPF=1
IPF1=D:\DATA\WELL.IPF
The example above, will classify each location in the IPF file D:\DATA\WELL.IPF according their length and associated transmissivity, within any penetrating modellayer.
Example 2
FUNCTION=MKWELLIPF
NLAY=3
TOPIDF1=D:\DATA\TOP1.IDF
TOPIDF2= D:\DATA\TOP2.IDF
TOPIDF3= D:\DATA\TOP3.IDF
BOTIDF1= D:\DATA\BOT1.IDF
BOTIDF2= D:\DATA\BOT2.IDF
BOTIDF3= D:\DATA\BOT3.IDF
KDIDF1= D:\DATA\KD1.IDF
KDIDF2= D:\DATA\KD2.IDF
KDIDF3= D:\DATA\KD3.IDF
CIDF1=D:\DATA\C1.IDF
CIDF2=D:\DATA\C2.IDF
IXCOL=1
IYCOL=2
ITCOL=3
IBCOL=4
IQCOL=8
NIPF=3
IPF1=D:\DATA\INDUSTRY.IPF
IPF2= D:\DATA\DRINKINGCOOPERATION.IPF
IPF3= D:\DATA\AGRICULTURE.IPF
The example above, will classify each location in three IPF files according their length and associated transmissivity, within any penetrating model layer. The content of the IPF files is different than the default IXCOL, IYCOL, ITCOL, IBCOL and IQCOL column identifications, and therefore added here.