diff --git a/schemas.xml b/schemas.xml index 982979001..465b9b398 100644 --- a/schemas.xml +++ b/schemas.xml @@ -1,10 +1,10 @@ - - - - - - - + + + + + + + diff --git a/src/relaxng/cmfd.rnc b/src/relaxng/cmfd.rnc new file mode 100644 index 000000000..cbcb7709a --- /dev/null +++ b/src/relaxng/cmfd.rnc @@ -0,0 +1,58 @@ +element cmfd { + element mesh { + (element dimension { list { xsd:int+ } } | + attribute dimension { list { xsd:int+ } }) & + (element lower_left { list { xsd:double+ } } | + attribute lower_left { list { xsd:double+ } }) & + ( + (element upper_right { list { xsd:double+ } } | + attribute upper_right { list { xsd:double+ } }) | + (element width { list { xsd:double+ } } | + attribute width { list { xsd:double+ } }) + ) & + (element albedo { list { xsd:double+ } } | + attribute albedo { list { xsd:double+ } }) & + (element map { list { xsd:int+ } } | + attribute map { list { xsd:int+ } })? & + (element energy { list { xsd:double+ } } | + attribute energy { list { xsd:double+ } })? + } & + + element norm { xsd:double }? & + + element feedback { xsd:boolean }? & + + element n_cmfd_procs { xsd:int }? & + + element reset { xsd:boolean }? & + + element balance { xsd:boolean }? & + + element downscatter { xsd:boolean }? & + + element run_2grp { xsd:boolean }? & + + element solver { xsd:string }? & + + element snes_monitor { xsd:boolean }? & + + element ksp_monitor { xsd:boolean }? & + + element power_monitor { xsd:boolean }? & + + element write_balance { xsd:boolean }? & + + element write_matrices { xsd:boolean }? & + + element run_adjoint { xsd:boolean }? & + + element write_hdf5 { xsd:boolean }? & + + element begin { xsd:int }? & + + element inactive { xsd:boolean }? & + + element active_flush { xsd:int }? & + + element keff_tol { xsd:double }? +} diff --git a/src/relaxng/cross_sections.rnc b/src/relaxng/cross_sections.rnc new file mode 100644 index 000000000..e82bb986f --- /dev/null +++ b/src/relaxng/cross_sections.rnc @@ -0,0 +1,23 @@ +element cross_sections { + element ace_table { + (element name { xsd:string { maxLength = "15" } } | + attribute name { xsd:string { maxLength = "15" } }) & + (element alias { xsd:string { maxLength = "15" } } | + attribute alias { xsd:string { maxLength = "15" } })? & + (element zaid { xsd:int } | attribute zaid { xsd:int }) & + (element metastable { xsd:int } | attribute metastable { xsd:int })? & + (element awr { xsd:double } | attribute awr { xsd:double }) & + (element temperature { xsd:double } | attribute temperature { xsd:double }) & + (element path { xsd:string { maxLength = "255" } } | + attribute path { xsd:string { maxLength = "255" } }) & + (element location { xsd:int } | attribute location { xsd:int })? + }* & + + element directory { xsd:string { maxLength = "255" } }? & + + element filetype { ( "ascii" | "binary" ) } & + + element record_length { xsd:int }? & + + element entries { xsd:int }? +} \ No newline at end of file diff --git a/src/relaxng/geometry.rnc b/src/relaxng/geometry.rnc new file mode 100644 index 000000000..b7975d05f --- /dev/null +++ b/src/relaxng/geometry.rnc @@ -0,0 +1,35 @@ +element geometry { + element cell { + (element id { xsd:int } | attribute id { xsd:int }) & + (element universe { xsd:int } | attribute universe { xsd:int })? & + ( + (element fill { xsd:int } | attribute fill { xsd:int }) | + (element material { ( xsd:int | "void" ) } | + attribute material { ( xsd:int | "void" ) }) + ) & + (element surfaces { list { xsd:int+ } } | attribute surfaces { list { xsd:int+ } }) & + (element rotation { list { xsd:double+ } } | attribute rotation { list { xsd:double+ } })? & + (element translation { list { xsd:double+ } } | attribute translation { list { xsd:double+ } })? + }* + + & element surface { + (element id { xsd:int } | attribute id { xsd:int }) & + (element type { xsd:string { maxLength = "15" } } | + attribute type { xsd:string { maxLength = "15" } }) & + (element coeffs { list { xsd:double+ } } | attribute coeffs { list { xsd:double+ } }) & + (element boundary { ( "transmit" | "reflective" | "vacuum" ) } | + attribute boundary { ( "transmit" | "reflective" | "vacuum" ) })? + }* + + & element lattice { + (element id { xsd:int } | attribute id { xsd:int }) & + (element type { ( "rectangular" | "hexagonal" ) } | + attribute type { ( "rectangular" | "hexagonal" ) })? & + (element dimension { list { xsd:positiveInteger+ } } | + attribute dimension { list { xsd:positiveInteger+ } }) & + (element lower_left { list { xsd:double+ } } | attribute lower_left { list { xsd:double+ } }) & + (element width { list { xsd:double+ } } | attribute width { list { xsd:double+ } }) & + (element universes { list { xsd:int+ } } | attribute universes { list { xsd:int+ } }) & + (element outside { xsd:int } | attribute outside { xsd:int })? + }* +} diff --git a/src/relaxng/materials.rnc b/src/relaxng/materials.rnc new file mode 100644 index 000000000..d497fa745 --- /dev/null +++ b/src/relaxng/materials.rnc @@ -0,0 +1,42 @@ +element materials { + element material { + (element id { xsd:int } | attribute id { xsd:int }) & + + element density { + (element value { xsd:double } | attribute value { xsd:double })? & + (element units { xsd:string { maxLength = "10" } } | + attribute units { xsd:string { maxLength = "10" } }) + } & + + element nuclide { + (element name { xsd:string { maxLength = "7" } } | + attribute name { xsd:string { maxLength = "7" } }) & + (element xs { xsd:string { maxLength = "3" } } | + attribute xs { xsd:string { maxLength = "3" } })? & + ( + (element ao { xsd:double } | attribute ao { xsd:double }) | + (element wo { xsd:double } | attribute wo { xsd:double }) + ) + }* & + + element element { + (element name { xsd:string { maxLength = "2" } } | + attribute name { xsd:string { maxLength = "2" } }) & + (element xs { xsd:string { maxLength = "3" } } | + attribute xs { xsd:string { maxLength = "3" } })? & + ( + (element ao { xsd:double } | attribute ao { xsd:double }) | + (element wo { xsd:double } | attribute wo { xsd:double }) + ) + }* & + + element sab { + (element name { xsd:string { maxLength = "7" } } | + attribute name { xsd:string { maxLength = "7" } }) & + (element xs { xsd:string { maxLength = "3" } } | + attribute xs { xsd:string { maxLength = "3" } })? + }* + }+ & + + element default_xs { xsd:string { maxLength = "3" } }? +} diff --git a/src/relaxng/plots.rnc b/src/relaxng/plots.rnc new file mode 100644 index 000000000..3c29ba4e0 --- /dev/null +++ b/src/relaxng/plots.rnc @@ -0,0 +1,31 @@ +element plots { + element plot { + (element id { xsd:int } | attribute id { xsd:int })? & + (element filename { xsd:string { maxLength = "50" } } | + attribute filename { xsd:string { maxLength = "50" } })? & + (element type { "slice" } | attribute type { "slice" })? & + (element color { ( "cell" | "mat" | "material" ) } | + attribute color { ( "cell" | "mat" | "material" ) })? & + (element origin { list { xsd:double+ } } | + attribute origin { list { xsd:double+ } })? & + (element width { list { xsd:double+ } } | + attribute width { list { xsd:double+ } })? & + (element basis { ( "xy" | "yz" | "xz" ) } | + attribute basis { ( "xy" | "yz" | "xz" ) })? & + (element pixels { list { xsd:int+ } } | + attribute pixels { list { xsd:int+ } })? & + (element background { list { xsd:int+ } } | + attribute background { list { xsd:int+ } })? & + element col_spec { + (element id { xsd:int } | attribute id { xsd:int }) & + (element rgb { list { xsd:int+ } } | + attribute rgb { list { xsd:int+ } }) + }* & + element mask { + (element components { list { xsd:int+ } } | + attribute components { list { xsd:int+ } }) & + (element background { list { xsd:int+ } } | + attribute background { list { xsd:int+ } }) + }* + }* +} diff --git a/src/relaxng/settings.rnc b/src/relaxng/settings.rnc new file mode 100644 index 000000000..fd39c5cb5 --- /dev/null +++ b/src/relaxng/settings.rnc @@ -0,0 +1,116 @@ +element settings { + element confidence_intervals { xsd:boolean }? & + + ( + element eigenvalue { + (element batches { xsd:positiveInteger } | + attribute batches { xsd:positiveInteger }) & + (element inactive { xsd:nonNegativeInteger } | + attribute inactive { xsd:nonNegativeInteger }) & + (element particles { xsd:positiveInteger } | + attribute particles { xsd:positiveInteger }) & + (element generations_per_batch { xsd:positiveInteger } | + attribute generations_per_batch { xsd:positiveInteger })? + } | + element fixed_source { + (element batches { xsd:positiveInteger } | + attribute batches { xsd:positiveInteger }) & + (element particles { xsd:positiveInteger } | + attribute particles { xsd:positiveInteger }) + } + ) & + + element cross_sections { xsd:string { maxLength = "255" } }? & + + element cutoff { + (element weight { xsd:double } | attribute weight { xsd:double })? & + (element weight_avg { xsd:double } | attribute weight_avg { xsd:double })? + }? & + + element energy_grid { ( "nuclide" | "union" | "lethargy" ) }? & + + element entropy { + (element dimension { list { xsd:int+ } } | + attribute dimension { list { xsd:int+ } })? & + (element lower_left { list { xsd:double+ } } | + attribute lower_left { list { xsd:double+ } }) & + (element upper_right { list { xsd:double+ } } | + attribute upper_right { list { xsd:double+ } }) + }? & + + element no_reduce { xsd:boolean }? & + + element output { + (element summary { xsd:boolean } | attribute summary { xsd:boolean })? & + (element cross_sections { xsd:boolean } | + attribute cross_sections { xsd:boolean })? & + (element tallies { xsd:boolean } | attribute tallies { xsd:boolean })? + }? & + + element output_path { xsd:string { maxLength = "255" } }? & + + element ptables { xsd:boolean }? & + + element run_cmfd { xsd:boolean }? & + + element seed { xsd:positiveInteger }? & + + element source { + element file { xsd:string { maxLength = "255" } }? & + element space { + (element type { xsd:string { maxLength = "16" } } | + attribute type { xsd:string { maxLength = "16" } }) & + (element length { xsd:int } | attribute length { xsd:int })? & + (element interpolation { xsd:string { maxLength = "10" } } | + attribute interplation { xsd:string { maxLength = "10" } })? & + (element parameters { list { xsd:double+ } } | + attribute parameters { list { xsd:double+ } })? + }? & + element angle { + (element type { xsd:string { maxLength = "16" } } | + attribute type { xsd:string { maxLength = "16" } }) & + (element length { xsd:int } | attribute length { xsd:int })? & + (element interpolation { xsd:string { maxLength = "10" } } | + attribute interplation { xsd:string { maxLength = "10" } })? & + (element parameters { list { xsd:double+ } } | + attribute parameters { list { xsd:double+ } })? + }? & + element energy { + (element type { xsd:string { maxLength = "16" } } | + attribute type { xsd:string { maxLength = "16" } }) & + (element length { xsd:int } | attribute length { xsd:int })? & + (element interpolation { xsd:string { maxLength = "10" } } | + attribute interplation { xsd:string { maxLength = "10" } })? & + (element parameters { list { xsd:double+ } } | + attribute parameters { list { xsd:double+ } })? + }? + }? & + + element state_point { + ( + (element batches { list { xsd:positiveInteger+ } } | + attribute batches { list { xsd:positiveInteger+ } }) | + (element interval { xsd:positiveInteger } | + attribute interval { xsd:positiveInteger }) + ) & + (element source_separate { xsd:boolean } | + attribute source_separate { xsd:boolean })? & + (element source_write { xsd:boolean } | + attribute source_write { xsd:boolean })? + }? & + + element survival_biasing { xsd:boolean }? & + + element trace { list { xsd:positiveInteger+ } }? & + + element verbosity { xsd:positiveInteger }? & + + element uniform_fs{ + (element dimension { list { xsd:positiveInteger+ } } | + attribute dimension { list { xsd:positiveInteger+ } }) & + (element lower_left { list { xsd:double+ } } | + attribute lower_left { list { xsd:double+ } }) & + (element upper_right { list { xsd:double+ } } | + attribute upper_right { list { xsd:double+ } }) + }? +} diff --git a/src/relaxng/tallies.rnc b/src/relaxng/tallies.rnc new file mode 100644 index 000000000..06959276b --- /dev/null +++ b/src/relaxng/tallies.rnc @@ -0,0 +1,43 @@ +element tallies { + element mesh { + (element id { xsd:int } | attribute id { xsd:int }) & + (element type { ( "rectangular" | "hexagonal" ) } | + attribute type { ( "rectangular" | "hexagonal" ) }) & + (element dimension { list { xsd:positiveInteger+ } } | + attribute dimension { list { xsd:positiveInteger+ } }) & + (element lower_left { list { xsd:double+ } } | + attribute lower_left { list { xsd:double+ } }) & + ( + (element upper_right { list { xsd:double+ } } | + attribute upper_right { list { xsd:double+ } }) | + (element width { list { xsd:double+ } } | + attribute width { list { xsd:double+ } }) + ) + }* & + + element tally { + (element id { xsd:int } | attribute id { xsd:int }) & + (element label { xsd:string { maxLength="52" } } | + attribute label { xsd:string { maxLength="52" } })? & + (element estimator { ( "analog" | "tracklength" ) } | + attribute estimator { ( "analog" | "tracklength" ) })? & + element filter { + (element type { ( "cell" | "cellborn" | "material" | "universe" | + "surface" | "mesh" | "energy" | "energyout" ) } | + attribute type { ( "cell" | "cellborn" | "material" | "universe" | + "surface" | "mesh" | "energy" | "energyout" ) }) & + (element bins { list { xsd:string { maxLength = "20" }+ } } | + attribute bins { list { xsd:string { maxLength = "20" }+ } }) & + (element groups { xsd:string { maxLength = "20" }+ } | + attribute groups { xsd:string { maxLength = "20" }+ })? + }* & + element nuclides { + list { xsd:string { maxLength = "12" }+ } + }? & + element scores { + list { xsd:string { maxLength = "20" }+ } + } + }* & + + element assume_separate { xsd:boolean }? +}