FourCIPP 1.25.0__py3-none-any.whl → 1.27.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  metadata:
2
- commit_hash: 37fa31a1e6bd9674c05cf4a8e56854212c075a1e
2
+ commit_hash: 94e6a4c70b221f84b9211d6b06a3da3f08248d2a
3
3
  version: 2025.4.0-dev
4
4
  description_section_name: TITLE
5
5
  legacy_element_specs:
@@ -40971,6 +40971,98 @@ sections:
40971
40971
  - name: COUPLING_ID
40972
40972
  type: int
40973
40973
  required: true
40974
+ - name: BEAM INTERACTION/BEAM TO SOLID EDGE CONTACT
40975
+ type: group
40976
+ description: Parameters for beam-to-solid edge contact.
40977
+ required: false
40978
+ specs:
40979
+ - type: all_of
40980
+ specs:
40981
+ - name: CONSTRAINT_ENFORCEMENT
40982
+ type: enum
40983
+ description: "How the beam-to-edge constraints should be enforced."
40984
+ required: false
40985
+ default: none
40986
+ choices:
40987
+ - name: none
40988
+ - name: penalty
40989
+ - name: lagrange
40990
+ - name: PENALTY_LAW
40991
+ type: group
40992
+ description: Parameters for penalty law
40993
+ required: true
40994
+ specs:
40995
+ - type: all_of
40996
+ specs:
40997
+ - name: TYPE
40998
+ type: enum
40999
+ description: "Type of penalty law"
41000
+ required: false
41001
+ default: none
41002
+ choices:
41003
+ - name: none
41004
+ - name: linear
41005
+ - name: linear_quadratic
41006
+ - name: PENALTY_PARAMETER
41007
+ type: double
41008
+ description: "Penalty parameter for beam-to-solid surface contact"
41009
+ required: false
41010
+ default: 0
41011
+ validator:
41012
+ range:
41013
+ minimum: 0
41014
+ maximum: 1.7976931348623157e+308
41015
+ minimum_exclusive: false
41016
+ maximum_exclusive: false
41017
+ - name: PENALTY_PARAMETER_G0
41018
+ type: double
41019
+ description: "First penalty regularization parameter G0 >=0: For gap<G0 contact is active"
41020
+ required: false
41021
+ default: 0
41022
+ - name: BEAM INTERACTION/BEAM TO SOLID EDGE CONTACT BEAM
41023
+ type: list
41024
+ required: false
41025
+ spec:
41026
+ type: all_of
41027
+ specs:
41028
+ - name: E
41029
+ type: int
41030
+ description: "ID of the condition. This ID refers to the respective topological entity of the condition."
41031
+ required: true
41032
+ - name: ENTITY_TYPE
41033
+ type: enum
41034
+ description: "The type of entity that E refers to."
41035
+ required: false
41036
+ default: legacy_id
41037
+ choices:
41038
+ - name: legacy_id
41039
+ - name: node_set_id
41040
+ - name: element_block_id
41041
+ - name: COUPLING_ID
41042
+ type: int
41043
+ required: true
41044
+ - name: BEAM INTERACTION/BEAM TO SOLID EDGE CONTACT SOLID EDGE
41045
+ type: list
41046
+ required: false
41047
+ spec:
41048
+ type: all_of
41049
+ specs:
41050
+ - name: E
41051
+ type: int
41052
+ description: "ID of the condition. This ID refers to the respective topological entity of the condition."
41053
+ required: true
41054
+ - name: ENTITY_TYPE
41055
+ type: enum
41056
+ description: "The type of entity that E refers to."
41057
+ required: false
41058
+ default: legacy_id
41059
+ choices:
41060
+ - name: legacy_id
41061
+ - name: node_set_id
41062
+ - name: element_block_id
41063
+ - name: COUPLING_ID
41064
+ type: int
41065
+ required: true
40974
41066
  - name: BEAM INTERACTION/BEAM TO SOLID SURFACE CONTACT
40975
41067
  type: group
40976
41068
  required: false
@@ -1,5 +1,5 @@
1
1
  {
2
- "description": "Schema for 4C\nCommit hash: 37fa31a1e6bd9674c05cf4a8e56854212c075a1e\nVersion: 2025.4.0-dev",
2
+ "description": "Schema for 4C\nCommit hash: 94e6a4c70b221f84b9211d6b06a3da3f08248d2a\nVersion: 2025.4.0-dev",
3
3
  "type": "object",
4
4
  "properties": {
5
5
  "ALE DOMAIN": {
@@ -69053,6 +69053,133 @@
69053
69053
  ]
69054
69054
  }
69055
69055
  },
