Changeset 26500


Ignore:
Timestamp:
10/25/21 15:04:01 (3 years ago)
Author:
Mathieu Morlighem
Message:

NEW: added more files

Location:
issm/trunk-jpl/src/jl
Files:
4 added
2 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/jl/issm.jl

    r26492 r26500  
    6060function Initialization() #{{{
    6161        return Initialization( Vector{Float64}(undef,0), Vector{Float64}(undef,0))
     62end# }}}
     63mutable struct Stressbalance
     64        spcvx::Vector{Float64}
     65        spcvy::Vector{Float64}
     66        restol::Float64
     67        reltol::Float64
     68        abstol::Float64
     69        maxiter::Int32
     70end
     71function Stressbalance() #{{{
     72        return Stressbalance( Vector{Float64}(undef,0), Vector{Float64}(undef,0), 0., 0., 0., 0)
    6273end# }}}
    6374mutable struct Materials
     
    89100        materials::Materials
    90101        initialization::Initialization
     102        stressbalance::Stressbalance
    91103end
    92104function model() #{{{
    93         return model( Mesh2dTriangle(), Geometry(), Mask(), Materials(), Initialization())
     105        return model( Mesh2dTriangle(), Geometry(), Mask(), Materials(), Initialization(),Stressbalance())
    94106end#}}}
    95107function Base.show(io::IO, md::model)# {{{
     
    103115        @printf "%19s: %-22s -- %s\n" "materials" typeof(md.materials) "material properties"
    104116        @printf "%19s: %-22s -- %s\n" "initialization" typeof(md.initialization) "initial state"
     117        @printf "%19s: %-22s -- %s\n" "stressbalance" typeof(md.stressbalance) "stress balance parameters"
    105118
    106119end# }}}
     
    143156                                data .= ntoh.(data)
    144157                                data = reshape(data, (rows,cols))
     158                                data = collect(data)
     159                                if cols == 1
     160                                        data = vec(data)
     161                                end
    145162                        else
    146163                                error("Error: Encountered invalid field type when reading data.")
     
    156173        return output
    157174end# }}}
     175function 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
     216end #}}}
     217function 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
     228end #}}}
  • issm/trunk-jpl/src/jl/triangle.jl

    r26472 r26500  
    154154        #Call triangle using ISSM's default options
    155155        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"),
    158158                                Cint, ( Cstring, Ref{CTriangulateIO}, Ref{CTriangulateIO}, Ref{CTriangulateIO}),
    159159                                triangle_switches, Ref(ctio_in), Ref(ctio_out), Ref(vor_out))
    160         println("number of elements: ",ctio_out.numberoftriangles)
    161160
    162161        #post process output
Note: See TracChangeset for help on using the changeset viewer.