Skip to content

Conversation

rjplevin
Copy link
Collaborator

@rjplevin rjplevin requested a review from davidanthoff May 20, 2019 17:34
Copy link
Collaborator

@davidanthoff davidanthoff left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perfect!

@davidanthoff davidanthoff added this to the v0.9.0 milestone May 20, 2019
@rjplevin rjplevin merged commit 303c029 into master May 20, 2019
@rjplevin rjplevin deleted the show-model branch May 20, 2019 17:46
@corakingdon
Copy link
Collaborator

Does this print out all internal and external parameter connections? won't this still be a bit unwieldy?

@rjplevin
Copy link
Collaborator Author

Feel free to dial it back if needed. This is what it looks like with a simple test model:

julia> m
Model
  Module: Mimi
  Dimensions:
    regions => Mimi.Dimension{Symbol}(OrderedCollections.OrderedDict(:Region1=>1,:Region2=>2,:Region3=>3))
    time => Mimi.Dimension{Int64}(OrderedCollections.OrderedDict(2015=>1,2020=>2,2025=>3,2030=>4,2035=>5,2040=>6,2045=>7,2050=>8,2055=>9,2
060=>10,2065=>11,2070=>12,2075=>13,2080=>14,2085=>15,2090=>16,2095=>17,2100=>18,2105=>19,2110=>20))
  Components:
    <ComponentId MyModel.grosseconomy>
    <ComponentId MyModel.emissions>
  Internal Connections:
    Mimi.InternalParameterConnection(:grosseconomy, :YGROSS, :emissions, :YGROSS, false, nothing, 0)
  External Connections:
    Mimi.ExternalParameterConnection(:grosseconomy, :l, :l)
    Mimi.ExternalParameterConnection(:grosseconomy, :tfp, :tfp)
    Mimi.ExternalParameterConnection(:grosseconomy, :s, :s)
    Mimi.ExternalParameterConnection(:grosseconomy, :depk, :depk)
    Mimi.ExternalParameterConnection(:grosseconomy, :k0, :k0)
    Mimi.ExternalParameterConnection(:grosseconomy, :share, :share)
    Mimi.ExternalParameterConnection(:emissions, :sigma, :sigma)
  Backups: Symbol[]
  Number type: Float64
  Built: true

@corakingdon
Copy link
Collaborator

This is what it looks like for MimiFUND, and depending on whether or not your console does line wrap (mine does) it appears even longer. I don't really have a preference, and I do think this is descriptive and useful, just wanted to check if this is what @davidanthoff wants since it is still a huge wall of text