69056
+ "BEAM INTERACTION/BEAM TO SOLID EDGE CONTACT": {
69057
+ "title": "BEAM INTERACTION/BEAM TO SOLID EDGE CONTACT (group)",
69058
+ "description": "Parameters for beam-to-solid edge contact.",
69059
+ "type": "object",
69060
+ "properties": {
69061
+ "CONSTRAINT_ENFORCEMENT": {
69062
+ "title": "CONSTRAINT_ENFORCEMENT (enum)",
69063
+ "description": "How the beam-to-edge constraints should be enforced.",
69064
+ "default": "none",
69065
+ "type": "string",
69066
+ "enum": [
69067
+ "none",
69068
+ "penalty",
69069
+ "lagrange"
69070
+ ]
69071
+ },
69072
+ "PENALTY_LAW": {
69073
+ "title": "PENALTY_LAW (group)",
69074
+ "description": "Parameters for penalty law",
69075
+ "type": "object",
69076
+ "properties": {
69077
+ "TYPE": {
69078
+ "title": "TYPE (enum)",
69079
+ "description": "Type of penalty law",
69080
+ "default": "none",
69081
+ "type": "string",
69082
+ "enum": [
69083
+ "none",
69084
+ "linear",
69085
+ "linear_quadratic"
69086
+ ]
69087
+ },
69088
+ "PENALTY_PARAMETER": {
69089
+ "title": "PENALTY_PARAMETER (double)",
69090
+ "description": "Penalty parameter for beam-to-solid surface contact",
69091
+ "default": 0,
69092
+ "type": "number",
69093
+ "minimum": 0,
69094
+ "maximum": 1.7976931348623157e+308
69095
+ },
69096
+ "PENALTY_PARAMETER_G0": {
69097
+ "title": "PENALTY_PARAMETER_G0 (double)",
69098
+ "description": "First penalty regularization parameter G0 >=0: For gap<G0 contact is active",
69099
+ "default": 0,
69100
+ "type": "number"
69101
+ }
69102
+ },
69103
+ "additionalProperties": false
69104
+ }
69105
+ },
69106
+ "additionalProperties": false,
69107
+ "required": [
69108
+ "PENALTY_LAW"
69109
+ ]
69110
+ },
69111
+ "BEAM INTERACTION/BEAM TO SOLID EDGE CONTACT BEAM": {
69112
+ "title": "BEAM INTERACTION/BEAM TO SOLID EDGE CONTACT BEAM (list)",
69113
+ "description": "No description yet.",
69114
+ "type": "array",
69115
+ "items": {
69116
+ "type": "object",
69117
+ "properties": {
69118
+ "E": {
69119
+ "title": "E (int)",
69120
+ "description": "ID of the condition. This ID refers to the respective topological entity of the condition.",
69121
+ "type": "integer"
69122
+ },
69123
+ "ENTITY_TYPE": {
69124
+ "title": "ENTITY_TYPE (enum)",
69125
+ "description": "The type of entity that E refers to.",
69126
+ "default": "legacy_id",
69127
+ "type": "string",
69128
+ "enum": [
69129
+ "legacy_id",
69130
+ "node_set_id",
69131
+ "element_block_id"
69132
+ ]
69133
+ },
69134
+ "COUPLING_ID": {
69135
+ "title": "COUPLING_ID (int)",
69136
+ "description": "No description yet.",
69137
+ "type": "integer"
69138
+ }
69139
+ },
69140
+ "additionalProperties": false,
69141
+ "required": [
69142
+ "E",
69143
+ "COUPLING_ID"
69144
+ ]
69145
+ }
69146
+ },
69147
+ "BEAM INTERACTION/BEAM TO SOLID EDGE CONTACT SOLID EDGE": {
69148
+ "title": "BEAM INTERACTION/BEAM TO SOLID EDGE CONTACT SOLID EDGE (list)",
69149
+ "description": "No description yet.",
69150
+ "type": "array",
69151
+ "items": {
69152
+ "type": "object",
69153
+ "properties": {
69154
+ "E": {
69155
+ "title": "E (int)",
69156
+ "description": "ID of the condition. This ID refers to the respective topological entity of the condition.",
69157
+ "type": "integer"
69158
+ },
69159
+ "ENTITY_TYPE": {
69160
+ "title": "ENTITY_TYPE (enum)",
69161
+ "description": "The type of entity that E refers to.",
69162
+ "default": "legacy_id",
69163
+ "type": "string",
69164
+ "enum": [
69165
+ "legacy_id",
69166
+ "node_set_id",
69167
+ "element_block_id"
69168
+ ]
69169
+ },
69170
+ "COUPLING_ID": {
69171
+ "title": "COUPLING_ID (int)",
69172
+ "description": "No description yet.",
69173
+ "type": "integer"
69174
+ }
69175
+ },
69176
+ "additionalProperties": false,
69177
+ "required": [
69178
+ "E",
69179
+ "COUPLING_ID"
69180
+ ]
69181
+ }
69182
+ },
69056
69183
  "BEAM INTERACTION/BEAM TO SOLID SURFACE CONTACT": {
69057
69184
  "title": "BEAM INTERACTION/BEAM TO SOLID SURFACE CONTACT (group)",
69058
69185
  "description": "No description yet.",
@@ -401143,5 +401270,5 @@
401143
401270
  "PROBLEM TYPE"
401144
401271
  ],
