Skip to content

Commit bce2958

Browse files
added examples and test
1 parent b2f31c2 commit bce2958

File tree

6 files changed

+432
-102
lines changed

6 files changed

+432
-102
lines changed

CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,8 +211,10 @@ add_dependencies( al-java al-java-binding )
211211

212212
add_jar( al-identifiers-java
213213
SOURCES ${IDENTIFIER_SOURCES}
214+
INCLUDE_JARS al-java
214215
OUTPUT_NAME al-identifiers
215216
)
217+
add_dependencies( al-identifiers-java al-java )
216218

217219

218220
# Install
Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,20 @@
1-
// The Java Access Layer currently does not provide an identifiers library.
1+
2+
3+
public class identifier_example1 {
4+
public static void main(String[] args) {
5+
// Get coordinate identifier information for "phi"
6+
int idx = coordinate_identifier.getIndex("phi");
7+
8+
// Display coordinate identifier details
9+
System.out.println("Coordinate Identifier Information for 'phi':");
10+
System.out.println(" Index: " + idx);
11+
System.out.println(" Data type: " + coordinate_identifier.getName(idx));
12+
System.out.println(" Description: " + coordinate_identifier.getDescription(idx));
13+
14+
}
15+
}
16+
// $ java -cp $CLASSPATH identifier_example1.java
17+
// Coordinate Identifier Information for 'phi':
18+
// Index: 5
19+
// Data type: phi
20+
// Description: Toroidal angle
Lines changed: 59 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,59 @@
1-
// The Java Access Layer currently does not provide an identifiers library.
1+
// Import the Access Layer and required identifiers
2+
import java.io.*;
3+
4+
import imasjava.*;
5+
6+
public class identifier_example2 {
7+
public static void main(String[] args) {
8+
// Create IDS instance
9+
imas.equilibrium equilibrium = new imas.equilibrium();
10+
// Configure equilibrium IDS
11+
equilibrium.ids_properties.homogeneous_time = 1;
12+
equilibrium.ids_properties.comment = "Test equilibrium IDS";
13+
14+
// Setup equilibrium time slice and profiles
15+
equilibrium.time_slice = new imas.equilibrium.time_sliceClass[1];
16+
equilibrium.time_slice[0] = new imas.equilibrium.time_sliceClass();
17+
equilibrium.time_slice[0].profiles_2d = new imas.equilibrium.time_sliceClass.profiles_2dClass[1];
18+
equilibrium.time_slice[0].profiles_2d[0] = new imas.equilibrium.time_sliceClass.profiles_2dClass();
19+
20+
poloidal_plane_coordinates_identifier.setIdentifier(equilibrium.time_slice[0].profiles_2d[0].grid_type, "rectangular");
21+
22+
// // Output equilibrium grid type information
23+
System.out.println("Equilibrium Grid Type:");
24+
System.out.println(" Name: " + equilibrium.time_slice[0].profiles_2d[0].grid_type.name);
25+
System.out.println(" Index: " + equilibrium.time_slice[0].profiles_2d[0].grid_type.index);
26+
System.out.println(" Description: " + equilibrium.time_slice[0].profiles_2d[0].grid_type.description);
27+
28+
// Configure distribution sources IDS
29+
imas.distribution_sources distribution_sources = new imas.distribution_sources();
30+
distribution_sources.ids_properties.homogeneous_time = 1;
31+
distribution_sources.ids_properties.comment = "Test distribution sources IDS";
32+
33+
// Setup distribution sources structure
34+
distribution_sources.source = new imas.distribution_sources.sourceClass[1];
35+
distribution_sources.source[0] = new imas.distribution_sources.sourceClass();
36+
distribution_sources.source[0].process = new imas.distribution_sources.sourceClass.processClass[1];
37+
distribution_sources.source[0].process[0] = new imas.distribution_sources.sourceClass.processClass();
38+
39+
// Set distribution source type identifier using reflection-based method
40+
distribution_source_identifier.setIdentifier(distribution_sources.source[0].process[0].type, "NBI");
41+
42+
// Output distribution source type information
43+
System.out.println("Distribution Source Type:");
44+
System.out.println(" Name: " + distribution_sources.source[0].process[0].type.name);
45+
System.out.println(" Index: " + distribution_sources.source[0].process[0].type.index);
46+
System.out.println(" Description: " + distribution_sources.source[0].process[0].type.description);
47+
}
48+
}
49+
50+
// $ java -cp $CLASSPATH identifier_example2.java
51+
// Equilibrium Grid Type:
52+
// Name: rectangular
53+
// Index: 1
54+
// Description: Cylindrical R,Z ala eqdsk (R=dim1, Z=dim2). In this case the position arrays should not be filled since they are redundant with grid/dim1 and dim2.
55+
// Distribution Source Type:
56+
// Name: NBI
57+
// Index: 1
58+
// Description: Source from neutral beam injection
59+
Lines changed: 58 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,58 @@
1-
// The Java Access Layer currently does not provide an identifiers library.
1+
// Import the Access Layer and required identifiers
2+
import java.io.*;
3+
4+
import imasjava.*;
5+
6+
public class identifier_example3 {
7+
public static void main(String[] args) {
8+
// Create IDS instance
9+
imas.wall wall = new imas.wall();
10+
wall.ids_properties.homogeneous_time = 1;
11+
wall.ids_properties.comment = "Test wall IDS with materials";
12+
13+
String[] names = {"W", "C", "Be", "Cu", "SS"};
14+
15+
// Setup wall structure with proper array initialization
16+
wall.description_ggd = new imas.wall.description_ggdClass[1];
17+
wall.description_ggd[0] = new imas.wall.description_ggdClass();
18+
wall.description_ggd[0].material = new imas.wall.description_ggdClass.materialClass[1];
19+
wall.description_ggd[0].material[0] = new imas.wall.description_ggdClass.materialClass();
20+
wall.description_ggd[0].material[0].grid_subset = new imas.wall.description_ggdClass.materialClass.grid_subsetClass[1];
21+
wall.description_ggd[0].material[0].grid_subset[0] = new imas.wall.description_ggdClass.materialClass.grid_subsetClass();
22+
23+
materials_identifier.setIdentifier(wall.description_ggd[0].material[0].grid_subset[0].identifiers, names);
24+
25+
// Output material information
26+
int numMaterials = wall.description_ggd[0].material[0].grid_subset[0].identifiers.indices.getDim();
27+
System.out.println("Number of materials: " + numMaterials);
28+
for (int i = 0; i < numMaterials; i++) {
29+
System.out.println("Material " + (i + 1) + ":");
30+
System.out.println(" Index: " + wall.description_ggd[0].material[0].grid_subset[0].identifiers.indices.getElementAt(i));
31+
System.out.println(" Name: \"" + wall.description_ggd[0].material[0].grid_subset[0].identifiers.names.getElementAt(i) + "\"");
32+
System.out.println(" Description: \"" + wall.description_ggd[0].material[0].grid_subset[0].identifiers.descriptions.getElementAt(i) + "\"");
33+
}
34+
}
35+
}
36+
37+
// $ java -cp $CLASSPATH identifier_example3.java
38+
// Number of materials: 5
39+
// Material 1:
40+
// Index: 2
41+
// Name: "W"
42+
// Description: "Tungsten"
43+
// Material 2:
44+
// Index: 1
45+
// Name: "C"
46+
// Description: "Carbon"
47+
// Material 3:
48+
// Index: 10
49+
// Name: "Be"
50+
// Description: "Beryllium"
51+
// Material 4:
52+
// Index: 18
53+
// Name: "Cu"
54+
// Description: "Copper"
55+
// Material 5:
56+
// Index: 4
57+
// Name: "SS"
58+
// Description: "Stainless steel"

0 commit comments

Comments
 (0)