julia> m=MimiFUND.getmodel()
Model
  Module: Mimi
  Dimensions:
    regions => Mimi.Dimension{String}(OrderedCollections.OrderedDict("USA"=>1,"CAN"=>2,"WEU"=>3,"JPK"=>4,"ANZ"=>5,"EEU"=>6,"FSU"=>7,"MDE"=>8,"CAM"=>9,"LAM"=>10,"SAS"=>11,"SEA"=>12,"CHI"=>13,"MAF"=>14,"SSA"=>15,"SIS"=>16))
    5 => Mimi.Dimension{Int64}(OrderedCollections.OrderedDict(1=>1,2=>2,3=>3,4=>4,5=>5))
    time => Mimi.Dimension{Int64}(OrderedCollections.OrderedDict(1950=>1,1951=>2,1952=>3,1953=>4,1954=>5,1955=>6,1956=>7,1957=>8,1958=>9,1959=>10,1960=>11,1961=>12,1962=>13,1963=>14,1964=>15,1965=>16,1966=>17,1967=>18,1968=>19,1969=>20,1970=>21,1971=>22,1972=>23,1973=>24,1974=>25,1975=>26,1976=>27,1977=>28,1978=>29,1979=>30,1980=>31,1981=>32,1982=>33,1983=>34,1984=>35,1985=>36,1986=>37,1987=>38,1988=>39,1989=>40,1990=>41,1991=>42,1992=>43,1993=>44,1994=>45,1995=>46,1996=>47,1997=>48,1998=>49,1999=>50,2000=>51,2001=>52,2002=>53,2003=>54,2004=>55,2005=>56,2006=>57,2007=>58,2008=>59,2009=>60,2010=>61,2011=>62,2012=>63,2013=>64,2014=>65,2015=>66,2016=>67,2017=>68,2018=>69,2019=>70,2020=>71,2021=>72,2022=>73,2023=>74,2024=>75,2025=>76,2026=>77,2027=>78,2028=>79,2029=>80,2030=>81,2031=>82,2032=>83,2033=>84,2034=>85,2035=>86,2036=>87,2037=>88,2038=>89,2039=>90,2040=>91,2041=>92,2042=>93,2043=>94,2044=>95,2045=>96,2046=>97,2047=>98,2048=>99,2049=>100,2050=>101,2051=>102,2052=>103,2053=>104,2054=>105,2055=>106,2056=>107,2057=>108,2058=>109,2059=>110,2060=>111,2061=>112,2062=>113,2063=>114,2064=>115,2065=>116,2066=>117,2067=>118,2068=>119,2069=>120,2070=>121,2071=>122,2072=>123,2073=>124,2074=>125,2075=>126,2076=>127,2077=>128,2078=>129,2079=>130,2080=>131,2081=>132,2082=>133,2083=>134,2084=>135,2085=>136,2086=>137,2087=>138,2088=>139,2089=>140,2090=>141,2091=>142,2092=>143,2093=>144,2094=>145,2095=>146,2096=>147,2097=>148,2098=>149,2099=>150,2100=>151,2101=>152,2102=>153,2103=>154,2104=>155,2105=>156,2106=>157,2107=>158,2108=>159,2109=>160,2110=>161,2111=>162,2112=>163,2113=>164,2114=>165,2115=>166,2116=>167,2117=>168,2118=>169,2119=>170,2120=>171,2121=>172,2122=>173,2123=>174,2124=>175,2125=>176,2126=>177,2127=>178,2128=>179,2129=>180,2130=>181,2131=>182,2132=>183,2133=>184,2134=>185,2135=>186,2136=>187,2137=>188,2138=>189,2139=>190,2140=>191,2141=>192,2142=>193,2143=>194,2144=>195,2145=>196,2146=>197,2147=>198,2148=>199,2149=>200,2150=>201,2151=>202,2152=>203,2153=>204,2154=>205,2155=>206,2156=>207,2157=>208,2158=>209,2159=>210,2160=>211,2161=>212,2162=>213,2163=>214,2164=>215,2165=>216,2166=>217,2167=>218,2168=>219,2169=>220,2170=>221,2171=>222,2172=>223,2173=>224,2174=>225,2175=>226,2176=>227,2177=>228,2178=>229,2179=>230,2180=>231,2181=>232,2182=>233,2183=>234,2184=>235,2185=>236,2186=>237,2187=>238,2188=>239,2189=>240,2190=>241,2191=>242,2192=>243,2193=>244,2194=>245,2195=>246,2196=>247,2197=>248,2198=>249,2199=>250,2200=>251,2201=>252,2202=>253,2203=>254,2204=>255,2205=>256,2206=>257,2207=>258,2208=>259,2209=>260,2210=>261,2211=>262,2212=>263,2213=>264,2214=>265,2215=>266,2216=>267,2217=>268,2218=>269,2219=>270,2220=>271,2221=>272,2222=>273,2223=>274,2224=>275,2225=>276,2226=>277,2227=>278,2228=>279,2229=>280,2230=>281,2231=>282,2232=>283,2233=>284,2234=>285,2235=>286,2236=>287,2237=>288,2238=>289,2239=>290,2240=>291,2241=>292,2242=>293,2243=>294,2244=>295,2245=>296,2246=>297,2247=>298,2248=>299,2249=>300,2250=>301,2251=>302,2252=>303,2253=>304,2254=>305,2255=>306,2256=>307,2257=>308,2258=>309,2259=>310,2260=>311,2261=>312,2262=>313,2263=>314,2264=>315,2265=>316,2266=>317,2267=>318,2268=>319,2269=>320,2270=>321,2271=>322,2272=>323,2273=>324,2274=>325,2275=>326,2276=>327,2277=>328,2278=>329,2279=>330,2280=>331,2281=>332,2282=>333,2283=>334,2284=>335,2285=>336,2286=>337,2287=>338,2288=>339,2289=>340,2290=>341,2291=>342,2292=>343,2293=>344,2294=>345,2295=>346,2296=>347,2297=>348,2298=>349,2299=>350,2300=>351,2301=>352,2302=>353,2303=>354,2304=>355,2305=>356,2306=>357,2307=>358,2308=>359,2309=>360,2310=>361,2311=>362,2312=>363,2313=>364,2314=>365,2315=>366,2316=>367,2317=>368,2318=>369,2319=>370,2320=>371,2321=>372,2322=>373,2323=>374,2324=>375,2325=>376,2326=>377,2327=>378,2328=>379,2329=>380,2330=>381,2331=>382,2332=>383,2333=>384,2334=>385,2335=>386,2336=>387,2337=>388,2338=>389,2339=>390,2340=>391,2341=>392,2342=>393,2343=>394,2344=>395,2345=>396,2346=>397,2347=>398,2348=>399,2349=>400,2350=>401,2351=>402,2352=>403,2353=>404,2354=>405,2355=>406,2356=>407,2357=>408,2358=>409,2359=>410,2360=>411,2361=>412,2362=>413,2363=>414,2364=>415,2365=>416,2366=>417,2367=>418,2368=>419,2369=>420,2370=>421,2371=>422,2372=>423,2373=>424,2374=>425,2375=>426,2376=>427,2377=>428,2378=>429,2379=>430,2380=>431,2381=>432,2382=>433,2383=>434,2384=>435,2385=>436,2386=>437,2387=>438,2388=>439,2389=>440,2390=>441,2391=>442,2392=>443,2393=>444,2394=>445,2395=>446,2396=>447,2397=>448,2398=>449,2399=>450,2400=>451,2401=>452,2402=>453,2403=>454,2404=>455,2405=>456,2406=>457,2407=>458,2408=>459,2409=>460,2410=>461,2411=>462,2412=>463,2413=>464,2414=>465,2415=>466,2416=>467,2417=>468,2418=>469,2419=>470,2420=>471,2421=>472,2422=>473,2423=>474,2424=>475,2425=>476,2426=>477,2427=>478,2428=>479,2429=>480,2430=>481,2431=>482,2432=>483,2433=>484,2434=>485,2435=>486,2436=>487,2437=>488,2438=>489,2439=>490,2440=>491,2441=>492,2442=>493,2443=>494,2444=>495,2445=>496,2446=>497,2447=>498,2448=>499,2449=>500,2450=>501,2451=>502,2452=>503,2453=>504,2454=>505,2455=>506,2456=>507,2457=>508,2458=>509,2459=>510,2460=>511,2461=>512,2462=>513,2463=>514,2464=>515,2465=>516,2466=>517,2467=>518,2468=>519,2469=>520,2470=>521,2471=>522,2472=>523,2473=>524,2474=>525,2475=>526,2476=>527,2477=>528,2478=>529,2479=>530,2480=>531,2481=>532,2482=>533,2483=>534,2484=>535,2485=>536,2486=>537,2487=>538,2488=>539,2489=>540,2490=>541,2491=>542,2492=>543,2493=>544,2494=>545,2495=>546,2496=>547,2497=>548,2498=>549,2499=>550,2500=>551,2501=>552,2502=>553,2503=>554,2504=>555,2505=>556,2506=>557,2507=>558,2508=>559,2509=>560,2510=>561,2511=>562,2512=>563,2513=>564,2514=>565,2515=>566,2516=>567,2517=>568,2518=>569,2519=>570,2520=>571,2521=>572,2522=>573,2523=>574,2524=>575,2525=>576,2526=>577,2527=>578,2528=>579,2529=>580,2530=>581,2531=>582,2532=>583,2533=>584,2534=>585,2535=>586,2536=>587,2537=>588,2538=>589,2539=>590,2540=>591,2541=>592,2542=>593,2543=>594,2544=>595,2545=>596,2546=>597,2547=>598,2548=>599,2549=>600,2550=>601,2551=>602,2552=>603,2553=>604,2554=>605,2555=>606,2556=>607,2557=>608,2558=>609,2559=>610,2560=>611,2561=>612,2562=>613,2563=>614,2564=>615,2565=>616,2566=>617,2567=>618,2568=>619,2569=>620,2570=>621,2571=>622,2572=>623,2573=>624,2574=>625,2575=>626,2576=>627,2577=>628,2578=>629,2579=>630,2580=>631,2581=>632,2582=>633,2583=>634,2584=>635,2585=>636,2586=>637,2587=>638,2588=>639,2589=>640,2590=>641,2591=>642,2592=>643,2593=>644,2594=>645,2595=>646,2596=>647,2597=>648,2598=>649,2599=>650,2600=>651,2601=>652,2602=>653,2603=>654,2604=>655,2605=>656,2606=>657,2607=>658,2608=>659,2609=>660,2610=>661,2611=>662,2612=>663,2613=>664,2614=>665,2615=>666,2616=>667,2617=>668,2618=>669,2619=>670,2620=>671,2621=>672,2622=>673,2623=>674,2624=>675,2625=>676,2626=>677,2627=>678,2628=>679,2629=>680,2630=>681,2631=>682,2632=>683,2633=>684,2634=>685,2635=>686,2636=>687,2637=>688,2638=>689,2639=>690,2640=>691,2641=>692,2642=>693,2643=>694,2644=>695,2645=>696,2646=>697,2647=>698,2648=>699,2649=>700,2650=>701,2651=>702,2652=>703,2653=>704,2654=>705,2655=>706,2656=>707,2657=>708,2658=>709,2659=>710,2660=>711,2661=>712,2662=>713,2663=>714,2664=>715,2665=>716,2666=>717,2667=>718,2668=>719,2669=>720,2670=>721,2671=>722,2672=>723,2673=>724,2674=>725,2675=>726,2676=>727,2677=>728,2678=>729,2679=>730,2680=>731,2681=>732,2682=>733,2683=>734,2684=>735,2685=>736,2686=>737,2687=>738,2688=>739,2689=>740,2690=>741,2691=>742,2692=>743,2693=>744,2694=>745,2695=>746,2696=>747,2697=>748,2698=>749,2699=>750,2700=>751,2701=>752,2702=>753,2703=>754,2704=>755,2705=>756,2706=>757,2707=>758,2708=>759,2709=>760,2710=>761,2711=>762,2712=>763,2713=>764,2714=>765,2715=>766,2716=>767,2717=>768,2718=>769,2719=>770,2720=>771,2721=>772,2722=>773,2723=>774,2724=>775,2725=>776,2726=>777,2727=>778,2728=>779,2729=>780,2730=>781,2731=>782,2732=>783,2733=>784,2734=>785,2735=>786,2736=>787,2737=>788,2738=>789,2739=>790,2740=>791,2741=>792,2742=>793,2743=>794,2744=>795,2745=>796,2746=>797,2747=>798,2748=>799,2749=>800,2750=>801,2751=>802,2752=>803,2753=>804,2754=>805,2755=>806,2756=>807,2757=>808,2758=>809,2759=>810,2760=>811,2761=>812,2762=>813,2763=>814,2764=>815,2765=>816,2766=>817,2767=>818,2768=>819,2769=>820,2770=>821,2771=>822,2772=>823,2773=>824,2774=>825,2775=>826,2776=>827,2777=>828,2778=>829,2779=>830,2780=>831,2781=>832,2782=>833,2783=>834,2784=>835,2785=>836,2786=>837,2787=>838,2788=>839,2789=>840,2790=>841,2791=>842,2792=>843,2793=>844,2794=>845,2795=>846,2796=>847,2797=>848,2798=>849,2799=>850,2800=>851,2801=>852,2802=>853,2803=>854,2804=>855,2805=>856,2806=>857,2807=>858,2808=>859,2809=>860,2810=>861,2811=>862,2812=>863,2813=>864,2814=>865,2815=>866,2816=>867,2817=>868,2818=>869,2819=>870,2820=>871,2821=>872,2822=>873,2823=>874,2824=>875,2825=>876,2826=>877,2827=>878,2828=>879,2829=>880,2830=>881,2831=>882,2832=>883,2833=>884,2834=>885,2835=>886,2836=>887,2837=>888,2838=>889,2839=>890,2840=>891,2841=>892,2842=>893,2843=>894,2844=>895,2845=>896,2846=>897,2847=>898,2848=>899,2849=>900,2850=>901,2851=>902,2852=>903,2853=>904,2854=>905,2855=>906,2856=>907,2857=>908,2858=>909,2859=>910,2860=>911,2861=>912,2862=>913,2863=>914,2864=>915,2865=>916,2866=>917,2867=>918,2868=>919,2869=>920,2870=>921,2871=>922,2872=>923,2873=>924,2874=>925,2875=>926,2876=>927,2877=>928,2878=>929,2879=>930,2880=>931,2881=>932,2882=>933,2883=>934,2884=>935,2885=>936,2886=>937,2887=>938,2888=>939,2889=>940,2890=>941,2891=>942,2892=>943,2893=>944,2894=>945,2895=>946,2896=>947,2897=>948,2898=>949,2899=>950,2900=>951,2901=>952,2902=>953,2903=>954,2904=>955,2905=>956,2906=>957,2907=>958,2908=>959,2909=>960,2910=>961,2911=>962,2912=>963,2913=>964,2914=>965,2915=>966,2916=>967,2917=>968,2918=>969,2919=>970,2920=>971,2921=>972,2922=>973,2923=>974,2924=>975,2925=>976,2926=>977,2927=>978,2928=>979,2929=>980,2930=>981,2931=>982,2932=>983,2933=>984,2934=>985,2935=>986,2936=>987,2937=>988,2938=>989,2939=>990,2940=>991,2941=>992,2942=>993,2943=>994,2944=>995,2945=>996,2946=>997,2947=>998,2948=>999,2949=>1000,2950=>1001,2951=>1002,2952=>1003,2953=>1004,2954=>1005,2955=>1006,2956=>1007,2957=>1008,2958=>1009,2959=>1010,2960=>1011,2961=>1012,2962=>1013,2963=>1014,2964=>1015,2965=>1016,2966=>1017,2967=>1018,2968=>1019,2969=>1020,2970=>1021,2971=>1022,2972=>1023,2973=>1024,2974=>1025,2975=>1026,2976=>1027,2977=>1028,2978=>1029,2979=>1030,2980=>1031,2981=>1032,2982=>1033,2983=>1034,2984=>1035,2985=>1036,2986=>1037,2987=>1038,2988=>1039,2989=>1040,2990=>1041,2991=>1042,2992=>1043,2993=>1044,2994=>1045,2995=>1046,2996=>1047,2997=>1048,2998=>1049,2999=>1050,3000=>1051))
  Components:
    <ComponentId MimiFUND.scenariouncertainty>
    <ComponentId MimiFUND.population>
    <ComponentId MimiFUND.geography>
    <ComponentId MimiFUND.socioeconomic>
    <ComponentId MimiFUND.emissions>
    <ComponentId MimiFUND.climateco2cycle>
    <ComponentId MimiFUND.climatech4cycle>
    <ComponentId MimiFUND.climaten2ocycle>
    <ComponentId MimiFUND.climatesf6cycle>
    <ComponentId MimiFUND.climateforcing>
    <ComponentId MimiFUND.climatedynamics>
    <ComponentId MimiFUND.biodiversity>
    <ComponentId MimiFUND.climateregional>
    <ComponentId MimiFUND.ocean>
    <ComponentId MimiFUND.impactagriculture>
    <ComponentId MimiFUND.impactbiodiversity>
    <ComponentId MimiFUND.impactcardiovascularrespiratory>
    <ComponentId MimiFUND.impactcooling>
    <ComponentId MimiFUND.impactdiarrhoea>
    <ComponentId MimiFUND.impactextratropicalstorms>
    <ComponentId MimiFUND.impactforests>
    <ComponentId MimiFUND.impactheating>
    <ComponentId MimiFUND.impactvectorbornediseases>
    <ComponentId MimiFUND.impacttropicalstorms>
    <ComponentId MimiFUND.vslvmorb>
    <ComponentId MimiFUND.impactdeathmorbidity>
    <ComponentId MimiFUND.impactwaterresources>
    <ComponentId MimiFUND.impactsealevelrise>
    <ComponentId MimiFUND.impactaggregation>
  Internal Connections:
    Mimi.InternalParameterConnection(:impactsealevelrise, :landloss, :geography, :landloss, false, nothing, 0)
    Mimi.InternalParameterConnection(:scenariouncertainty, :pgrowth, :population, :pgrowth, false, nothing, 0)
    Mimi.InternalParameterConnection(:impactsealevelrise, :enter, :population, :enter, false, nothing, 0)
    Mimi.InternalParameterConnection(:impactsealevelrise, :leave, :population, :leave, false, nothing, 0)
    Mimi.InternalParameterConnection(:impactdeathmorbidity, :dead, :population, :dead, false, nothing, 0)
    Mimi.InternalParameterConnection(:geography, :area, :socioeconomic, :area, false, nothing, 0)
    Mimi.InternalParameterConnection(:population, :globalpopulation, :socioeconomic, :globalpopulation, false, nothing, 0)
    Mimi.InternalParameterConnection(:population, :populationin1, :socioeconomic, :populationin1, false, nothing, 0)
    Mimi.InternalParameterConnection(:population, :population, :socioeconomic, :population, false, nothing, 0)
    Mimi.InternalParameterConnection(:scenariouncertainty, :pgrowth, :socioeconomic, :pgrowth, false, nothing, 0)
    Mimi.InternalParameterConnection(:scenariouncertainty, :ypcgrowth, :socioeconomic, :ypcgrowth, false, nothing, 0)
    Mimi.InternalParameterConnection(:impactaggregation, :eloss, :socioeconomic, :eloss, false, nothing, 0)
    Mimi.InternalParameterConnection(:impactaggregation, :sloss, :socioeconomic, :sloss, false, nothing, 0)
    Mimi.InternalParameterConnection(:emissions, :mitigationcost, :socioeconomic, :mitigationcost, false, nothing, 0)
    Mimi.InternalParameterConnection(:socioeconomic, :income, :emissions, :income, false, nothing, 0)
    Mimi.InternalParameterConnection(:population, :population, :emissions, :population, false, nothing, 0)
    Mimi.InternalParameterConnection(:scenariouncertainty, :forestemm, :emissions, :forestemm, false, nothing, 0)
    Mimi.InternalParameterConnection(:scenariouncertainty, :aeei, :emissions, :aeei, false, nothing, 0)
    Mimi.InternalParameterConnection(:scenariouncertainty, :acei, :emissions, :acei, false, nothing, 0)
    Mimi.InternalParameterConnection(:scenariouncertainty, :ypcgrowth, :emissions, :ypcgrowth, false, nothing, 0)
    Mimi.InternalParameterConnection(:emissions, :mco2, :climateco2cycle, :mco2, false, nothing, 0)
    Mimi.InternalParameterConnection(:emissions, :globch4, :climatech4cycle, :globch4, false, nothing, 0)
    Mimi.InternalParameterConnection(:emissions, :globn2o, :climaten2ocycle, :globn2o, false, nothing, 0)
    Mimi.InternalParameterConnection(:climatedynamics, :temp, :climateco2cycle, :temp, false, nothing, 0)
    Mimi.InternalParameterConnection(:emissions, :globsf6, :climatesf6cycle, :globsf6, false, nothing, 0)
    Mimi.InternalParameterConnection(:climateco2cycle, :acco2, :climateforcing, :acco2, false, nothing, 0)
    Mimi.InternalParameterConnection(:climatech4cycle, :acch4, :climateforcing, :acch4, false, nothing, 0)
    Mimi.InternalParameterConnection(:climaten2ocycle, :acn2o, :climateforcing, :acn2o, false, nothing, 0)
    Mimi.InternalParameterConnection(:climatesf6cycle, :acsf6, :climateforcing, :acsf6, false, nothing, 0)
    Mimi.InternalParameterConnection(:climateforcing, :radforc, :climatedynamics, :radforc, false, nothing, 0)
    Mimi.InternalParameterConnection(:climatedynamics, :temp, :climateregional, :inputtemp, false, nothing, 0)
    Mimi.InternalParameterConnection(:climatedynamics, :temp, :biodiversity, :temp, false, nothing, 0)
    Mimi.InternalParameterConnection(:climatedynamics, :temp, :ocean, :temp, false, nothing, 0)
    Mimi.InternalParameterConnection(:population, :population, :impactagriculture, :population, false, nothing, 0)
    Mimi.InternalParameterConnection(:socioeconomic, :income, :impactagriculture, :income, false, nothing, 0)
    Mimi.InternalParameterConnection(:climateregional, :temp, :impactagriculture, :temp, false, nothing, 0)
    Mimi.InternalParameterConnection(:climateco2cycle, :acco2, :impactagriculture, :acco2, false, nothing, 0)
    Mimi.InternalParameterConnection(:climateregional, :temp, :impactbiodiversity, :temp, false, nothing, 0)
    Mimi.InternalParameterConnection(:biodiversity, :nospecies, :impactbiodiversity, :nospecies, false, nothing, 0)
    Mimi.InternalParameterConnection(:socioeconomic, :income, :impactbiodiversity, :income, false, nothing, 0)
    Mimi.InternalParameterConnection(:population, :population, :impactbiodiversity, :population, false, nothing, 0)
    Mimi.InternalParameterConnection(:population, :population, :impactcardiovascularrespiratory, :population, false, nothing, 0)
    Mimi.InternalParameterConnection(:climateregional, :temp, :impactcardiovascularrespiratory, :temp, false, nothing, 0)
    Mimi.InternalParameterConnection(:socioeconomic, :plus, :impactcardiovascularrespiratory, :plus, false, nothing, 0)
    Mimi.InternalParameterConnection(:socioeconomic, :urbpop, :impactcardiovascularrespiratory, :urbpop, false, nothing, 0)
    Mimi.InternalParameterConnection(:population, :population, :impactcooling, :population, false, nothing, 0)
    Mimi.InternalParameterConnection(:socioeconomic, :income, :impactcooling, :income, false, nothing, 0)
    Mimi.InternalParameterConnection(:climateregional, :temp, :impactcooling, :temp, false, nothing, 0)
    Mimi.InternalParameterConnection(:emissions, :cumaeei, :impactcooling, :cumaeei, false, nothing, 0)
    Mimi.InternalParameterConnection(:population, :population, :impactdiarrhoea, :population, false, nothing, 0)
    Mimi.InternalParameterConnection(:socioeconomic, :income, :impactdiarrhoea, :income, false, nothing, 0)
    Mimi.InternalParameterConnection(:climateregional, :regtmp, :impactdiarrhoea, :regtmp, false, nothing, 0)
    Mimi.InternalParameterConnection(:population, :population, :impactextratropicalstorms, :population, false, nothing, 0)
    Mimi.InternalParameterConnection(:socioeconomic, :income, :impactextratropicalstorms, :income, false, nothing, 0)
    Mimi.InternalParameterConnection(:climateco2cycle, :acco2, :impactextratropicalstorms, :acco2, false, nothing, 0)
    Mimi.InternalParameterConnection(:population, :population, :impactforests, :population, false, nothing, 0)
    Mimi.InternalParameterConnection(:socioeconomic, :income, :impactforests, :income, false, nothing, 0)
    Mimi.InternalParameterConnection(:climateregional, :temp, :impactforests, :temp, false, nothing, 0)
    Mimi.InternalParameterConnection(:climateco2cycle, :acco2, :impactforests, :acco2, false, nothing, 0)
    Mimi.InternalParameterConnection(:population, :population, :impactheating, :population, false, nothing, 0)
    Mimi.InternalParameterConnection(:socioeconomic, :income, :impactheating, :income, false, nothing, 0)
    Mimi.InternalParameterConnection(:climateregional, :temp, :impactheating, :temp, false, nothing, 0)
    Mimi.InternalParameterConnection(:emissions, :cumaeei, :impactheating, :cumaeei, false, nothing, 0)
    Mimi.InternalParameterConnection(:population, :population, :impactvectorbornediseases, :population, false, nothing, 0)
    Mimi.InternalParameterConnection(:socioeconomic, :income, :impactvectorbornediseases, :income, false, nothing, 0)
    Mimi.InternalParameterConnection(:climateregional, :temp, :impactvectorbornediseases, :temp, false, nothing, 0)
    Mimi.InternalParameterConnection(:population, :population, :impacttropicalstorms, :population, false, nothing, 0)
    Mimi.InternalParameterConnection(:socioeconomic, :income, :impacttropicalstorms, :income, false, nothing, 0)
    Mimi.InternalParameterConnection(:climateregional, :regstmp, :impacttropicalstorms, :regstmp, false, nothing, 0)
    Mimi.InternalParameterConnection(:population, :population, :vslvmorb, :population, false, nothing, 0)
    Mimi.InternalParameterConnection(:socioeconomic, :income, :vslvmorb, :income, false, nothing, 0)
    Mimi.InternalParameterConnection(:vslvmorb, :vsl, :impactdeathmorbidity, :vsl, false, nothing, 0)
    Mimi.InternalParameterConnection(:vslvmorb, :vmorb, :impactdeathmorbidity, :vmorb, false, nothing, 0)
    Mimi.InternalParameterConnection(:population, :population, :impactdeathmorbidity, :population, false, nothing, 0)
    Mimi.InternalParameterConnection(:impactvectorbornediseases, :dengue, :impactdeathmorbidity, :dengue, false, nothing, 0)
    Mimi.InternalParameterConnection(:impactvectorbornediseases, :schisto, :impactdeathmorbidity, :schisto, false, nothing, 0)
    Mimi.InternalParameterConnection(:impactvectorbornediseases, :malaria, :impactdeathmorbidity, :malaria, false, nothing, 0)
    Mimi.InternalParameterConnection(:impactcardiovascularrespiratory, :cardheat, :impactdeathmorbidity, :cardheat, false, nothing, 0)
    Mimi.InternalParameterConnection(:impactcardiovascularrespiratory, :cardcold, :impactdeathmorbidity, :cardcold, false, nothing, 0)
    Mimi.InternalParameterConnection(:impactcardiovascularrespiratory, :resp, :impactdeathmorbidity, :resp, false, nothing, 0)
    Mimi.InternalParameterConnection(:impactdiarrhoea, :diadead, :impactdeathmorbidity, :diadead, false, nothing, 0)
    Mimi.InternalParameterConnection(:impacttropicalstorms, :hurrdead, :impactdeathmorbidity, :hurrdead, false, nothing, 0)
    Mimi.InternalParameterConnection(:impactextratropicalstorms, :extratropicalstormsdead, :impactdeathmorbidity, :extratropicalstormsdead, false, nothing, 0)
    Mimi.InternalParameterConnection(:impactdiarrhoea, :diasick, :impactdeathmorbidity, :diasick, false, nothing, 0)
    Mimi.InternalParameterConnection(:population, :population, :impactwaterresources, :population, false, nothing, 0)
    Mimi.InternalParameterConnection(:socioeconomic, :income, :impactwaterresources, :income, false, nothing, 0)
    Mimi.InternalParameterConnection(:climateregional, :temp, :impactwaterresources, :temp, false, nothing, 0)
    Mimi.InternalParameterConnection(:population, :population, :impactsealevelrise, :population, false, nothing, 0)
    Mimi.InternalParameterConnection(:socioeconomic, :income, :impactsealevelrise, :income, false, nothing, 0)
    Mimi.InternalParameterConnection(:ocean, :sea, :impactsealevelrise, :sea, false, nothing, 0)
    Mimi.InternalParameterConnection(:geography, :area, :impactsealevelrise, :area, false, nothing, 0)
    Mimi.InternalParameterConnection(:socioeconomic, :income, :impactaggregation, :income, false, nothing, 0)
    Mimi.InternalParameterConnection(:impactheating, :heating, :impactaggregation, :heating, false, nothing, 0)
    Mimi.InternalParameterConnection(:impactcooling, :cooling, :impactaggregation, :cooling, false, nothing, 0)
    Mimi.InternalParameterConnection(:impactagriculture, :agcost, :impactaggregation, :agcost, false, nothing, 0)
    Mimi.InternalParameterConnection(:impactbiodiversity, :species, :impactaggregation, :species, false, nothing, 0)
    Mimi.InternalParameterConnection(:impactwaterresources, :water, :impactaggregation, :water, false, nothing, 0)
    Mimi.InternalParameterConnection(:impacttropicalstorms, :hurrdam, :impactaggregation, :hurrdam, false, nothing, 0)
    Mimi.InternalParameterConnection(:impactextratropicalstorms, :extratropicalstormsdam, :impactaggregation, :extratropicalstormsdam, false, nothing, 0)
    Mimi.InternalParameterConnection(:impactforests, :forests, :impactaggregation, :forests, false, nothing, 0)
    Mimi.InternalParameterConnection(:impactsealevelrise, :drycost, :impactaggregation, :drycost, false, nothing, 0)
    Mimi.InternalParameterConnection(:impactsealevelrise, :protcost, :impactaggregation, :protcost, false, nothing, 0)
    Mimi.InternalParameterConnection(:impactsealevelrise, :entercost, :impactaggregation, :entercost, false, nothing, 0)
    Mimi.InternalParameterConnection(:impactdeathmorbidity, :deadcost, :impactaggregation, :deadcost, false, nothing, 0)
    Mimi.InternalParameterConnection(:impactdeathmorbidity, :morbcost, :impactaggregation, :morbcost, false, nothing, 0)
    Mimi.InternalParameterConnection(:impactsealevelrise, :wetcost, :impactaggregation, :wetcost, false, nothing, 0)
    Mimi.InternalParameterConnection(:impactsealevelrise, :leavecost, :impactaggregation, :leavecost, false, nothing, 0)
