Changeset 26500
- Timestamp:
- 10/25/21 15:04:01 (3 years ago)
- Location:
- issm/trunk-jpl/src/jl
- Files:
-
- 4 added
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
issm/trunk-jpl/src/jl/issm.jl
r26492 r26500 60 60 function Initialization() #{{{ 61 61 return Initialization( Vector{Float64}(undef,0), Vector{Float64}(undef,0)) 62 end# }}} 63 mutable struct Stressbalance 64 spcvx::Vector{Float64} 65 spcvy::Vector{Float64} 66 restol::Float64 67 reltol::Float64 68 abstol::Float64 69 maxiter::Int32 70 end 71 function Stressbalance() #{{{ 72 return Stressbalance( Vector{Float64}(undef,0), Vector{Float64}(undef,0), 0., 0., 0., 0) 62 73 end# }}} 63 74 mutable struct Materials … … 89 100 materials::Materials 90 101 initialization::Initialization 102 stressbalance::Stressbalance 91 103 end 92 104 function model() #{{{ 93 return model( Mesh2dTriangle(), Geometry(), Mask(), Materials(), Initialization() )105 return model( Mesh2dTriangle(), Geometry(), Mask(), Materials(), Initialization(),Stressbalance()) 94 106 end#}}} 95 107 function Base.show(io::IO, md::model)# {{{ … … 103 115 @printf "%19s: %-22s -- %s\n" "materials" typeof(md.materials) "material properties" 104 116 @printf "%19s: %-22s -- %s\n" "initialization" typeof(md.initialization) "initial state" 117 @printf "%19s: %-22s -- %s\n" "stressbalance" typeof(md.stressbalance) "stress balance parameters" 105 118 106 119 end# }}} … … 143 156 data .= ntoh.(data) 144 157 data = reshape(data, (rows,cols)) 158 data = collect(data) 159 if cols == 1 160 data = vec(data) 161 end 145 162 else 146 163 error("Error: Encountered invalid field type when reading data.") … … 156 173 return output 157 174 end# }}} 175 function InterpFromMeshToMesh2d(index::Array,x::Vector,y::Vector,data::Vector,xout::Vector,yout::Vector) #{{{ 176 #prepare input arrays 177 nods = Cint(length(x)) 178 nels = Cint(size(index,1)) 179 nods_interp = Cint(length(xout)) 180 Cindex=Array{Cint,1}(undef,length(index)) 181 for i in 1:size(index,1) 182 for j in 1:3 183 Cindex[(i-1)*3+j] = Int32(index[i,j]) 184 end 185 end 186 Cx = Array{Cdouble,1}(undef,nods) 187 Cy = Array{Cdouble,1}(undef,nods) 188 Cdata = Array{Cdouble,1}(undef,nods) 189 for i in 1:nods 190 Cx[i] = x[i] 191 Cy[i] = y[i] 192 Cdata[i] = data[i] 193 end 194 Cxout = Array{Cdouble,1}(undef,nods_interp) 195 Cyout = Array{Cdouble,1}(undef,nods_interp) 196 for i in 1:nods_interp 197 Cxout[i] = xout[i] 198 Cyout[i] = yout[i] 199 end 200 201 Cdataout = Vector{Float64}(undef,nods_interp) 202 203 #This is not working.... 204 rc=ccall( (:InterpFromMeshToMesh2dx,"libISSMCore"), 205 Cint, (Ptr{Ptr{Cdouble}},Ptr{Cint}, Ptr{Cdouble}, Ptr{Cdouble}, Cint, Cint, Ptr{Cdouble}, Cint, Cint, Ptr{Cdouble}, Ptr{Cdouble}, Cint), 206 Ref(Ref(Cdataout)), Ref(Cindex), Ref(Cx), Ref(Cy), nods, nels, 207 Ref(Cdata), nods, 1, Ref(Cxout), Ref(Cyout), nods_interp) 208 209 #Process output 210 dataout = Vector{Float64}(undef,nods_interp) 211 for i in 1:nods_interp 212 dataout[i] = Cdataout[i] 213 end 214 215 return dataout 216 end #}}} 217 function solve(md::model,solution::String) #{{{ 218 219 if solution=="sb" || solution=="Stressbalance" 220 solutionstring = "StressbalanceSolution" 221 else 222 error("solutionstring "*solution*" not supported!"); 223 end 224 225 IssmCore(md) 226 227 return md 228 end #}}} -
issm/trunk-jpl/src/jl/triangle.jl
r26472 r26500 154 154 #Call triangle using ISSM's default options 155 155 triangle_switches = "pQzDq30ia"*@sprintf("%lf",area) #replace V by Q to quiet down the logging 156 #rc=ccall( (:triangulate," ../../externalpackages/triangle/src/libtriangle.dylib"),157 rc=ccall( (:triangulate," libtriangle"),156 #rc=ccall( (:triangulate,"libtriangle"), 157 rc=ccall( (:triangulate,"../../externalpackages/triangle/src/libtriangle.dylib"), 158 158 Cint, ( Cstring, Ref{CTriangulateIO}, Ref{CTriangulateIO}, Ref{CTriangulateIO}), 159 159 triangle_switches, Ref(ctio_in), Ref(ctio_out), Ref(vor_out)) 160 println("number of elements: ",ctio_out.numberoftriangles)161 160 162 161 #post process output
Note:
See TracChangeset
for help on using the changeset viewer.