Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions src/example_unit_datasets/Unit1.unv
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
-1
164
1Meter (newton) 2
1.00000000000000000D+00 1.00000000000000000D+00 1.00000000000000000D+00
2.73150000000000000D+02
-1
6 changes: 6 additions & 0 deletions src/example_unit_datasets/Unit2.unv
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
-1
164
2Foot (pound f) 2
3.28083989501312345D+00 2.24808943099710489D-01 1.80000000000000000D+00
4.59670000000000000D+02
-1
6 changes: 6 additions & 0 deletions src/example_unit_datasets/Unit3.unv
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
-1
164
3Meter (kilogram f) 2
1.00000000000000000D+00 1.01971621297792824D-01 1.00000000000000000D+00
2.73150000000000000D+02
-1
6 changes: 6 additions & 0 deletions src/example_unit_datasets/Unit4.unv
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
-1
164
4Foot (poundal) 2
3.28083989501312345D+00 7.23301385120989426D+00 1.80000000000000000D+00
4.59670000000000000D+02
-1
6 changes: 6 additions & 0 deletions src/example_unit_datasets/Unit5.unv
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
-1
164
5mm (milli-newton) 2
1.00000000000000000D+03 1.00000000000000000D+03 1.00000000000000000D+00
2.73150000000000000D+02
-1
6 changes: 6 additions & 0 deletions src/example_unit_datasets/Unit6.unv
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
-1
164
6cm (centi-newton) 2
1.00000000000000000D+02 1.00000000000000000D+02 1.00000000000000000D+00
2.73150000000000000D+02
-1
6 changes: 6 additions & 0 deletions src/example_unit_datasets/Unit7.unv
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
-1
164
7Inch (pound f) 2
3.93700787401574814D+01 2.24808943099710489D-01 1.80000000000000000D+00
4.59670000000000000D+02
-1
6 changes: 6 additions & 0 deletions src/example_unit_datasets/Unit8.unv
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
-1
164
8mm (kilogram f) 2
1.00000000000000000D+03 1.01971621297792824D-01 1.00000000000000000D+00
2.73150000000000000D+02
-1
6 changes: 6 additions & 0 deletions src/example_unit_datasets/Unit9.unv
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
-1
164
10mm (newton) 2
1.00000000000000000D+03 1.00000000000000000D+00 1.00000000000000000D+00
2.73150000000000000D+02
-1
74 changes: 43 additions & 31 deletions src/unit_conversion.jl
Original file line number Diff line number Diff line change
Expand Up @@ -15,39 +15,39 @@ Converts the units of the given UFF dataset `ds` to SI units in place.
**Output**
- `ds`: Dataset with its data converted to SI units.
"""
function convert_to_si!(ds, ds164)
conversion_length = ds164.conversion_length
conversion_force = ds164.conversion_force
conversion_temperature = ds164.conversion_temperature
temperature_offset = ds164.temperature_offset

convert_to_si!(ds, conversion_length, conversion_force, conversion_temperature, temperature_offset)
function convert_to_si!(datasets)
ds164 = Dataset164(1,"SI", 2, 1.0, 1.0, 1.0, 273.15)
for ds in datasets
ds164 = convert_to_si!(ds, ds164)
end
end

function convert_to_si!(ds::Dataset15, conversion_length = 1., conversion_force = 1., conversion_temperature = 1., temperature_offset = 0.)
function convert_to_si!(ds::Dataset15, ds164)

ds.node_coords ./= conversion_length
ds.node_coords ./= ds164.conversion_length
return ds164
end

function convert_to_si!(ds::Dataset18, conversion_length = 1., conversion_force = 1., conversion_temperature = 1., temperature_offset = 0.)
function convert_to_si!(ds::Dataset18, ds164)

ds.cs_origin ./= conversion_length
ds.cs_x ./= conversion_length
ds.cs_xz ./= conversion_length
ds.cs_origin ./= ds164.conversion_length
ds.cs_x ./= ds164.conversion_length
ds.cs_xz ./= ds164.conversion_length
return ds164
end


function convert_to_si!(ds::Dataset82, conversion_length = 1., conversion_force = 1., conversion_temperature = 1., temperature_offset = 0.)
function convert_to_si!(ds::Dataset82, ds164)

return nothing
return ds164
end

function convert_to_si!(ds::Dataset151, conversion_length = 1., conversion_force = 1., conversion_temperature = 1., temperature_offset = 0.)
function convert_to_si!(ds::Dataset151, ds164)

return nothing
return ds164
end

function convert_to_si!(ds::Dataset58, conversion_length = 1., conversion_force = 1., conversion_temperature = 1., temperature_offset = 0.)
function convert_to_si!(ds::Dataset58, ds164)

# Convert data vector
# Implemented for ordinate data types 8, 11, 12, 9, 13, 15
Expand All @@ -63,42 +63,54 @@ function convert_to_si!(ds::Dataset58, conversion_length = 1., conversion_force
if any(ds.ord_spec_dtype .== (0, 1))
factor /= 1.
elseif any(ds.ord_spec_dtype .== (8, 11, 12))
factor /= conversion_length
factor /= ds164.conversion_length
elseif any(ds.ord_spec_dtype .== (9, 13))
factor /= conversion_force
factor /= ds164.conversion_force
elseif any(ds.ord_spec_dtype .== (15))
factor /= (conversion_force/conversion_length^2)
factor /= (ds164.conversion_force/ds164.conversion_length^2)
else
@warn "Conversion factor for $(ds.ord_spec_dtype) not implemented, please submit PR"
end

# Ordinate Denominator
if any(ds.ord_denom_spec_dtype .== (0, 1))
factor /= 1.
factor *= 1.
elseif any(ds.ord_denom_spec_dtype .== (8, 11, 12))
factor /= conversion_length
factor *= ds164.conversion_length
elseif any(ds.ord_denom_spec_dtype .== (9, 13))
factor /= conversion_force
factor *= ds164.conversion_force
elseif any(ds.ord_denom_spec_dtype .== (15))
factor /= (conversion_force/conversion_length^2)
factor *= (ds164.conversion_force/ds164.conversion_length^2)
else
@warn "Conversion factor for $(ds.ord_denom_spec_dtype) not implemented, please submit PR"
end

ds.data .*= factor
return ds164
end

function convert_to_si!(ds::Dataset164, conversion_length = 1., conversion_force = 1., conversion_temperature = 1., temperature_offset = 0.)
function convert_to_si!(ds::Dataset164, ds164)

return ds
end

return nothing
function convert_to_si!(ds::Dataset1858, ds164)

return ds164
end

function convert_to_si!(ds::Dataset2411, ds164)

ds.node_coords ./= conversion_length
end

function convert_to_si!(ds::Dataset2411, conversion_length = 1., conversion_force = 1., conversion_temperature = 1., temperature_offset = 0.)
function convert_to_si!(ds::Dataset2412, ds164)

ds.node_coords .*= conversion_length
return ds164
end

function convert_to_si!(ds::Dataset2412, conversion_length = 1., conversion_force = 1., conversion_temperature = 1., temperature_offset = 0.)
function convert_to_si!(ds::Dataset2414, ds164)

return nothing
# To Do
return ds164
end