External Connections:
    Mimi.ExternalParameterConnection(:scenariouncertainty, :timeofuncertaintystart, :timeofuncertaintystart)
    Mimi.ExternalParameterConnection(:population, :runwithoutpopulationperturbation, :runwithoutpopulationperturbation)
    Mimi.ExternalParameterConnection(:socioeconomic, :runwithoutdamage, :runwithoutdamage)
    Mimi.ExternalParameterConnection(:socioeconomic, :consleak, :consleak)
    Mimi.ExternalParameterConnection(:socioeconomic, :plusel, :plusel)
    Mimi.ExternalParameterConnection(:socioeconomic, :savingsrate, :savingsrate)
    Mimi.ExternalParameterConnection(:emissions, :sf6gdp, :sf6gdp)
    Mimi.ExternalParameterConnection(:emissions, :sf6ypc, :sf6ypc)
    Mimi.ExternalParameterConnection(:emissions, :knowpar, :knowpar)
    Mimi.ExternalParameterConnection(:emissions, :knowgpar, :knowgpar)
    Mimi.ExternalParameterConnection(:emissions, :gwpch4, :gwpch4)
    Mimi.ExternalParameterConnection(:emissions, :gwpn2o, :gwpn2o)
    Mimi.ExternalParameterConnection(:emissions, :taxconstant, :taxconstant)
    Mimi.ExternalParameterConnection(:emissions, :taxemint, :taxemint)
    Mimi.ExternalParameterConnection(:emissions, :taxthreshold, :taxthreshold)
    Mimi.ExternalParameterConnection(:emissions, :taxdepreciation, :taxdepreciation)
    Mimi.ExternalParameterConnection(:emissions, :maxcostfall, :maxcostfall)
    Mimi.ExternalParameterConnection(:emissions, :ch4add, :ch4add)
    Mimi.ExternalParameterConnection(:emissions, :n2oadd, :n2oadd)
    Mimi.ExternalParameterConnection(:emissions, :sf6add, :sf6add)
    Mimi.ExternalParameterConnection(:climateco2cycle, :lifeco1, :lifeco1)
    Mimi.ExternalParameterConnection(:climateco2cycle, :lifeco2, :lifeco2)
    Mimi.ExternalParameterConnection(:climateco2cycle, :lifeco3, :lifeco3)
    Mimi.ExternalParameterConnection(:climateco2cycle, :lifeco4, :lifeco4)
    Mimi.ExternalParameterConnection(:climateco2cycle, :lifeco5, :lifeco5)
    Mimi.ExternalParameterConnection(:climateco2cycle, :co2frac1, :co2frac1)
    Mimi.ExternalParameterConnection(:climateco2cycle, :co2frac2, :co2frac2)
    Mimi.ExternalParameterConnection(:climateco2cycle, :co2frac3, :co2frac3)
    Mimi.ExternalParameterConnection(:climateco2cycle, :co2frac4, :co2frac4)
    Mimi.ExternalParameterConnection(:climateco2cycle, :co2frac5, :co2frac5)
    Mimi.ExternalParameterConnection(:climateco2cycle, :terrco2sens, :terrco2sens)
    Mimi.ExternalParameterConnection(:climateco2cycle, :terrco2stock0, :terrco2stock0)
    Mimi.ExternalParameterConnection(:climatech4cycle, :lifech4, :lifech4)
    Mimi.ExternalParameterConnection(:climatech4cycle, :ch4pre, :ch4pre)
    Mimi.ExternalParameterConnection(:climaten2ocycle, :lifen2o, :lifen2o)
    Mimi.ExternalParameterConnection(:climaten2ocycle, :n2opre, :n2opre)
    Mimi.ExternalParameterConnection(:climatesf6cycle, :sf6pre, :sf6pre)
    Mimi.ExternalParameterConnection(:climatesf6cycle, :lifesf6, :lifesf6)
    Mimi.ExternalParameterConnection(:climateforcing, :co2pre, :co2pre)
    Mimi.ExternalParameterConnection(:climateforcing, :ch4pre, :ch4pre)
    Mimi.ExternalParameterConnection(:climateforcing, :ch4ind, :ch4ind)
    Mimi.ExternalParameterConnection(:climateforcing, :n2opre, :n2opre)
    Mimi.ExternalParameterConnection(:climateforcing, :sf6pre, :sf6pre)
    Mimi.ExternalParameterConnection(:climatedynamics, :climatesensitivity, :climatesensitivity)
    Mimi.ExternalParameterConnection(:biodiversity, :bioloss, :bioloss)
    Mimi.ExternalParameterConnection(:biodiversity, :biosens, :biosens)
    Mimi.ExternalParameterConnection(:biodiversity, :dbsta, :dbsta)
    Mimi.ExternalParameterConnection(:biodiversity, :nospecbase, :nospecbase)
    Mimi.ExternalParameterConnection(:ocean, :lifesea, :lifesea)
    Mimi.ExternalParameterConnection(:ocean, :seas, :seas)
    Mimi.ExternalParameterConnection(:impactagriculture, :agel, :agel)
    Mimi.ExternalParameterConnection(:impactagriculture, :agnl, :agnl)
    Mimi.ExternalParameterConnection(:impactagriculture, :co2pre, :co2pre)
    Mimi.ExternalParameterConnection(:impactbiodiversity, :nospecbase, :nospecbase)
    Mimi.ExternalParameterConnection(:impactbiodiversity, :bioshare, :bioshare)
    Mimi.ExternalParameterConnection(:impactbiodiversity, :spbm, :spbm)
    Mimi.ExternalParameterConnection(:impactbiodiversity, :valbase, :valbase)
    Mimi.ExternalParameterConnection(:impactbiodiversity, :dbsta, :dbsta)
    Mimi.ExternalParameterConnection(:impactcardiovascularrespiratory, :cvlin, :cvlin)
    Mimi.ExternalParameterConnection(:impactcardiovascularrespiratory, :rlin, :rlin)
    Mimi.ExternalParameterConnection(:impactcardiovascularrespiratory, :maxcardvasc, :maxcardvasc)
    Mimi.ExternalParameterConnection(:impactcooling, :ceel, :ceel)
    Mimi.ExternalParameterConnection(:impactcooling, :cenl, :cenl)
    Mimi.ExternalParameterConnection(:impactdiarrhoea, :diamortel, :diamortel)
    Mimi.ExternalParameterConnection(:impactdiarrhoea, :diamortnl, :diamortnl)
    Mimi.ExternalParameterConnection(:impactdiarrhoea, :diayldel, :diayldel)
    Mimi.ExternalParameterConnection(:impactdiarrhoea, :diayldnl, :diayldnl)
    Mimi.ExternalParameterConnection(:impactextratropicalstorms, :extratropicalstormsdamel, :extratropicalstormsdamel)
    Mimi.ExternalParameterConnection(:impactextratropicalstorms, :extratropicalstormsdeadel, :extratropicalstormsdeadel)
    Mimi.ExternalParameterConnection(:impactextratropicalstorms, :extratropicalstormsnl, :extratropicalstormsnl)
    Mimi.ExternalParameterConnection(:impactextratropicalstorms, :co2pre, :co2pre)
    Mimi.ExternalParameterConnection(:impactforests, :forel, :forel)
    Mimi.ExternalParameterConnection(:impactforests, :fornl, :fornl)
    Mimi.ExternalParameterConnection(:impactforests, :co2pre, :co2pre)
    Mimi.ExternalParameterConnection(:impactforests, :forco2, :forco2)
    Mimi.ExternalParameterConnection(:impactheating, :heel, :heel)
    Mimi.ExternalParameterConnection(:impactheating, :henl, :henl)
    Mimi.ExternalParameterConnection(:impactvectorbornediseases, :dfnl, :dfnl)
    Mimi.ExternalParameterConnection(:impactvectorbornediseases, :vbel, :vbel)
    Mimi.ExternalParameterConnection(:impactvectorbornediseases, :smnl, :smnl)
    Mimi.ExternalParameterConnection(:impactvectorbornediseases, :malnl, :malnl)
    Mimi.ExternalParameterConnection(:impacttropicalstorms, :hurrdamel, :hurrdamel)
    Mimi.ExternalParameterConnection(:impacttropicalstorms, :hurrnl, :hurrnl)
    Mimi.ExternalParameterConnection(:impacttropicalstorms, :hurrpar, :hurrpar)
    Mimi.ExternalParameterConnection(:impacttropicalstorms, :hurrdeadel, :hurrdeadel)
    Mimi.ExternalParameterConnection(:vslvmorb, :vslbm, :vslbm)
    Mimi.ExternalParameterConnection(:vslvmorb, :vslel, :vslel)
    Mimi.ExternalParameterConnection(:vslvmorb, :vmorbbm, :vmorbbm)
    Mimi.ExternalParameterConnection(:vslvmorb, :vmorbel, :vmorbel)
    Mimi.ExternalParameterConnection(:vslvmorb, :vslypc0, :vslypc0)
    Mimi.ExternalParameterConnection(:vslvmorb, :vmorbypc0, :vmorbypc0)
    Mimi.ExternalParameterConnection(:impactwaterresources, :watechrate, :watechrate)
    Mimi.ExternalParameterConnection(:impactwaterresources, :wrel, :wrel)
    Mimi.ExternalParameterConnection(:impactwaterresources, :wrnl, :wrnl)
    Mimi.ExternalParameterConnection(:impactwaterresources, :wrpl, :wrpl)
    Mimi.ExternalParameterConnection(:impactsealevelrise, :incdens, :incdens)
    Mimi.ExternalParameterConnection(:impactsealevelrise, :emcst, :emcst)
    Mimi.ExternalParameterConnection(:impactsealevelrise, :immcst, :immcst)
    Mimi.ExternalParameterConnection(:impactsealevelrise, :dvydl, :dvydl)
    Mimi.ExternalParameterConnection(:impactsealevelrise, :wvel, :wvel)
    Mimi.ExternalParameterConnection(:impactsealevelrise, :wvbm, :wvbm)
    Mimi.ExternalParameterConnection(:impactsealevelrise, :slrwvpopdens0, :slrwvpopdens0)
    Mimi.ExternalParameterConnection(:impactsealevelrise, :wvpdl, :wvpdl)
    Mimi.ExternalParameterConnection(:impactsealevelrise, :wvsl, :wvsl)
    Mimi.ExternalParameterConnection(:impactsealevelrise, :dvbm, :dvbm)
    Mimi.ExternalParameterConnection(:impactsealevelrise, :slrwvypc0, :slrwvypc0)
    Mimi.ExternalParameterConnection(:scenariouncertainty, :scenpgrowth, :scenpgrowth)
    Mimi.ExternalParameterConnection(:scenariouncertainty, :scenypcgrowth, :scenypcgrowth)
    Mimi.ExternalParameterConnection(:scenariouncertainty, :scenaeei, :scenaeei)
    Mimi.ExternalParameterConnection(:scenariouncertainty, :scenacei, :scenacei)
    Mimi.ExternalParameterConnection(:scenariouncertainty, :scenforestemm, :scenforestemm)
    Mimi.ExternalParameterConnection(:scenariouncertainty, :ecgradd, :ecgradd)
    Mimi.ExternalParameterConnection(:scenariouncertainty, :pgadd, :pgadd)
    Mimi.ExternalParameterConnection(:scenariouncertainty, :aeeiadd, :aeeiadd)
    Mimi.ExternalParameterConnection(:scenariouncertainty, :aceiadd, :aceiadd)
    Mimi.ExternalParameterConnection(:scenariouncertainty, :foremadd, :foremadd)
    Mimi.ExternalParameterConnection(:population, :pop0, :pop0)
    Mimi.ExternalParameterConnection(:geography, :area0, :area0)
    Mimi.ExternalParameterConnection(:socioeconomic, :plus90, :plus90)
    Mimi.ExternalParameterConnection(:socioeconomic, :gdp90, :gdp90)
    Mimi.ExternalParameterConnection(:socioeconomic, :pop90, :pop90)
    Mimi.ExternalParameterConnection(:socioeconomic, :urbcorr, :urbcorr)
    Mimi.ExternalParameterConnection(:socioeconomic, :gdp0, :gdp0)
    Mimi.ExternalParameterConnection(:emissions, :taxmp, :taxmp)
    Mimi.ExternalParameterConnection(:emissions, :sf60, :sf60)
    Mimi.ExternalParameterConnection(:emissions, :gdp90, :gdp90)
    Mimi.ExternalParameterConnection(:emissions, :pop90, :pop90)
    Mimi.ExternalParameterConnection(:emissions, :ch4par1, :ch4par1)
    Mimi.ExternalParameterConnection(:emissions, :ch4par2, :ch4par2)
    Mimi.ExternalParameterConnection(:emissions, :n2opar1, :n2opar1)
    Mimi.ExternalParameterConnection(:emissions, :n2opar2, :n2opar2)
    Mimi.ExternalParameterConnection(:emissions, :emissint0, :emissint0)
    Mimi.ExternalParameterConnection(:emissions, :ch4em, :ch4em)
    Mimi.ExternalParameterConnection(:emissions, :n2oem, :n2oem)
    Mimi.ExternalParameterConnection(:emissions, :currtax, :currtax)
    Mimi.ExternalParameterConnection(:emissions, :currtaxch4, :currtaxch4)
    Mimi.ExternalParameterConnection(:emissions, :currtaxn2o, :currtaxn2o)
    Mimi.ExternalParameterConnection(:climateco2cycle, :cbox10, :cbox10)
    Mimi.ExternalParameterConnection(:climateco2cycle, :cbox20, :cbox20)
    Mimi.ExternalParameterConnection(:climateco2cycle, :cbox30, :cbox30)
    Mimi.ExternalParameterConnection(:climateco2cycle, :cbox40, :cbox40)
    Mimi.ExternalParameterConnection(:climateco2cycle, :cbox50, :cbox50)
    Mimi.ExternalParameterConnection(:climateforcing, :rfso2, :rfso2)
    Mimi.ExternalParameterConnection(:climatedynamics, :lifetempconst, :lifetempconst)
    Mimi.ExternalParameterConnection(:climatedynamics, :lifetemplin, :lifetemplin)
    Mimi.ExternalParameterConnection(:climatedynamics, :lifetempqd, :lifetempqd)
    Mimi.ExternalParameterConnection(:climateregional, :bregtmp, :bregtmp)
    Mimi.ExternalParameterConnection(:climateregional, :bregstmp, :bregstmp)
    Mimi.ExternalParameterConnection(:climateregional, :scentemp, :scentemp)
    Mimi.ExternalParameterConnection(:impactagriculture, :gdp90, :gdp90)
    Mimi.ExternalParameterConnection(:impactagriculture, :pop90, :pop90)
    Mimi.ExternalParameterConnection(:impactagriculture, :agrish0, :agrish0)
    Mimi.ExternalParameterConnection(:impactagriculture, :agrbm, :agrbm)
    Mimi.ExternalParameterConnection(:impactagriculture, :agtime, :agtime)
    Mimi.ExternalParameterConnection(:impactagriculture, :aglparl, :aglparl)
    Mimi.ExternalParameterConnection(:impactagriculture, :aglparq, :aglparq)
    Mimi.ExternalParameterConnection(:impactagriculture, :agcbm, :agcbm)
    Mimi.ExternalParameterConnection(:impactbiodiversity, :valinc, :valinc)
    Mimi.ExternalParameterConnection(:impactcardiovascularrespiratory, :cardvasc90, :cardvasc90)
    Mimi.ExternalParameterConnection(:impactcardiovascularrespiratory, :plus90, :plus90)
    Mimi.ExternalParameterConnection(:impactcardiovascularrespiratory, :resp90, :resp90)
    Mimi.ExternalParameterConnection(:impactcardiovascularrespiratory, :chplbm, :chplbm)
    Mimi.ExternalParameterConnection(:impactcardiovascularrespiratory, :chmlbm, :chmlbm)
    Mimi.ExternalParameterConnection(:impactcardiovascularrespiratory, :chpqbm, :chpqbm)
    Mimi.ExternalParameterConnection(:impactcardiovascularrespiratory, :chmqbm, :chmqbm)
    Mimi.ExternalParameterConnection(:impactcardiovascularrespiratory, :rlbm, :rlbm)
    Mimi.ExternalParameterConnection(:impactcardiovascularrespiratory, :rqbm, :rqbm)
    Mimi.ExternalParameterConnection(:impactcardiovascularrespiratory, :ccplbm, :ccplbm)
    Mimi.ExternalParameterConnection(:impactcardiovascularrespiratory, :ccmlbm, :ccmlbm)
    Mimi.ExternalParameterConnection(:impactcardiovascularrespiratory, :ccpqbm, :ccpqbm)
    Mimi.ExternalParameterConnection(:impactcardiovascularrespiratory, :ccmqbm, :ccmqbm)
    Mimi.ExternalParameterConnection(:impactcooling, :cebm, :cebm)
    Mimi.ExternalParameterConnection(:impactcooling, :gdp90, :gdp90)
    Mimi.ExternalParameterConnection(:impactcooling, :pop90, :pop90)
    Mimi.ExternalParameterConnection(:impactdiarrhoea, :diamort, :diamort)
    Mimi.ExternalParameterConnection(:impactdiarrhoea, :diayld, :diayld)
    Mimi.ExternalParameterConnection(:impactdiarrhoea, :gdp90, :gdp90)
    Mimi.ExternalParameterConnection(:impactdiarrhoea, :pop90, :pop90)
    Mimi.ExternalParameterConnection(:impactdiarrhoea, :temp90, :temp90)
    Mimi.ExternalParameterConnection(:impactdiarrhoea, :bregtmp, :bregtmp)
    Mimi.ExternalParameterConnection(:impactextratropicalstorms, :extratropicalstormsbasedam, :extratropicalstormsbasedam)
    Mimi.ExternalParameterConnection(:impactextratropicalstorms, :extratropicalstormspar, :extratropicalstormspar)
    Mimi.ExternalParameterConnection(:impactextratropicalstorms, :extratropicalstormsbasedead, :extratropicalstormsbasedead)
    Mimi.ExternalParameterConnection(:impactextratropicalstorms, :gdp90, :gdp90)
    Mimi.ExternalParameterConnection(:impactextratropicalstorms, :pop90, :pop90)
    Mimi.ExternalParameterConnection(:impactforests, :forbm, :forbm)
    Mimi.ExternalParameterConnection(:impactforests, :gdp90, :gdp90)
    Mimi.ExternalParameterConnection(:impactforests, :pop90, :pop90)
    Mimi.ExternalParameterConnection(:impactheating, :hebm, :hebm)
    Mimi.ExternalParameterConnection(:impactheating, :gdp90, :gdp90)
    Mimi.ExternalParameterConnection(:impactheating, :pop90, :pop90)
    Mimi.ExternalParameterConnection(:impactvectorbornediseases, :dfbs, :dfbs)
    Mimi.ExternalParameterConnection(:impactvectorbornediseases, :dfch, :dfch)
    Mimi.ExternalParameterConnection(:impactvectorbornediseases, :smbs, :smbs)
    Mimi.ExternalParameterConnection(:impactvectorbornediseases, :smch, :smch)
    Mimi.ExternalParameterConnection(:impactvectorbornediseases, :malbs, :malbs)
    Mimi.ExternalParameterConnection(:impactvectorbornediseases, :malch, :malch)
    Mimi.ExternalParameterConnection(:impactvectorbornediseases, :gdp90, :gdp90)
    Mimi.ExternalParameterConnection(:impactvectorbornediseases, :pop90, :pop90)
    Mimi.ExternalParameterConnection(:impacttropicalstorms, :hurrbasedam, :hurrbasedam)
    Mimi.ExternalParameterConnection(:impacttropicalstorms, :hurrbasedead, :hurrbasedead)
    Mimi.ExternalParameterConnection(:impacttropicalstorms, :gdp90, :gdp90)
    Mimi.ExternalParameterConnection(:impacttropicalstorms, :pop90, :pop90)
    Mimi.ExternalParameterConnection(:impactdeathmorbidity, :d2ld, :d2ld)
    Mimi.ExternalParameterConnection(:impactdeathmorbidity, :d2ls, :d2ls)
    Mimi.ExternalParameterConnection(:impactdeathmorbidity, :d2lm, :d2lm)
    Mimi.ExternalParameterConnection(:impactdeathmorbidity, :d2lc, :d2lc)
    Mimi.ExternalParameterConnection(:impactdeathmorbidity, :d2lr, :d2lr)
    Mimi.ExternalParameterConnection(:impactdeathmorbidity, :d2dd, :d2dd)
    Mimi.ExternalParameterConnection(:impactdeathmorbidity, :d2ds, :d2ds)
    Mimi.ExternalParameterConnection(:impactdeathmorbidity, :d2dm, :d2dm)
    Mimi.ExternalParameterConnection(:impactdeathmorbidity, :d2dc, :d2dc)
    Mimi.ExternalParameterConnection(:impactdeathmorbidity, :d2dr, :d2dr)
    Mimi.ExternalParameterConnection(:impactdeathmorbidity, :dead_other, :dead_other)
    Mimi.ExternalParameterConnection(:impactdeathmorbidity, :sick_other, :sick_other)
    Mimi.ExternalParameterConnection(:impactwaterresources, :wrbm, :wrbm)
    Mimi.ExternalParameterConnection(:impactwaterresources, :gdp90, :gdp90)
    Mimi.ExternalParameterConnection(:impactwaterresources, :pop90, :pop90)
    Mimi.ExternalParameterConnection(:impactsealevelrise, :pc, :pc)
    Mimi.ExternalParameterConnection(:impactsealevelrise, :slrprtp, :slrprtp)
    Mimi.ExternalParameterConnection(:impactsealevelrise, :wmbm, :wmbm)
    Mimi.ExternalParameterConnection(:impactsealevelrise, :dlbm, :dlbm)
    Mimi.ExternalParameterConnection(:impactsealevelrise, :drylandlossparam, :drylandlossparam)
    Mimi.ExternalParameterConnection(:impactsealevelrise, :wlbm, :wlbm)
    Mimi.ExternalParameterConnection(:impactsealevelrise, :coastpd, :coastpd)
    Mimi.ExternalParameterConnection(:impactsealevelrise, :wetmax, :wetmax)
    Mimi.ExternalParameterConnection(:impactsealevelrise, :wetland90, :wetland90)
    Mimi.ExternalParameterConnection(:impactsealevelrise, :maxlandloss, :maxlandloss)
    Mimi.ExternalParameterConnection(:impactsealevelrise, :migrate, :migrate)
    Mimi.ExternalParameterConnection(:impactaggregation, :eloss_other, :eloss_other)
    Mimi.ExternalParameterConnection(:impactaggregation, :sloss_other, :sloss_other)
  Backups: Symbol[]
  Number type: Float64
  Built: false

