Changeset 13841


Ignore:
Timestamp:
Oct 24, 2019 2:46:05 PM (4 weeks ago)
Author:
Christian Andersson
Message:

Merged latest changes from trunk into the branch. Related to ticket:5863

Location:
branches/dev-cw-2613
Files:
17 edited

Legend:

Unmodified
Added
Removed
  • branches/dev-cw-2613

  • branches/dev-cw-2613/.project

    r5080 r13841  
    77    <buildSpec>
    88        <buildCommand>
    9             <name>org.python.pydev.PyDevBuilder</name>
    10             <arguments>
    11             </arguments>
    12         </buildCommand>
    13         <buildCommand>
    149            <name>org.eclipse.jdt.core.javabuilder</name>
    1510            <arguments>
     
    1914    <natures>
    2015        <nature>org.eclipse.jdt.core.javanature</nature>
    21         <nature>org.python.pydev.pythonNature</nature>
    2216    </natures>
    2317</projectDescription>
  • branches/dev-cw-2613/Compiler/ModelicaCBackEnd/src/jastadd/CCodeGen/CCodeGenExpressions.jrag

    r13431 r13841  
    13531353    }
    13541354   
    1355     /**
    1356      * Generate the initialization of delay blocks.
    1357      */
    1358     public void FDelayExp.genInit_C(CodePrinter p, CodeStream str, String indent) {
    1359         FExp maxDelayExp = myMaxDelayExp();
     1355    private void FClass.genDelayInitVarDecls_C(CodePrinter p, CodeStream str, String indent) { // Hook to facilitate extensions
     1356        for (FDelayExp d : myDelayExps()) {
     1357            d.genInitVarDecls_C(p, str, indent);
     1358        }
     1359        for (FSpatialDistExp d : mySpatialDistExps()) {
     1360            d.genInitVarDecls_C(p, str, indent);
     1361        }
     1362    }
     1363
     1364    private void FClass.genDelayInitAssignments_C(CodePrinter p, CodeStream str, String indent) { // Hook to facilitate extensions
     1365        for (FDelayExp d : myDelayExps()) {
     1366            d.genInit_C(p, str, indent);
     1367        }
     1368        for (FSpatialDistExp d : mySpatialDistExps()) {
     1369            d.genInit_C(p, str, indent);
     1370        }
     1371    }
     1372   
     1373    public void FClass.genDelayInit_C(CodeStream genPrinter) {
     1374        CodePrinter p = ASTNode.printer_C;
     1375        String indent = p.indent("");
     1376        genDelayInitVarDecls_C(p, genPrinter, indent);
     1377        genDelayInitAssignments_C(p, genPrinter, indent);
     1378    }
     1379
     1380    private void FDelayExp.prepareInit_C(CodePrinter p, CodeStream str, String indent, int delayIndex) {
     1381        FExp maxDelayExp = myMaxDelayExp();
    13601382        boolean fixed = isTimeEventGenerating();
    1361         p.printPreSteps(getFExp(), str, indent);
     1383        p.printPreSteps(getFExp(), str, indent);
    13621384        p.printPreSteps(maxDelayExp, str, indent);
    1363        
    1364         str.format("%sjmi_delay_init(jmi, %d, ", indent, myDelayIndex());
     1385        str.format("%sjmi_delay_init(jmi, %d, ", indent, delayIndex);
    13651386        str.print(boolValue_C(fixed)); // jmi_boolean fixed
    13661387        str.print(", ");
     
    13681389        str.print(", ");
    13691390        p.print(fixed ? getDelay() : maxDelayExp, str, indent); // jmi_real_t max_delay
    1370         str.print(", ");
    1371         p.print(getFExp(), str, indent); // jmi_real_t y0
    1372         str.println(");");
    1373        
     1391        str.print(", ");
     1392
     1393    }
     1394
     1395    private void FDelayExp.finalizeInit_C(CodePrinter p, CodeStream str, String indent) {
     1396        str.println(");");
    13741397        p.printPostSteps(getFExp(), str, indent);
    1375         p.printPostSteps(maxDelayExp, str, indent);
     1398        p.printPostSteps(myMaxDelayExp(), str, indent);
     1399    }
     1400   
     1401    /**
     1402     * Generate the initialization of delay blocks.
     1403     */
     1404    public void FDelayExp.genInit_C(CodePrinter p, CodeStream str, String indent) {
     1405        prepareInit_C(p, str, indent, myDelayIndex());
     1406        p.print(getFExp(), str, indent); // jmi_real_t y0
     1407        finalizeInit_C(p, str, indent);
    13761408    }
    13771409    syn FExp FDelayExp.myMaxDelayExp() = hasMax() ? getMax() : getDelay();
  • branches/dev-cw-2613/Compiler/ModelicaCBackEnd/src/jastadd/CCodeGen/CGenerator.jrag

    r12423 r13841  
    2121
    2222import java.io.*;
     23
     24aspect CGenerator {
    2325
    2426public class CGenerator extends GenericGenerator {
     
    12461248       
    12471249        public void generate(CodeStream genPrinter) {
    1248             genPrinter.print(fclass.myDelayExps().size());
     1250            genPrinter.print(fclass.numberOfDelaysInCCode());
    12491251        }
    12501252    }
     
    13041306       
    13051307        public void generate(CodeStream genPrinter) {
    1306             CodePrinter p = ASTNode.printer_C;
    1307             String indent = p.indent("");
    1308             for (FDelayExp d : fclass.myDelayExps()) {
    1309                 d.genInitVarDecls_C(p, genPrinter, indent);
    1310             }
    1311             for (FSpatialDistExp d : fclass.mySpatialDistExps()) {
    1312                 d.genInitVarDecls_C(p, genPrinter, indent);
    1313             }
    1314             for (FDelayExp d : fclass.myDelayExps()) {
    1315                 d.genInit_C(p, genPrinter, indent);
    1316             }
    1317             for (FSpatialDistExp d : fclass.mySpatialDistExps()) {
    1318                 d.genInit_C(p, genPrinter, indent);
    1319             }
     1308            fclass.genDelayInit_C(genPrinter);
    13201309        }
    13211310    }
     
    15781567    }
    15791568}
     1569
     1570    syn int FClass.numberOfDelaysInCCode() = myDelayExps().size(); // Hook to facilitate extensions
     1571}
  • branches/dev-cw-2613/Compiler/ModelicaCompiler/runtime.options

    r11347 r13841  
    221221"Compares the analytic block jacobians with the finite difference block
    222222jacobians during block evaluation. An error is given if the relative error is
    223 to big."
     223too big."
    224224
    225225********************************************************************************
  • branches/dev-cw-2613/Compiler/ModelicaCompiler/src/jastadd/ModelicaCompiler.jrag

    r13732 r13841  
    20452045            InstClassDecl icl = instantiateModel(name, cl, target);
    20462046            UtilInterface util = icl.root().getUtilInterface();
     2047            String flatName = null;
    20472048            if (compileTo != null) {
    20482049                Path unitFile = makePackagingDirs(cl, compileTo, target);
    20492050                util.setCompilationOutputPath(unitFile);
     2051                flatName = computeFlatName(compileTo, util);
    20502052            }
    2051            
    2052             String flatName = computeFlatName(compileTo, util);
    20532053           
    20542054            // flattening
     
    22802280    private String ModelicaCompiler.computeFlatName(Path compileTo, UtilInterface util) {
    22812281        String flatName = null;
    2282         if (compileTo != null && !Files.isDirectory(compileTo)) {
     2282        if (!Files.isDirectory(compileTo)) {
    22832283            flatName = compileTo.getFileName().toString();
    22842284            int i = flatName.lastIndexOf('.');
  • branches/dev-cw-2613/Compiler/ModelicaFrontEnd/src/jastadd/util/Util.jrag

    r13476 r13841  
    15841584
    15851585    syn boolean SrcBaseNode.isLibNode() = false;
    1586     eq SrcLibNode.isLibNode()            = true;
     1586    eq SrcLibNode.isLibNode()           = true;
     1587    syn SrcLibNode SrcBaseNode.asSrcLibNode() {
     1588        throw new UnsupportedOperationException();
     1589    }
     1590    syn SrcLibNode SrcLibNode.asSrcLibNode() = this;
    15871591}
    15881592
  • branches/dev-cw-2613/Compiler/ModelicaFrontEnd/src/java/org/jmodelica/common/evaluation/ExternalFunctionExecutableGenerated.java

    r13719 r13841  
    1717    @Override
    1818    public void remove() {
    19         new File(executable).delete();
     19        File file = new File(executable);
     20        boolean success = file.delete();
     21        // The first attempt to delete may fail if the process has not terminated yet.
     22        // Possibly not necessary since LiveExternalFunction.destroyProcess() now calls ProcessCommunicator.teardown().
     23        if (!success) {
     24            try {
     25                Thread.sleep(10); // Sleep some arbitrary duration to give the process time to die.
     26            } catch (InterruptedException e) {
     27                // Ignore
     28            }
     29            success = file.delete();
     30        }
    2031    }
    2132}
  • branches/dev-cw-2613/Compiler/ModelicaFrontEnd/src/java/org/jmodelica/common/evaluation/ExternalFunctionImpl.java

    r13719 r13841  
    4545            setup(ext, values, timeout, com);
    4646            evaluate(ext, values, timeout, com);
    47             return teardown(timeout, com);
     47            return com.teardown(timeout);
    4848        } finally {
    4949            if (com != null) {
     
    7979        com.accept("READY");
    8080        com.cancelTimer();
    81     }
    82 
    83     public int teardown(int timeout, ProcessCommunicator<V, T> com) throws IOException {
    84         com.startTimer(timeout);
    85         com.check("EXIT");
    86         com.accept("END");
    87         int result = com.end();
    88         com.cancelTimer();
    89         // log().debug("SUCCESS TEARDOWN");
    90         return result;
    9181    }
    9282
  • branches/dev-cw-2613/Compiler/ModelicaFrontEnd/src/java/org/jmodelica/common/evaluation/ExternalProcessCacheImpl.java

    r13719 r13841  
    55import java.io.PrintStream;
    66import java.util.ArrayList;
     7import java.util.Arrays;
     8import java.util.Collection;
    79import java.util.HashMap;
    810import java.util.HashSet;
     
    8082    }
    8183   
    82     private static ArrayList<String> builtinExternalFunctions = new ArrayList<String>() {{
    83         add("ModelicaStrings_substring");
    84         add("ModelicaStrings_length");
    85         add("ModelicaStrings_skipWhiteSpace");
    86         add("ModelicaStrings_compare");
    87     }};
    88    
    89     private static ArrayList<String> supportedSignatures = new ArrayList<String>() {{
    90         add("d+d,d,");
    91         add("d+i,");
    92         add("d+i,d,d,");
    93         add("s+s,i,i,");
    94         add("i+s,");
    95         add("i+s,i,");
    96         add("i+s,s,i,");
    97         add("i+i,i,");
    98         add("void+i,d,d,*R[d,d,d,d,d,d,d,d,d,d,d,],");
    99         add("void+d,d,*d,");
    100     }};
     84    private static Collection<String> builtinExternalFunctions = Arrays.asList(
     85        "ModelicaStrings_substring",
     86        "ModelicaStrings_length",
     87        "ModelicaStrings_skipWhiteSpace",
     88        "ModelicaStrings_compare"
     89    );
     90   
     91    private static Collection<String> supportedSignatures = Arrays.asList(
     92        "d+d,d,",
     93        "d+i,",
     94        "d+i,d,d,",
     95        "s+s,i,i,",
     96        "i+s,",
     97        "i+s,i,",
     98        "i+s,s,i,",
     99        "i+i,i,",
     100        "void+i,d,d,*R[d,d,d,d,d,d,d,d,d,d,d,],",
     101        "void+d,d,*d,"
     102    );
    101103   
    102104    public boolean canUseEvaluator(E ext, ArrayList<String> arguments) {
  • branches/dev-cw-2613/Compiler/ModelicaFrontEnd/src/java/org/jmodelica/common/evaluation/LiveExternalFunction.java

    r13719 r13841  
    4646            compiler.log().debug("Finished evaluating live external function, time: " + time + "ms");
    4747        } catch (ProcessCommunicator.AbortConstantEvaluationException e) {
    48 
     48            // TODO What does this mean?
    4949        } catch (ConstantEvaluationException e) {
    5050            destroyProcess();
     
    8989        if (com != null) {
    9090            livingCachedExternals.remove(this);
    91             com.destroy();
     91            try {
     92                com.teardown(100); // TODO Should we check the return value?
     93            } catch (IOException e) {
     94                // TODO Do we need to do anything here?
     95            }
     96            com.destroy(); // TODO Do we still need to call destroy() if teardown is successful?
    9297            com = null;
    9398        }
  • branches/dev-cw-2613/Compiler/ModelicaFrontEnd/src/java/org/jmodelica/common/evaluation/ProcessCommunicator.java

    r12940 r13841  
    4949    private String getLine() throws IOException {
    5050        String line = buffLine;
    51         if (line == null)
     51        if (line == null) {
    5252            line = in.readLine();
     53        }
    5354        if (line == null) {
    5455            if (timeOutHappened) {
     
    110111            String format = deserializeString();
    111112            String value = deserializeString();
    112             if (warning != 0)
     113            if (warning != 0) {
    113114                mc.log().warning("%s: " + format, name, value);
    114             else
     115            } else {
    115116                mc.log().verbose("%s: " + format, name, value);
     117            }
    116118            line = getLine();
    117119        }
     
    133135            super(null, string);
    134136        }
     137    }
     138
     139    public int teardown(int timeout) throws IOException {
     140        startTimer(timeout);
     141        check("EXIT");
     142        accept("END");
     143        int result = end();
     144        cancelTimer();
     145        return result;
    135146    }
    136147
  • branches/dev-cw-2613/Compiler/ModelicaFrontEnd/src/java/org/jmodelica/common/options/AbstractOptionRegistry.java

    r13252 r13841  
    4040 * to get an option registry populated with all available options.
    4141 */
     42@SuppressWarnings("javadoc")
    4243public abstract class AbstractOptionRegistry {
    4344
  • branches/dev-cw-2613/Compiler/ModelicaFrontEnd/src/java/org/jmodelica/separateProcess/CompilerInstance.java

    r13396 r13841  
    274274         * {@link org.jmodelica.modelica.compiler.ModelicaCompiler ModelicaCompiler}.
    275275         */
     276        @SuppressWarnings("javadoc")
    276277        MODELICA("org.jmodelica.modelica.compiler.ModelicaCompiler"),
    277278
     
    279280         * {@link org.jmodelica.optimica.compiler.OptimicaCompiler OptimicaCompiler}.
    280281         */
     282        @SuppressWarnings("javadoc")
    281283        OPTIMICA("org.jmodelica.optimica.compiler.OptimicaCompiler");
    282284
  • branches/dev-cw-2613/Compiler/ModelicaFrontEnd/src/java/org/jmodelica/util/MemorySpider.java

    r12940 r13841  
    145145        private Field field;
    146146       
    147         public Object perform(Field f, Object o) {
     147        @SuppressWarnings("deprecation")
     148        public Object perform(Field f, Object o) {
    148149            field = f;
    149150            if (!f.isAccessible())
  • branches/dev-cw-2613/Compiler/ModelicaFrontEnd/src/java/org/jmodelica/util/logging/PipeLogger.java

    r12984 r13841  
    7272    }
    7373
     74    @SuppressWarnings("deprecation")
    7475    @Override
    7576    protected void finalize() throws Throwable {
  • branches/dev-cw-2613/ThirdParty/build_thirdparties/build/sundials/makefile

    r12138 r13841  
    2828    mkdir -p $(SUNDIALS_BUILD_DIR); \
    2929    cd $(SUNDIALS_BUILD_DIR); \
    30     cmake $(GENERATOR) -DEXAMPLES_ENABLE=OFF -DBUILD_SHARED_LIBS=OFF -DCMAKE_C_FLAGS=$(SUNDIALS_C_FLAGS) -DCMAKE_INSTALL_PREFIX:PATH=$(SUNDIALS_INSTALL_DIR) $(SUNDIALS_SRC_DIR)
     30    cmake $(GENERATOR) $(SUPERLU_ADDON) -DEXAMPLES_ENABLE=OFF -DBUILD_SHARED_LIBS=OFF -DCMAKE_C_FLAGS=$(SUNDIALS_C_FLAGS) -DCMAKE_INSTALL_PREFIX:PATH=$(SUNDIALS_INSTALL_DIR) $(SUNDIALS_SRC_DIR)
    3131
    3232clean:
Note: See TracChangeset for help on using the changeset viewer.