401145
401272
  "$schema": "https://json-schema.org/draft/2020-12/schema",
401146
- "$id": "37fa31a1e6bd9674c05cf4a8e56854212c075a1e"
401273
+ "$id": "94e6a4c70b221f84b9211d6b06a3da3f08248d2a"
401147
401274
  }
fourcipp/fourc_input.py CHANGED
@@ -75,8 +75,12 @@ def sort_by_section_names(data: dict) -> dict:
75
75
  This sorts the dictionary in the following style:
76
76
 
77
77
  1. "TITLE" section
78
- 2. Alphabetically sorted sections
79
- 3. Alphabetically sorted legacy sections
78
+ 2. Required sections (in schema order)
79
+ 3. Typed sections (alphabetically, case-insensitive)
80
+ 3.1 MATERIALS section
81
+ 3.2 'DESIGN *' sections (alphabetically, case-insensitive)
82
+ 4. FUNCT sections (numeric order)
83
+ 5. Legacy sections (alphabetically)
80
84
 
81
85
  Args:
82
86
  data: Dictionary to sort.
@@ -89,10 +93,23 @@ def sort_by_section_names(data: dict) -> dict:
89
93
  required_sections = CONFIG.fourc_json_schema["required"]
90
94
  n_sections_splitter = len(CONFIG.sections.all_sections) * 1000
91
95
 
