XBeach
XBeach is a two-dimensional model for wave propagation, long waves and mean flow, sediment transport and morphological changes of the nearshore area, beaches, dunes and backbarrier during storms.
Example configuration
XBeachAdapterRun.xml
Export activities
The first steps in the general adapter run are the netcdf and run file export activities, the exported files will be a netcdf file (swanxbinput.nc) containing Swan golf spectra over time and a netcdf file (1xbinput.nc) containing water level over time. The exported run file will contain properties that can be used by the pre adapter. For example:
- TIDE_VARIABLE: name of netcdf variable containing water level
- PARAM_TUNITS: meaning of the time values in XBeach input and output files. For example "seconds since 2001-01-01"
- PARAM_OUTPUTFORMAT: XBeach parameter specifying the output format. Has to be "netcdf" for FEWS to import
- PARAM_TSTOP: XBeach parameter specifying end of XBeach run: for example "36000" which in this case means after 10 hours
Properties starting with "PARAM_" will be passed literally to XBeach without "PARAM_"
Code Block |
---|
<exportActivities>
<exportNetcdfActivity>
<exportFile>swanxbinput.nc</exportFile>
<timeSeriesSets>
<timeSeriesSet>
<moduleInstanceId>Run_XBeach</moduleInstanceId>
<valueType>scalar</valueType>
<parameterId>EnDens</parameterId>
<domainParameterId>AFREQ</domainParameterId>
<domainParameterId>NDIR</domainParameterId>
<locationId>Dummy</locationId>
<timeSeriesType>external historical</timeSeriesType>
<timeStep unit="hour"/>
<relativeViewPeriod unit="hour" start="-24" end="0"/>
<readWriteMode>add originals</readWriteMode>
<synchLevel>1</synchLevel>
</timeSeriesSet>
</timeSeriesSets>
</exportNetcdfActivity>
<exportNetcdfActivity>
<exportFile>1xbinput.nc</exportFile>
<timeSeriesSets>
<timeSeriesSet>
<moduleInstanceId>Run_XBeach</moduleInstanceId>
<valueType>scalar</valueType>
<parameterId>H_mean</parameterId>
<locationId>Dummy</locationId>
<timeSeriesType>external historical</timeSeriesType>
<timeStep unit="minute" multiplier="10"/>
<relativeViewPeriod unit="hour" start="-24" end="0"/>
<readWriteMode>add originals</readWriteMode>
</timeSeriesSet>
</timeSeriesSets>
</exportNetcdfActivity>
<exportRunFileActivity>
<description>This pi run file is passes as argument to XBeachPreAdapter</description>
<exportFile>pi_run\pi-run.xml</exportFile>
<properties>
<description>Specific configuration required for MyPreAdapter and MyPostAdapter</description>
<string key="TIDE_VARIABLE" value="H_mean"/>
<string key="PARAM_TUNITS" value="seconds since 2001-01-01"/>
<string key="PARAM_OUTPUTFORMAT" value="netcdf"/>
<string key="PARAM_TSTOP" value="36000"/>
</properties>
</exportRunFileActivity>
</exportActivities>
|
Execute activities
The next steps are the execute activities. The first will be the pre adapter. This program will read the pi-run.xml input file and use the properties for instructions on which directory and files should be used to convert to the correct XBeach input format.
Code Block |
---|
<executeActivities>
<executeActivity>
<command>
<className>com.deltares.fews.xbeachadapters.preadapter.XBeachPreAdapter</className>
<binDir>adapter\bin</binDir>
</command>
<arguments>
<argument>pi_run\pi-run.xml</argument>
</arguments>
<timeOut>99999999</timeOut>
</executeActivity>
<executeActivity>
<command>
<executable>runxb.bat</executable>
</command>
<timeOut>99999999</timeOut>
</executeActivity>
</executeActivities>
|
Golf spectrum conversion
In this example "swanxbinput.nc" will be used to write the golf spectra into the following format:
- waves.txt referencing to golf spectrum files and a time of how long these should be used in each calculation step
XBeach Module Adapter - summary
This page describes the XBeach module adapter, its functions, and provides an example for configuring a XBeach run in FEWS.
The pre-adapter creates the model specific output by replacing tags in template files:
- zs0file.txt for water level input file zs0file.txt
- bcfile.txt and bc.timeXXX.sp2 for SWAN spectrum input files
- params.txt for run information
Furthermore, the pre-adapter writes log messages to a log file called xbeach.log.
There is no post-adapter, since XBeach can be configured to use netcdf as output format that is readable by FEWS.
XBeach pre-adapter
Model pre-adapter for running a XBeach model from Delft-FEWS.
Class name: nl.deltares.xbeach.XBeachPreAdapter
Properties
No specific properties need to be configured for a model run.
There is however extra functionality provided via the properties but this is not needed if the model is setup correctly.
Configured properties starting with "PARAM_" will be added or replaced literally without "PARAM_" (and in lower case) in the params.txt file which defines the parameters for an XBeach model run.
This functionality should only be used as a debug option and only by someone that understands the XBeach properties in params.txt. To setup a model make sure you use a correctly configured params.txt so this functionality is not needed.
Notes for users
- For all files that are written by this adapter, if the file to be written already exists, then it will be overwritten.
- This program writes log messages to a log file called xbeach.log.
- This program does not make use of a template file, parameters are automatically added and replaced in params.txt without the use of tags.
- This program uses the information in the specified netcdf run file as input and uses this information to do the following actions:
- Create the water level input file: zs0file.txt, see water level conversion
- Create the SWAN spectrum input files bcfile.txt and bc.timeXXX.sp2, see wave spectrum conversion
- Replace or add the parameters 'tstart' and 'tstop' in params.txt, see parameter conversion
System requirements
- This program needs Java version 1.7 or higher.
- This program needs the following Java libraries:
- castor-0.9.5.jar
- commons-httpclient-3.0.1.jar
- Delft_Util.jar
- fews-xbeach-adapter.jar
- log4j-1.2.14.jar
- netcdf-4.2.jar
- slf4j-api-1.5.6.jar
- slf4j-log4j12-1.5.6.jar
- xercesImpl.jar
Xbeach post-adapter
There is no need for an Xbeach post-adapter since XBeach can be configured to use netcdf as output format that is readable by FEWS.
Example configuration generalAdapterRun
A complete example model run configuration file can be found here: XBeachAdapterRun.xml
Information how to prepare a FEWS environment to be able to use the FEWS model adapter can be found here: XBeach FEWS setup
Start up activities
As a first activity it can be useful to delete all files present in the workDir, if for example it would be filled with files from a previous run.
Code Block |
---|
| xml |
---|
| xml |
---|
title | start up activities |
---|
|
<startUpActivities>
<purgeActivity>
<filter>workDir*</filter>
</purgeActivity>
</startUpActivities>
|
Export activities
The first steps in the general adapter run are the data set, netcdf and run file export activities. The <exportDataSetActivity> will extract a zip file with the module instance id as file name located in "Config\ModuleDataSetFiles\" of the FEWS environment to the workdir. The <exportNetcdfActivity>'s will be a netcdf file (bcfile.nc) containing Swan wave spectra over time and a netcdf file (zs0file.nc) containing water level over time. The <exportNetcdfRunFileActivity> will be a netcdf run file that contains information needed by the pre-adapter. The information will be automatically filled by the general adapter but properties can be configured as extra information. For example properties starting with "PARAM_" will be added or replaced literally without "PARAM_" (and in lower case) in the params.txt file which defines the parameters for an XBeach model run. An example is given in the config below as <string key="PARAM_OUTPUTFORMAT" value="netcdf"/> this adds or replaces parameter 'outputformat' in params.txt and assigns the value 'netcdf'. All parameters should however be already correctly set in params.txt so these property should not be necessary.
Code Block |
---|
| xml |
---|
| xml |
---|
title | export activities |
---|
|
<exportActivities>
<exportDataSetActivity>
<moduleInstanceId>Run_XBeach</moduleInstanceId>
</exportDataSetActivity>
<exportNetcdfActivity>
<exportFile>bcfile.nc</exportFile>
<timeSeriesSets>
<timeSeriesSet>
<moduleInstanceId>Run_XBeach</moduleInstanceId>
<valueType>scalar</valueType>
<parameterId>EnDens</parameterId>
<domainParameterId>AFREQ</domainParameterId>
<domainParameterId>NDIR</domainParameterId>
<locationId>Dummy</locationId>
<timeSeriesType>external historical</timeSeriesType>
<timeStep unit="hour"/>
<relativeViewPeriod unit="hour" start="-24" end="0"/>
<readWriteMode>add originals</readWriteMode>
<synchLevel>1</synchLevel>
</timeSeriesSet>
</timeSeriesSets>
</exportNetcdfActivity>
<exportNetcdfActivity>
<exportFile>zs0file.nc</exportFile>
<timeSeriesSets>
<timeSeriesSet>
<moduleInstanceId>Run_XBeach</moduleInstanceId>
<valueType>scalar</valueType>
<parameterId>H_mean</parameterId>
<locationId>Dummy</locationId>
<timeSeriesType>external historical</timeSeriesType>
<timeStep unit="minute" multiplier="10"/>
<relativeViewPeriod unit="hour" start="-24" end="0"/>
<readWriteMode>add originals</readWriteMode>
</timeSeriesSet>
</timeSeriesSets>
</exportNetcdfActivity>
<exportNetcdfRunFileActivity>
<description>This run file is passed as argument to XBeachPreAdapter</description>
<exportFile>run.nc</exportFile>
<properties>
<string key="PARAM_OUTPUTFORMAT" value="netcdf"/>
</properties>
</exportNetcdfRunFileActivity>
</exportActivities>
|
Execute activities
The next steps are the execute activities.
The first will be the pre-adapter. This program will read the run.nc input file and use the contents for instructions on which directory and files should be used to convert to the correct XBeach input format. The pre-adapter generates a log file called XBeach.log, which can be read into FEWS by coupling line patterns to FEWS log messages.
The second execute activity will be the module run. XBeach generates different log files with different meaning, in the configuration below, all line from XBerror.txt are coupled to error messages in FEWS, all lines from XBwaring.txt are coupled to info messages in FEWS and all lines in XBlog.txt are coupled to debug messages in FEWS.
Code Block |
---|
| xml |
---|
| xml |
---|
title | execute activities |
---|
|
<executeActivities>
<executeActivity>
<command>
<className>nl.deltares.xbeach.XBeachPreAdapter</className>
<binDir>adapter\bin</binDir>
</command>
<arguments>
<argument>run.nc</argument>
</arguments>
<logFile>
<file>XBeach.log</file>
<errorLinePattern>ERROR*</errorLinePattern>
<warningLinePattern>WARN*</warningLinePattern>
<infoLinePattern>INFO*</infoLinePattern>
<debugLinePattern>DEBUG*</debugLinePattern>
</logFile>
<timeOut>99999999</timeOut>
</executeActivity>
<executeActivity>
<command>
<executable>xbeach.exe</executable>
</command>
<logFile>
<file>XBerror.txt</file>
<errorLinePattern>*</errorLinePattern>
</logFile>
<logFile>
<file>XBwarning.txt</file>
<infoLinePattern>*</infoLinePattern>
</logFile>
<logFile>
<file>XBlog.txt</file>
<debugLinePattern>*</debugLinePattern>
</logFile>
<timeOut>99999999</timeOut>
</executeActivity>
</executeActivities>
|
Â
Anchor |
---|
| wavespectrumconversion |
---|
| wavespectrumconversion |
---|
|
Wave spectrum conversion
"bcfile.nc" will be used to write the wave spectra into the following format:
- bcfile.txt referencing to wave spectrum files and a time of how long these should be used in each calculation step
Code Block |
---|
|
FILELIST
|
Code Block |
---|
FILELIST
3600.0 1.0 egx.loct001.sp2
3600.0 1.0 egx.loct002.sp2
3600.0 1.0 egx.loct003.sp2
3600.0 1.0 egx.loct004.sp2
3600.0 1.0 egx.loct005.sp2
3600.0 1.0 egx.loct006.sp2
3600.0 1.0 egx.loct007.sp2
3600.0 1.0 egxbc.loct008time001.sp2
3600.0 1.0 egxbc.loct009time002.sp2
3600.0 1.0 egx.loct010.sp2
|
- egx.loct001.sp2 containing a golf spectrum
Code Block |
---|
SWAN 13600.0 1.0 bc.time003.sp2
3600.0 1.0 bc.time004.sp2
3600.0 1.0 bc.time005.sp2
3600.0 1.0 bc.time006.sp2
3600.0 Swan standard spectral file, version
$1.0 bc.time007.sp2
3600.0 Data exported by FEWS for SWAN
$ 1.0 bc.time008.sp2
3600.0 Project: 1.0 bc.time009.sp2
3600.0 1.0 bc.time010.sp2
|
- bc.time001.sp2 containing a wave spectrum
- The conversion will use either "EnDens" or "VaDens" variable from "bcfile.nc" for the values, using the unitstring specified with the variable
Code Block |
---|
| none |
---|
| none |
---|
title | bc.time001.sp2 |
---|
|
SWAN 1 ; run number:
TIME Swan standard spectral time-dependent data
file, version
$ Data 1 time coding option
LONLAT exported by FEWS for SWAN
$ Project: ; run number:
TIME locations in spherical coordinates
1 time-dependent data
1 number of locations
4.6019540 52.6194688
AFREQ time coding option
LONLAT 1/s
25 locations in spherical coordinates
1 number of frequencies
0.0500
0.0566
0.0642
...
number of 0.7791locations
04.8827
6019540 152.00006194688
NDIRAFREQ degrees1/s
3625 number of directionsfrequencies
265 0.00000500
255 0.00000566
245 0.00000642
...
-65 0.00007791
-75.0000 0.8827
-85 1.0000
QUANT
NDIR 1 degrees
number 36 of quantities in table
EnDens number of directions
265.0000
id255.0000
m 245.0000
...
-65.0000
-75.0000
-85.0000
QUANT
1 unit
-0.9900E+02 number of quantities in table
VaDens exception value
20010101.000000 id
m2/Hz/degrees date and time
FACTOR
0.0011500214
0 0 unit
-0.9900E+02 0 0 0 0 exception value
20010101.000000 0 0 0 ... 0 date 0and time
FACTOR
0.0011500214
0 0 0 0 0 0 0 0 0 0 ... 0 0 0
0 0 0 0 0 0 0 0 0 0 ... 0 0 0
10 10 0 0 0 0 0 0 0 0 ... 0 0 10
40 1 271 90 30 30 30 20 0 0 0 ... 2 9 28
610 0 294 0 70 171
2440 3127 17 9 0 3 0 3 0 3 ... 2 67 0 303 626
0 4916 1621 0 268 57... 119 2 193 145 9 23 28
610 0 294 1 70 ...17 1780 529524 7229
13782 31 3341 41517 94 0 287 6590 803 0 340 ... 0 67 6 303 626
... 144334916 28039 27099
1621 14186 2446268 257 57 68119 290193 982145 1874 140723 50 31 ... 523811780 5295 62127 395777229
1036913782 3341 1638415 231 94 37287 659 90 803 431 1241340 1598 2270 06 ... 9999914433 8035328039 3708927099
14186 8225 2446 1923 257 361 54 68 17 290 70982 1874 324 1407 770 4485 03 ... 7730552381 5422362127 2453539577
674210369 19621638 381231 8837 2190 431 61241 1598 30 227 143 211 0 ... 4281499999 2810080353 1544237089
57448225 24801923 622361 147 54 34 17 570 324 1 770 8448 30 0 ... 27283 16631 9808
4448 2618 1011 228 41 77305 54223 24535
6742 1962 381 88 621 06 30 0 143 2211 20 ... 1510342814 28100 9139 600115442
28535744 21502480 977622 217147 34 5 1 08 030 0 ... 27283 868216631 5250 35079808
18184448 15882618 1011 752 228 160 41 20 46 10 0 02 02 ... 15103 4838 9139 2895 21166001
10642853 2150 927 977 597 217 168 2334 35 01 0 0 0 ... 23748682 13835250 11513507
1818 517 1588 534 752 423 160 142 20 23 4 2 01 0 0 0 ... 11824838 2895 789 5612116
1064 243 927 299 597 202 168 87 23 17 3 1 0 0 0 0 ... 2374 756 1383 329 2621151
137517 112534 423 87 142 51 1223 12 0 0 0 0 ... 2431182 789 98 120561
243 86 299 40 202 34 87 18 517 1 0 0 0 0 ... 137756 117329 142262
137 55 112 21 87 8 51 412 2 1 0 0 0 0 0 ... 137243 123 98 87120
2486 1340 34 3 18 1 5 0 1 0 0 0 0 0 ... 137 83 117 74 62
142
6 55 721 18 04 02 0 0 0 0 0 ... 137 58 123 27 1687
624 13 3 03 01 0 0 0 0 0 0 ... 39 20 10
|
Water level conversion
In this example "1xbinput.nc" will be used to write the time dependent water levels to a file named "tide.txt". The first column specifies the time (meaning defined in "PARAM_TUNITS") and the second column water level. For now the adapter only supports the water level as a single boundary condition but XBeach has to possibility to also use 2 or 4 resulting in 1 or 3 extra columns.
Code Block |
---|
0.0000000e+000 -2.2000000e-002
6.0000000e+002 2.2000000e-002
1.2000000e+003 6.4999998e-002
1.8000000e+003 1.0800000e-001
2.4000000e+003 1.5200000e-001
3.0000000e+003 1.9400001e-001
3.6000000e+003 2.3700000e-001
4.2000000e+003 2.7900001e-001
4.8000000e+003 3.1999999e-001
5.4000000e+003 3.6100000e-001
6.0000000e+003 4.0099999e-001
6.6000000e+003 4.4100001e-001
7.2000000e+003 4.7900000e-001
7.8000000e+003 5.1700002e-001
8.4000000e+003 5.5400002e-001
9.0000000e+003 5.8999997e-001
9.6000000e+003 6.2400001e-001
1.0200000e+004 6.5700001e-001
1.0800000e+004 6.9000000e-001
1.1400000e+004 7.2000003e-001
1.2000000e+004 7.5000000e-001
1.2600000e+004 7.7800000e-001
1.3200000e+004 8.0500001e-001
1.3800000e+004 8.2999998e-001
1.4400000e+004 8.5299999e-001
1.5000000e+004 8.7500000e-001
1.5600000e+004 8.9499998e-001
1.6200000e+004 9.1399997e-001
1.6800000e+004 9.3000001e-001
1.7400000e+004 9.4599998e-001
1.8000000e+004 9.5899999e-001
|
Parameter conversion
The pre adapter will also convert all run file string properties starting with "PARAM_" to XBeach parameters in "params.txt".
It reads an existing "params.txt" and searches for a line starting with the specified parameter and replaces the whole line with "parameter = value" or adds a new line in the same format when the parameter was not present yet.
... 83 74 62
6 7 1 0 0 0 0 0 0 0 ... 58 27 16
6 3 0 0 0 0 0 0 0 0 ... 39 20 10
|
Anchor |
---|
| waterlevelconversion |
---|
| waterlevelconversion |
---|
|
Water level conversion
In this example "zs0file.nc" will be used to write the time dependent water levels to a file named "zs0file.txt". The first column specifies the time (meaning defined in "PARAM_TUNITS") and the second column water level. For now the adapter only supports the water level as a single boundary condition but XBeach has to possibility to also use 2 or 4 resulting in 1 or 3 extra columns.
Code Block |
---|
|
0.0000000e+000 -2.2000000e-002
6.0000000e+002 2.2000000e-002
1.2000000e+003 6.4999998e-002
1.8000000e+003 1.0800000e-001
2.4000000e+003 1.5200000e-001
3.0000000e+003 1.9400001e-001
3.6000000e+003 2.3700000e-001
4.2000000e+003 2.7900001e-001
4.8000000e+003 3.1999999e-001
5.4000000e+003 3.6100000e-001
6.0000000e+003 4.0099999e-001
6.6000000e+003 4.4100001e-001
7.2000000e+003 4.7900000e-001
7.8000000e+003 5.1700002e-001
8.4000000e+003 5.5400002e-001
9.0000000e+003 5.8999997e-001
9.6000000e+003 6.2400001e-001
1.0200000e+004 6.5700001e-001
1.0800000e+004 6.9000000e-001
1.1400000e+004 7.2000003e-001
1.2000000e+004 7.5000000e-001
1.2600000e+004 7.7800000e-001
1.3200000e+004 8.0500001e-001
1.3800000e+004 8.2999998e-001
1.4400000e+004 8.5299999e-001
1.5000000e+004 8.7500000e-001
1.5600000e+004 8.9499998e-001
1.6200000e+004 9.1399997e-001
1.6800000e+004 9.3000001e-001
1.7400000e+004 9.4599998e-001
1.8000000e+004 9.5899999e-001
|
Anchor |
---|
| parameterconversion |
---|
| parameterconversion |
---|
|
Parameter conversion
It is possible to change model parameters as defined in params.txt from FEWS. The pre-adapter will convert all run file properties starting with "PARAM_" to XBeach parameters in "params.txt". Example: params.txt.
It reads the existing "params.txt" and searches for a line starting with the specified parameter and replaces the whole line with "parameter = value" or adds a new line in the same format when the parameter was not present yet.
Code Block |
---|
| none |
---|
| none |
---|
title | sample of params.txt |
---|
|
----- |
Code Block |
---|
----------------------------------------------------
Grid input
nx = 154
ny = 70
xfile = x.grd
yfile = y.grd
xori = 101627.84
yori = 513562.63
alfa = -8
depfile = egmondxbeach.dep
posdwn = -1
thetanaut = 0
thetamin = -40
thetamax = 40
dtheta = 10
vardx = 1
----------------------------------------------------
Numerics input
CFL
Grid input
nx = 154
ny = 70
xfile = x.grd
yfile = y.grd
xori = 0101627.884
epsyori = 513562.63
depfile = 0egmondxbeach.01dep
----------------------------------------------------
TimeNumerics input
tstart = 0.
tstop = 36000
taper = 100
tintg = 3600
tintmCFL = 3600
tintp0.8
eps = 600.01
----------------------------------------------------
GeneralTime constants
rho input
tstart = 1025
g = 9.810.
tstop = 36000
----------------------------------------------------
BoundaryGeneral condition options
zs0file = tide.txt
tideloc = 1
zs0 = 0
paulrevere = 0
instat = 5
leftwave = 1
rightwave = 1constants
rho = 1025
g = 9.81
----------------------------------------------------
Wave calculation options
break = 1
roller = 1
beta = 0.1
refl = 0
gamma = 0.45
delta = 0.0
n = 10.
bcfile
Boundary condition options
zs0file = waveszs0file.txt
front tideloc = 0
snel = 1
oldwbc= 1
----------------------------------------------------
Wave calculation options
bcfile = 0bcfile.txt
----------------------------------------------------
Flow calculation options
nuh = 0.1
nuhfac = 1.0
C = 55.
umin = 0.01
----------------------------------------------------
Sediment transport calculation options
facua = 0.10
D50 = 0.0002
D90 = 0.0003
ngd = 1
nd --
Sediment transport calculation options
facua = 300.10
structD50 = 0
sedtrans = 1
sourcesink = 0.0002
----------------------------------------------------
Morphological calculation options
morfac = 10
morstart = 3600
wetslp = 0.15
morphology = 1
----------------------------------------------------
Output options
outputformat = netcdf
nglobalvar = 3
zs
zb
wetz
nmeanvar = 6
H
thetamean
uu
vv
DR
zs
tunits = seconds since 2001-01-01
|
Executing model run
The next activity will be executing the XBeach model run. So far this This is done by a .bat file to be able to run the running xbeach.exe in a other directory the workdir containing the input files. It would be preferable to change this in such a way that the .bat file will not be needed.model files.
Code Block |
---|
| xml |
---|
| xml |
---|
title | module run execute activity |
---|
|
Code Block |
---|
<executeActivity>
<command>
<executable>runxb<executable>xbeach.bat<exe</executable>
</command>
<timeOut>99999999</timeOut>
</executeActivity>
|
...
Import activities
The last part of the general adapter run is importing the XBeach output. In the case xboutput.nc contains all parameter, output and grid information of the run. This can be visualized in FEWS after defining the needed parameters, location and grid. How to do this can be found here: XBeach FEWS setup
Code Block |
---|
| xml |
---|
| xml |
---|
title | model run output import activity |
---|
|
<importActivities>
<importPiNetcdfActivity>
<importFile>xboutput.nc</importFile>
<timeSeriesSets>
<timeSeriesSet>
<moduleInstanceId>Run_XBeach</moduleInstanceId>
<valueType>grid</valueType>
<parameterId>H_max</parameterId>
<locationId>Dummy</locationId>
<timeSeriesType>external historical</timeSeriesType>
<timeStep unit="hour"/>
<readWriteMode>add originals</readWriteMode>
</timeSeriesSet>
</timeSeriesSets>
</importPiNetcdfActivity>
</importActivities>
|