@lrennels
Copy link
Collaborator

On one hand it is a lot of text, but it seems that unless we remove some of the (in my opinion) more vital and interesting information on connections and settings, we will have to expect the show method to scale linearly with number of parameters/model complexity, which seems fine as long as its displayed as cleanly as possible.

@rjplevin
Copy link
Collaborator Author

Yeah. I agree that the old way was undecipherable (the term "wall of text" is apparently subjective. ;~)
I think there's still a lot of text but it's now legible. When text aligns like this, you can scan and grasp a lot of it effortlessly. I sometimes align sets of similar statements in code, too, since it highlights both the similarities and differences.

@rjplevin
Copy link
Collaborator Author

Though, I'll add that the effect is not nearly so nice with text wrapping!

@lrennels
Copy link
Collaborator

This is a far more organized and well-structured "wall" ... instead of a big old undecipherable "block"

@davidanthoff
Copy link
Collaborator

Hm, I'm tempted to think that maybe the default should only show the components? I think having a default that is relatively short is useful. Would be nice to also have the option to get the full output, because agreed it is very useful. It is not clear to me what a canonical API design in julia is for this situation.

I think what would be good for the workshop is if showing a model in a Jupyter notebook doesn't take up a whole screen...

@rjplevin
Copy link
Collaborator Author