92
- # collect typed sections + numeric FUNCT sections
93
- typed_and_funct = sorted(
94
- sorted(CONFIG.sections.typed_sections, key=str.lower)
95
- + [s for s in data.keys() if s.startswith("FUNCT") and s[5:].isdigit()],
96
+ # typed sections (sorted alphabetically + case insensitive, 'DESIGN *' + 'MATERIALS' at the end)
97
+ design_sections = [
98
+ s for s in CONFIG.sections.typed_sections if s.startswith("DESIGN")
99
+ ]
100
+ remaining_typed_sections = list(
101
+ set(CONFIG.sections.typed_sections) - set(design_sections) - set(["MATERIALS"])
102
+ )
103
+
104
+ typed_sections = (
105
+ sorted(remaining_typed_sections, key=str.lower)
106
+ + ["MATERIALS"]
107
+ + sorted(design_sections, key=str.lower)
108
+ )
109
+
110
+ # function sections (sorted numerically)
111
+ functions = sorted(
112
+ [s for s in data.keys() if s.startswith("FUNCT") and s[5:].isdigit()],
96
113
  key=lambda s: (
97
114
  s.lower() if not s.startswith("FUNCT") else f"funct{s[5:].zfill(10)}"
98
115
  ),
@@ -115,12 +132,15 @@ def sort_by_section_names(data: dict) -> dict:
115
132
  # Required sections
116
133
  elif section in required_sections:
117
134
  return 1 * n_sections_splitter + required_sections.index(section)
118
- # Typed + FUNCT sections (alphabetical + case insensitive)
119
- elif section in typed_and_funct:
120
- return 2 * n_sections_splitter + typed_and_funct.index(section)
135
+ # Typed sections (alphabetical + case insensitive)
136
+ elif section in typed_sections:
137
+ return 2 * n_sections_splitter + typed_sections.index(section)
138
+ # Function sections (numeric order)
139
+ elif section in functions:
140
+ return 3 * n_sections_splitter + functions.index(section)
121
141
  # Legacy sections
122
142
  elif section in CONFIG.sections.legacy_sections:
123
- return 3 * n_sections_splitter + CONFIG.sections.legacy_sections.index(
143
+ return 4 * n_sections_splitter + CONFIG.sections.legacy_sections.index(
124
144
  section
125
145
  )
126
146
  # Unknown section
fourcipp/version.py CHANGED
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '1.25.0'
32
- __version_tuple__ = version_tuple = (1, 25, 0)
31
+ __version__ = version = '1.27.0'
32
+ __version_tuple__ = version_tuple = (1, 27, 0)
33
33
 
34
34
  __commit_id__ = commit_id = None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: FourCIPP
3
- Version: 1.25.0
3
+ Version: 1.27.0
4
4
  Summary: A streamlined Python Parser for 4C input files
5
5
  Author: FourCIPP Authors
6
6
  License: The MIT License (MIT)
@@ -1,8 +1,8 @@
1
1
  fourcipp/__init__.py,sha256=4pz7DVXErSbUcLqPTaHnQfdJzKkpfZDivBqbHbTgpRE,1388
2
- fourcipp/fourc_input.py,sha256=1-EMbwc5tWbWtbZqzRF4_ytrvkcQVgtC5ZX1uz6NFuQ,23954
3
- fourcipp/version.py,sha256=R81gORYF1NfYL6QjkEQ0pDs6XD7HgxQcT2joD2_hfcw,706
4
- fourcipp/config/4C_metadata.yaml,sha256=Ibxgfxv0GzWW9xV-8n_po7Om_FoOKH5gbYHY9ugPl9E,11887255
5
- fourcipp/config/4C_schema.json,sha256=RVWI9cL8BjyFtGEBiEd49M0HKxkcXLgFGPe4VBz-A4A,16493324
2
+ fourcipp/fourc_input.py,sha256=U_1b3XtZpXZfRV3ZAWiZzpAKtLWWrdBXow2r3wNPWao,24720
3
+ fourcipp/version.py,sha256=tBmoojZ5zW0iWnVPLyJVeuLn7UKDPWo_1AmkH3g0ap8,706
4
+ fourcipp/config/4C_metadata.yaml,sha256=7DMWX_u6rOWLls07duxIp42lkGRt0r6RneQlq9uI7Ck,11890571
5
+ fourcipp/config/4C_schema.json,sha256=LXrYpy2oLIJ5L9aXTiYNBXnoA_LIFOPWijhpxpNQ97c,16497399
6
6
  fourcipp/config/config.yaml,sha256=n2c2a6E4HKfAdNWOQz1kLUuf5p4NLxIddaAi2t5eM38,460
7
7
  fourcipp/legacy_io/__init__.py,sha256=L3MWW-WjPbPAJVX8Z0Uheftn0dRPnqNnSBic3uloFhI,5750
8
8
  fourcipp/legacy_io/element.py,sha256=rP8F-m-8ZCwCxtV_OASvvLeNYr01zsmgZsDZSJ_G1gY,3977
@@ -20,9 +20,9 @@ fourcipp/utils/not_set.py,sha256=NHf0UXDmTuZfvfnIIgkkx4EohxRsN4MVUHUpt7VOnaQ,243
20
20
  fourcipp/utils/type_hinting.py,sha256=izPEhbMdmhrIBamCLqqF_6iDZW-w7a8kplUugbQILyw,1714
21
21
  fourcipp/utils/validation.py,sha256=FejHOj1MddaU7gEpMN-f8Mz3rYjflakd1qcsKnctHqA,5292
22
22
  fourcipp/utils/yaml_io.py,sha256=jPgVnxE858XTpDC6BVhfbbljQegL58zc3u2VPYCTvGE,5771
23
- fourcipp-1.25.0.dist-info/licenses/LICENSE,sha256=lkSOHdH9IZ8c3Vnz0fFjqls1cRlmLADBP8QEIwUlH3o,1082
24
- fourcipp-1.25.0.dist-info/METADATA,sha256=L76lYeCupl3aGYXkldHxokbMVqLgCBsyuq0-E1EYRL4,7916
25
- fourcipp-1.25.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
26
- fourcipp-1.25.0.dist-info/entry_points.txt,sha256=44XBG4bwhuq1EwOZ0U055HYP8_qN6_d30ecVsa5Igng,53
27
- fourcipp-1.25.0.dist-info/top_level.txt,sha256=oZ6jgFFmvi157VwGUEFuKT3D8oS5mOkpOVx8zZURZrQ,9
28
- fourcipp-1.25.0.dist-info/RECORD,,
23
+ fourcipp-1.27.0.dist-info/licenses/LICENSE,sha256=lkSOHdH9IZ8c3Vnz0fFjqls1cRlmLADBP8QEIwUlH3o,1082
24
+ fourcipp-1.27.0.dist-info/METADATA,sha256=nkhEHMJQ3Uk3EPekbccX5GW2RPR3k_L0OLTiyQgJiV0,7916
25
+ fourcipp-1.27.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
26
+ fourcipp-1.27.0.dist-info/entry_points.txt,sha256=44XBG4bwhuq1EwOZ0U055HYP8_qN6_d30ecVsa5Igng,53
27
+ fourcipp-1.27.0.dist-info/top_level.txt,sha256=oZ6jgFFmvi157VwGUEFuKT3D8oS5mOkpOVx8zZURZrQ,9
28
+ fourcipp-1.27.0.dist-info/RECORD,,