It looks like the 3-arg form of show is what we want:
Base.show(io::IO, ::MIME"text/plain", m::Model). This is documented here: https://docs.julialang.org/en/v1/manual/types/index.html

The version I'm about to push does the following. For display of a result in the REPL:

julia> TestComponents.my_model
Mimi.Model
  Module: Mimi
  Components:
    <ComponentId TestComponents.testcomp1>
    <ComponentId TestComponents.testcomp2>
    <ComponentId TestComponents.testcomp3>
    <ComponentId TestComponents.testcomp3>
  Built: false

When calling print:

julia> print(TestComponents.my_model)
Mimi.Model
  Module: Mimi
  Components:
    <ComponentId TestComponents.testcomp1>
    <ComponentId TestComponents.testcomp2>
    <ComponentId TestComponents.testcomp3>
    <ComponentId TestComponents.testcomp3>
  Dimensions:
    5 => Mimi.Dimension{Int64}(OrderedCollections.OrderedDict(1=>1,2=>2,3=>3,4=>4,5=>5))
    time => Mimi.Dimension{Int64}(OrderedCollections.OrderedDict(2015=>1,2020=>2,2025=>3,2030=>4,2035=>5,2040=>6,2045=>7,2050=>8,2055=>9,2060=>10,2065=>11,2070=>12,2075=>13,2080=>14,2085=>15,2090=>16,2095=>17,2100=>18,2105=>19,2110=>20))
  Internal Connections:
  External Connections:
  Backups: Symbol[]
  Number type: Float64
  Built: false

I'm not sure print method is ideal; the examples tend to show an even more truncated version, e.g., for printing arrays of Models. This raises at least two questions:

  1. What would an "even more compact" display look like for models?

  2. Should we have a method that prints more information (my earlier attempt), and if so, need it be tied to the show API, or perhaps have a show_long(m::Model)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants